Verwirrt über die XIP-Funktion (eXecute In Place) von QSPI FLASH

Es gibt viele NOR-QSPI-FLASH-Chips, die XIP (eXecute In Place) unterstützen. In diesem Modus kann die eingebettete CPU (oder MCU) die im Flash gespeicherten Codes direkt ausführen. Aber wie wir wissen, kann der qspi-Flash nur 4-Bit-Daten pro Zyklus ausgeben (im DDR-Modus 8-Bit-Daten pro Zyklus), während viele MCUs, wie z. B. die ARM Cortex-M-Serie, einen 32-Bit-Befehl pro Zyklus benötigen Zyklus. Die MCU muss also mindestens 8 Zyklen warten, um eine gültige Anweisung zu erhalten, was sehr langsam erscheint. Außerdem liegt die maximale Frequenz eines Nor-QSPI-Flash-Chips oft unter 130 MHz und die Frequenz einer MCU kann 200 MHz oder mehr erreichen, was eine längere Verzögerung für die CPU bedeutet, um eine gültige Anweisung von einem externen Flash zu erhalten.

Obwohl wir einige Bootloader-Codes programmieren können, die die Benutzeranwendungscodes und -daten nach dem Einschalten in das Befehls-/Daten-RAM kopieren, würde dieser Vorgang meiner Meinung nach viel Zeit kosten. Wenn die RAMs in der MCU nicht groß genug sind, um die Codes und Daten im Flash zu speichern, wird dies außerdem die Dinge erschweren. Ich weiß, dass wir I/D-Cache in der MCU hinzufügen könnten, aber das bedeutet auch mehr Komplexität. Zum Beispiel hat STM32F479XX keinen Cache, aber eine QSPI-Schnittstelle, die XIP unterstützt.

Ich weiß nicht, ob mein Verständnis falsch ist, aber ich konnte wirklich nicht viele Details über XIP finden. Die technischen Referenzhandbücher von STM32Fxxx sagen nur, dass sie eine QSPI-Schnittstelle haben und XIP unterstützen, aber sie zeigen keine Details. Daher denke ich, dass wir auch einen sehr komplizierten QSPI-Controller in der MCU implementieren müssen, um XIP zu unterstützen.

Kann mir jemand ein paar Antworten auf diese Frage geben? Gibt es Bücher oder Websites, die erklären, wie man eine QSPI-Schnittstelle entwirft, die XIP unterstützt?

Antworten (1)

Sie sind auf dem richtigen Weg, XIP ist im Allgemeinen langsam, weshalb es wirklich nur für Bootloader der ersten Stufe und Geräte mit starker RAM-Beschränkung verwendet wird.

Der große Vorteil des Bootens vom Flash besteht darin, dass eine schreibgeschützte Flash-Schnittstelle nur sehr wenige Konfigurationsparameter hat, sodass der Controller mit einer einfachen konservativen Flash-Schnittstelle starten kann und die RAM-Parameter im Konfigurations-Flash in Form von Anweisungen gespeichert werden Richten Sie die Register des RAM-Controllers ein.

Dies gibt den Platinendesignern ein Höchstmaß an Flexibilität, da die MCU-Hardware keine Annahmen über den Flash-Chip hinaus trifft.

Wie viel Code Sie tatsächlich von Flash ausführen oder zuerst in RAM kopieren, ist ein Kompromiss, der davon abhängt, wie oft der Code ausgeführt wird, wie viel davon in Caches passt und wie vorhersehbar die Ausführungszeit sein muss.

In CPUs mit Caches würden normalerweise ganze Cache-Zeilen auf einmal aus dem Flash geladen, was auch das Problem der Busbreite gut löst.

Ich finde, dass in STM32FXX sogar das Lesen von Daten aus dem eingebetteten Flash-Speicher mehrere Wartezustände (LATENZ) benötigt, wenn der HCLK hoch genug ist. Wenn ich einige wirklich große Anwendungen ausführen möchte, die auch Echtzeitleistung benötigen, wie z muss eine MCU mit I/D$ wählen?
@HYF, der Cache tauscht Geschwindigkeit gegen Vorhersagbarkeit, daher ist dies für eine Echtzeitanwendung ein No-Go. Ich würde die Echtzeit-Bits wie Interrupt-Handler in den RAM packen, und der Rest der Anwendung läuft immer noch vom Flash und bereitet nur den Entscheidungsbaum für den Echtzeit-Teil vor.
Der Cache sorgt dafür, dass die durchschnittliche Leistung hoch ist, aber die Echtzeitleistung leidet. Die Direktzugriffsleistung von XIP liegt bei etwa 1 us. Diese Direktzugriffszeit ist tatsächlich vergleichbar mit einigen DDR-SDRAM-Controllern. Die Vorteile sind also unbegrenzter Codespace, gute Durchschnittsleistung, und der MCU-Anbieter kann einen kostengünstigeren Siliziumprozess verwenden, da er keinen On-Chip-Flash benötigt. Nachteil ist die reduzierte Echtzeitleistung.