Ist es möglich, dass ein Einzelchip-QSPI-NOR-Flash-Modul gleichzeitig für XiP und ein Dateisystem verwendet wird? Mit gleichzeitig meine ich, dass eine von XiP ausgeführte Funktion auf Daten an anderer Stelle auf XiP zugreift.
Die MCU ist in diesem Fall ein NXP Kinetis K8x (ARM Cortex M4), der über ein integriertes QSPI-Peripheriegerät verfügt. Das Symptom ist:
Kann jemand erklären, was los ist? Wird ein Dual-Die-Flash-Modul dieses Problem lösen? Sollte ich mir die QSPI-Peripherieeinstellungen ansehen?
===
Mehr Info:
So verwenden Sie Quad-SPI auf der KL8x-Serie: https://www.nxp.com/docs/en/application-note/AN5244.pdf
Ein Dual-Die-Flash-Modul wird nichts lösen, da beide Chips einen QSPI-Controller auf der MCU mit einem Satz Puffer usw. teilen.
Wenn ich speicherabgebildete Lesevorgänge für das Dateisystem verwende, wird natürlich derselbe interne Mechanismus verwendet, um sowohl Anweisungen als auch Daten abzurufen und zu puffern. Und das System hängt nicht.
Alles, was ich tun muss, ist, die Schreibfunktionen des Dateisystems zu isolieren und sicherzustellen, dass diese vom internen Flash oder als RAM-Funktionen ausgeführt werden.
Ich weiß nichts speziell über das K8x, aber Sie haben ein allgemeines konzeptionelles Problem: Sie haben zwei Entitäten, die um den Zugriff auf die QSPI-Schnittstelle konkurrieren, den Befehlsdecoder und den Dateisystemcode.
Wenn Sie garantieren könnten, dass sie niemals gleichzeitig Zugriff benötigen, gäbe es kein Problem, aber Tatsache ist, dass der Befehlsdecoder jederzeit einen XIP-Abruf erfordern kann, selbst wenn der Cache verwendet wird. Wenn diese Anforderung während eines Dateisystemzugriffs auftritt, wird das System gesperrt.
Das Ändern von Einstellungen oder das Wechseln des externen Blitzmoduls hilft nicht. Der Engpass ist der QSPI-Controller selbst.
Wie Chris vorgeschlagen hat, besteht die Lösung darin, sicherzustellen, dass der gesamte Code, der für den Zugriff auf das Dateisystem erforderlich ist, NICHT direkt vom externen Flash-Modul ausgeführt wird. Kopieren Sie stattdessen den Dateisystemtreiber und alles, wovon er abhängt, in den internen Flash oder RAM (oder externen DDR-SDRAM).
Chris Stratton