Titelbild Mikrocontroller

19.3. Lesen während des Schreibens und nicht Lesen während des Schreibens

Ob die CPU das Lesen während des Schreibens unterstützt oder ob die CPU angehalten wird, während die Boot Loader Software updatet, ist davon abhängig, an welcher Adresse das Boot Loader Programm steht. Genauso, wie der Flash wie oben beschrieben mit den BOOTSZ Fuses in den Applikations und Boot Loader Bereich eingeteilt wird, wird der Flash auch in zwei feste Bereiche, nämlich den Read While Write (RWW) und den No Read While Write (NRWW) Bereich eingeteilt. Die Grenzen zwischen dem RWW und dem NRWW Bereich sind in einer der folgenden Tabellen angegeben. Der Hauptunterschied zwischen den beiden Bereichen ist der folgende:
  • Wenn eine Seite innerhalb des RWW Bereiches gelöscht oder geschrieben wird, kann der NRWW Bereich während dieser Operation gelesen werden.
  • Wenn eine Seite innerhalb des NRWW Bereiches gelöscht oder geschrieben wird, wird die CPU während dieser Operation angehalten.
Man beachte, dass die Anwendersoftware niemals Code lesen kann, der im RWW Bereich steht, während die Boot Loader Software arbeitet. Der Syntax „Read While Write Section“ bezieht sich darauf, welcher Bereich gerade programmiert (löschen oder schreiben) wird und nicht darauf, welcher Bereich gerade durch die Boot Loader Soaftware gelesen wird.

RWW Read While Write Bereich

Während die Boot Loader Software eine Seite im RWW Bereich programmiert, ist es möglich Code aus dem Flash zu lesen, allerdings nur Code, der im NRWW Bereich steht. Während einer laufenden Programmierung muss die Software sicherstellen, dass nicht aus dem RWW Bereich gelesen wird. Wenn die Software versucht, während der Programmierung Code aus dem RWW Bereich zu lesen, so gerät die Software in einen undefinierten Zustand. Um dies zu verhindern, sollten alle Interrupts gesperrt oder in den Boot Loader Bereich gelegt werden. Der Boot Loader Bereich liegt immer im NRWW Bereich. Das RWW Busy Bit (RWWSB) im Store Programm Memory Control Register (SPMCR) wird so lange als 1 gelesen, wie der RWW Bereich für das Lesen blockiert ist. Nachdem eine Programmierung abgeschlossen ist, muss das RWWSB durch die Software gelöscht werden, bevor Code aus dem RWW Bereich gelesen wird. Siehe SPMCR.

NRWW Not Read While Write Bereich

Der Code, der im NRWW Bereich liegt, kann gelesen werden, während die Software eine Seite im RWW Bereich programmiert. Wenn das Boot Loader Programm eine Seite im NRWW Bereich programmiert, wird die CPU für die Dauer des gesamten Lösch- oder Schreibvorganges angehalten.
Lesen während des Schreibens

Lesen während des Schreibens



Lesen im Vergleich zu nicht Lesen

Lesen im Vergleich zu nicht Lesen



Speicherbereiche

Speicherbereiche


Impressum