Titelbild Mikrocontroller

21.9. Flash Kommandos

Bei der Selbstprogrammierung des Flash werden die action-getriggerten Kommandos durch das Setzen des CMDEX Bits im NVM CTRLA Register gestartet. Die read-getriggerten Kommandos werden durch das Ausführen eines (E)LPM Befehls gestartet. Die write-getriggerten Kommandos werden durch den SPM Befehl gestartet. Einige der Kommandos sind durch das CCP geschützt.

Flash Kommandos

Flash Kommandos


Flash lesen
Der (E)LPM Befehl wird verwendet, um ein Byte aus dem Flash zu lesen.
1. Z-Pointer mit der Adresse laden
2. NVM command Register (NVM CMD) mit no operation laden
3. Ausführen des LPM Befehls
Das Zielregister wird dann mit dem Wert aus der Speicherzelle im Flash geladen.


Flash Seitenbuffer löschen
1. Laden des NVM CMD mit dem erase flash page buffer Kommando
2. Setzen des NVMEX Bits im NVM CTRL A. Erfordert CCP Freigabe!
Das NVM Busy Flag wird gesetzt solange die Seite gelöscht wird.


Flash Seitenbuffer laden
1. Laden des NVM CMD mit dem load flash page buffer Kommando
2. Z-Pointer mit Adresse des Wortes laden
3. Zu schreibende Bytes in R1:R0 ablegen
4. Ausführen des SPM Befehls, wenn der Buffer Ziel des Befehls ist, ist er nicht durch CCP geschützt.
Die Schritte 2 bis 4 werden wiederholt, bis der komplette Seitenbuffer voll ist. Nicht verwendete Speicherzellen werden den Wert 0xFFFF bekommen.


Flash Seite löschen
1. Laden des Z-Pointers mit der Seitenadresse, die gelöscht werden soll. Die Adresse muss im FPAGE Abschnitt des Z-Pointers stehen, die andern Bits werden ignoriert.
2. Laden des NVM CMD mit dem erase flash page Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Seite gelöscht wird.


Flash Seite schreiben
1. Laden des Z-Pointers mit der Seitenadresse, die gelöscht werden soll. Die Adresse muss im FPAGE Abschnitt des Z-Pointers stehen, die andern Bits werden ignoriert.
2. Laden des NVM CMD mit dem write flash page Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Operation ausgeführt wird.


Flash Range CRC Prüfung
1. Laden des NVM CMD mit dem flash range CRC Kommando
2. Startadresse (erstes Byte) in das NVM ADDR Register laden
3. Endadresse (letztes Byte) in das NVM DATA Register laden
4. Setzen des CMDEX Bits im NVM CTRL A. Erfordert CCP Freigabe!
Das NVM Busy Flag wird gesetzt und die CPU angehalten solange das Kommando ausgeführt wird. Die Prüfsumme steht hinterher im NVM DATA Register. Um das Kommando auszuführen müssen alle lock Bits unprogrammiert sein (keine Sperren).


Löschen des Application Bereiches (kompletter Bereich wird gelöscht)
1. Laden des Z-Pointers mit einer beliebigen Adresse im Bereich.
2. Laden des NVM CMD mit dem erase application section Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Operation ausgeführt wird. Die CPU wird während der ganzen Zeit angehalten.


Löschen einer Seite im application oder Boot loader Bereich
1. Laden des Z-Pointers mit der Seitenadresse, die gelöscht werden soll. Die Adresse muss im FPAGE Abschnitt des Z-Pointers stehen, die andern Bits werden ignoriert.
2. Laden des NVM CMD mit dem erase applicaten/boot section page Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Seite gelöscht wird.


Schreiben einer Seite im application oder Boot loader Bereich
1. Laden des Z-Pointers mit der Seitenadresse, die gelöscht werden soll. Die Adresse muss im FPAGE Abschnitt des Z-Pointers stehen, die andern Bits werden ignoriert.
2. Laden des NVM CMD mit dem write applicaten/boot section page Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Seite gelöscht wird.


Löschen und Schreiben einer Seite im application oder Boot loader Bereich
1. Laden des Z-Pointers mit der Seitenadresse, die gelöscht werden soll. Die Adresse muss im FPAGE Abschnitt des Z-Pointers stehen, die andern Bits werden ignoriert.
2. Laden des NVM CMD mit dem erase and write applicaten/boot section page Kommando
3. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt solange die Seite gelöscht wird.


Application oder Boot loader Bereich CRC Prüfung
1. Laden des NVM CMD mit dem application/boot load section CRC Kommando
2. Setzen des NVMEX Bits im NVM CTRL A. Erfordert CCP Freigabe!
Das NVM Busy Flag wird gesetzt und die CPU angehalten solange das Kommando ausgeführt wird. Die Prüfsumme steht hinterher im NVM DATA Register. Um das Kommando auszuführen müssen alle lock Bits unprogrammiert sein (keine Sperren).


Löschen User Signatur
1. Laden des NVM CMD mit dem erase user signature row Kommando
2. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt und die CPU angehalten solange das Kommando ausgeführt wird.


Schreiben User Signatur
1. Laden des NVM CMD mit dem write user signature row Kommando
2. Ausführen des SPM Befehls, dieser ist hier CCP geschützt.
Das NVM Busy Flag wird gesetzt und die CPU angehalten solange das Kommando ausgeführt wird. Der Flash Buffer wird im Anschluss an die Ausführung gelöscht.


Lesen User Signatur / Production Signatur
1. Laden des Z-Pointers mit der Byteadresse
3. Laden des NVM CMD mit dem read user signature/production row Kommando
4. Ausführen des LPM Befehls.
Es ist empfehlenswert die Interrupts während der Ausführung zu sperren.

Impressum