Die meisten ARM Cortex M-MCUs verfügen nicht über einen EEPROM-Speicher. Stattdessen können persistente Daten in denselben Flash-Speicher geschrieben werden, in dem sich auch das Programm befindet.
- Wie ist der Zustand der CPU während dieses Lösch- / Schreibvorgangs?
- Hört es auf? Hält es den normalen Betrieb aufrecht?
- Hängt das Verhalten der CPU von der verwendeten spezifischen MCU-Familie (z. B. STM32, Kinetis L) ab?
(Für einige Leute könnte dies wie eine dumme Frage aussehen, aber der PIC16 von Microchip hält die CPU während der Flash-Selbstprogrammierung für bis zu 40 ms an.)
Antworten:
Das Verhalten des Kerns hängt von der Implementierung ab. Der Flash ist nicht Bestandteil des ARM-Kerns und wird daher von jedem Anbieter anders implementiert. Normalerweise wird während des Lösch- / Schreibvorgangs eine Ausführung aus dem RAM ausgeführt, und die Ausführung sollte nicht beeinträchtigt werden.
Ich glaube, auf dem STM32 werden Lesevorgänge vom Flash-Stall ausgeführt, während Lösch- / Schreibzyklen ausgeführt werden. Dies würde dazu führen, dass die Ausführung des Kerns blockiert, bis der Vorgang abgeschlossen ist. Ich glaube, dass Sie bei einigen Flash-Konfigurationen weiterhin Flash ausführen / lesen können und es nur dann blockiert, wenn Sie auf den Teil des Flashs zugreifen, den Sie löschen / programmieren.
Ich habe andere Cortex Ms verwendet, bei denen Sie beim Ändern des Flash-Inhalts aus dem RAM ausführen müssen , da sonst ein Busfehler auftritt (und wahrscheinlich ein Systemabsturz, wenn sich Ihre Busfehler- / Hard-Fehlerbehandlungsroutinen im Flash befinden). Einige Mikros mit großen Flash-Mengen implementieren es als zwei unabhängige Flash-Arrays, die normalerweise den vollständigen Zugriff auf eine Bank ermöglichen, während sie auf der anderen arbeiten.
Sie müssen sich auf die Dokumentation Ihres spezifischen Teils beziehen, um die Einschränkungen der Ausführung beim Ändern des Flash-Inhalts zu erfahren.
quelle