Ist es notwendig, den gesamten MSP430 FLASH-Schreibcode zu schreiben, der vom RAM ausgeführt werden soll?

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.

Link zum Beispielcode?
Und wenn dies ein einmaliges Schreiben ist, schreiben Sie es einmal, um es zu flashen, und ändern Sie dann Ihren Code, um ihn nur zu lesen.
Ihr Mikro wird schneller programmiert und der Code wird schneller ausgeführt, wenn Sie in den RAM schreiben, aber es ist normalerweise nicht erforderlich, dass Sie Ihren Code dort ablegen. Code Composer verfügt über eine schöne Speicheransicht, mit der Sie erkennen können, in welchen Flash-/RAM-Sektoren Speicherplatz verfügbar ist, sodass Sie Ihren Linker ändern und Dinge entsprechend Ihren Anforderungen verschieben können.

Antworten (1)

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.

Die nützlichste Methode ist der Blockschreibmodus, der nicht vom Flash-Code aus funktioniert.
@CL. Ob der Blockschreibmodus die nützlichste Methode ist oder nicht, hängt stark von der Anwendung ab, aber ich habe einen Absatz über den Blockschreibmodus und die Einschränkung, ihn nur aus dem RAM auszuführen, hinzugefügt.