Konstanten ins Flash unter Assembler

Gast #40117
Lesenswert?

Genauer gesagt: Du mußt Dir eine .progmem-Section anlegen.

Das einfachste ist, Du machst es im C Programm und schaust Dir
an, was der Compiler dafür generiert (avr-gcc -S).  Dann weißt
Du, was Du im Aseembler schreiben mußt.  Aber eigentlich kannst
Du sie natürlich dann gleich vom Compiler anlegen lassen. ;-)
Sagt ja nicht, daß man sie deshalb nicht in einem Stück
Assemblerprogramm benutzen könnte...
Gast #40118
Lesenswert?

Mojn Markus,

beim MSP430 Assembler (IAR) füge einfach Folgendes im Code ein:
...beliebiger programmcode
jmp    Datenbereich_Ende
Datenbereich_Anfang
DW     0x1234
Datenbereich_Ende
beliebiger programmcode...

Du kannst auch die DW... Zeile einfach hinter deinen letzten Befehl im 
Programm setzen, dann sparst du den Sprung.
DW steht für 16bit Konstante (DB kann für 8bit genommen werden). 
Verwendest du 8bit Konstanten mitten im Code, achte darauf, daß es eine 
gerade Anzahl von Werten ist. Sind eine ungerade Zahl von Konstanten 
zusammen gekommen, dann füge hinter die letzte DB-Zeile eines 
Konstantenblocks folgende Zeile ein:
EVEN

Damit wird der Programmcounter wieder auf eine gültige (gerade) Adresse 
gesetzt.

Im Manual zum Assembler steht dies alles noch einmal beschrieben.


Gruß,
Claus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren