Guten Tag liebe Forumsmitglieder, ich möchte gerne bei meinem MSP430F2013 eine Datenbereich unter einer bestimmten Adresse anlegen und dort verschiedene Werte abspeichern (Flash oder ROM ist vorerst egal es geht mir nur ums Prinzip). Als Programmierumgebung verwende ich IAR und als Programmiersprache Assembler. Bisher verwende ich den DB Befehl der mir die Daten anlegt: z.B DB 0x12, 0x13, 0x14 usw. Allerdings weiß ich nicht welchen Befehl ich noch schreiben muss, dass mir die Daten unter z.B der Adresse 0400 angelgt werden. (Habe gedacht, dass es der Befehl #pragma ist, hat allerdings nicht funktioniert) Die Frage ist leider echt sehr trivial, aber ich habe leider dazu noch nichts im Forum oder sonst wo gefunden... Wäre für eine Antwort sehr dankbar! Mfg
Steht in der Compiler Anleitung. In C ist es bei IAR das '@' Zeichen mit Adresse hinten dran.
Vielen Dank für die schnelle Antwort. Allerdings hab ich in der Compiler Anleitung irgendwie nichts dazu gefunden (vll. verwende ich aber auch das falsche...) Jedoch möchte ich das ganze in Assembler schreiben und ich habe gedacht, dass es bei den MSP sowas ähnliches gibt wie bei den XC`s. Ungefähr sowas: data_s1 SECTION DATA at 0x00C10000 table1 DB "Text der frei festgelegt werden kann",0x00 data_s1 ENDS Und des für den MSP. Vielleicht bin ich aber auch damit komplett auf den Holzweg.
Wenn Du in Assembler programmierst, wär's vielleicht auch sinnvoll, im Assembler Reference Guide nachzuschauen. Unter "Segment control directives" wirst Du vielleicht fündig...
Also ich habe die Syntax gerade nicht zur Hand, aber prinzipiell kenne ich zwei Möglichkeiten: 1. Du definierst den gewünschten Bereich im Linkerscript und kannst dann im Code bequem mit dem Namen der kreierten Section arbeiten 2. Du definierst einfach einen stinknormalen Pointer und lässt ihn auf die gewünschte Adresse zeigen Ich würde mal die Codebeispiele von TI zum Umgang mit dem Flashspeicher angucken (findest Du auf der Homepage), da hats viel brauchbares darunter, was Du als Grundlage heranziehen kannst.
Also wenn ich Dich richtig verstanden habe: Beim M68xxx heißt der Befehl "origin". Dort läuft das in etwa so ab (aus dem FF, sich nicht ganz richtig):
1 | .org $xxxx |
2 | .dc.b $AF |
3 | .dc.b $FE |
4 | .dc.b "Hilfe, ich stecke im Speicher!" |
5 | //... |
fürs Ram bescheiben , mov.w R4,&0200h register ins Ram (je nach Modell!) mov.w &0F000h,R4 Memory ins Register mov.w &0F000h,&0200h Memory to Memory wenn du über einen Pointer arbeitest mus ich noch mal nachgucken . da geht nicht alles was mann so denkt mfg Erik
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.