Ich schreibe einige Geräteparameter in den nicht flüchtigen Flash-Speicher des msp430f2619-Controllers. Der Beispielcode zeigt, dass das Schreiben von Funktionen in den Flash-Speicher im Initialisierungsabschnitt in den RAM kopiert werden sollte.
Aber ich verwende diese Funktion, um in dedizierte Teile des Flash-Segments zu schreiben. (Eigentlich schreibe ich in das Informationsspeichersegment B)
Ist es also wirklich notwendig, diesen Code in den RAM zu kopieren?
Mir geht der Arbeitsspeicher aus, und indem ich diesen Speicher zum Speichern der Flash-Schreibfunktion freigebe, kann ich ihn für meine Anwendung verwenden.
Nein, es ist nicht notwendig.
Sie können auf den Informationsspeicher schreiben, während der Code mit den Schreibanweisungen vom Flash ausgeführt wird. Nicht nur der Informationsspeicher, sondern der gesamte Flash (mit Ausnahme des Codeabschnitts, der den Flash tatsächlich schreibt) kann aus dem Flash geschrieben werden.
Eigentlich geht der Flash-Controller des MSP430 ganz intelligent damit um, während er in großen Gruselsätzen sagt :
Das Lesen oder Beschreiben des Flash-Speichers während des Programmierens oder Löschens ist verboten. Wenn während des Schreibens oder Löschens eine CPU-Ausführung erforderlich ist, muss sich der auszuführende Code im RAM befinden.
Das klingt zunächst etwas einschüchternd, aber wenn Sie das ganze Kapitel durchlesen (sehr empfehlenswert), werden Sie auf Informationen stoßen, die Ihnen sagen, dass, während der Flash-Controller beschäftigt ist, ein Lesen von der CPU 0x3FFF zurückgibt, was sich herausstellt den Opcode für JUMP PC (Sprung zum Programmzähler), der die CPU nur anhält, bis der Flash-Controller mit seiner Arbeit fertig ist. (2)
Der Blockschreibmodus wird vom Flash nicht unterstützt, sodass Sie nicht die schnellsten Schreibzeiten erzielen können, wenn Sie Ihren Schreibvorgang vom Flash ausführen. Ich würde sagen, wenn Sie nur einige Kalibrierungswerte oder Seriennummern schreiben möchten, spielt es keine Rolle. Wenn Sie versuchen, Ihren eigenen Bootloader zu implementieren, um das gesamte Gerät zu flashen, sollten Sie ihn besser aus dem RAM ausführen und den Blockschreibmodus verwenden, um an Geschwindigkeit zu gewinnen.
Seien Sie nur vorsichtig mit der Löschanweisung, um tatsächlich nur das zu löschen, was Sie löschen müssen. Ich habe einmal versehentlich alle Kalibrierungsinformationen verloren, weil ich es nicht war.
Passant
Passant
RYS