Speicher für Programm festlegen: ARM7

Gast #622182
Lesenswert?

Hello again :-)

ich habe ein kleines Problem: Bisher habe ich ein paar Sachen 
geschrieben, die liefen immer ganz gut, egal, an welche Adresse ich das 
Zeug hingeladen habe (z.B. 0x202000). Das liegt wohl daran, dass nur 
relative Sprünge verwendet wurden.

Jetzt würde mich doch brennend interessieren, wer dafür verantwortlich 
ist, dass ein Programm an einer bestimmten Adresse läuft.

Das sollte doch der Linker tun, oder?

Wo nehme ich die Einstellung typischer Weise vor, welche Startadresse 
das Programm haben soll? Ich verwende IAR Workbench.

Vielen Dank für jeden Tip!
Peter
Gast #622393
Lesenswert?

Also AREA habe ich jetzt auf die schnelle gar nicht gefunden :-(

Vielleicht ein Beispiel, um was es mir geht:

tbl_hex:
  dc8  "0123456789ABCDEF"
  dc32  tbl_hex

Nach den Hex-Werten sollte im dc32 die Adresse von tbl_hex stehen. Also 
wenn das alles an 0x202000 anfängt, sollte da unten 0x202000 stehen...
Gast #622883
Lesenswert?

Hallo Peter,

im Linker-Skript wird das festgelegt.
Du legst dort fest, an welcher Adresse dein Programm beginnt (z.B. 
0x202000 oder 0x0, falls ROM), wo der Compiler die Variablen speichert 
und wo dein Stack liegt.
Die Programmierung des ARMs in Assembler hatte ich zwar versucht, aber 
mangels Literatur wieder auf Eis gelegt. Es gibt eine Direktive "org", 
je nach Assembler kann sie auch anders lauten. Damit wird angegeben, wo 
der Speicherbereich liegt.
Bei den Atmel-AVR gibt es ".cseg"...

Ich glaube mich erinnern zu können (warst du das damals?), auf so eine 
(ähnliche) Fragestellung geantwortet zu haben.

Gruß,
Greg.
Gast #623031
Lesenswert?

>Du legst dort fest, an welcher Adresse dein Programm beginnt (z.B.
>0x202000 oder 0x0, falls ROM), wo der Compiler die Variablen speichert
>und wo dein Stack liegt.

Wenn Du hier von ROM sprichst, meinst Du dann den Flash-Speicher?
Gast #623257
Lesenswert?

>>Du legst dort fest, an welcher Adresse dein Programm beginnt (z.B.
>>0x202000 oder 0x0, falls ROM), wo der Compiler die Variablen speichert
>>und wo dein Stack liegt.
>
>Wenn Du hier von ROM sprichst, meinst Du dann den Flash-Speicher?
Ja.
Gast #623325
Lesenswert?

also irgendwie bekomme ich es einfach nicht gebacken :-(

ich muss entweder ein vorhandenes Binary disassemblieren, oder die Demo 
zu MMC/SD kompilieren. Ich will es aber so, dass es im RAM läuft. Was 
muss ich denn da alles anpassen? Und wie mir scheint funktioniert es ja 
nicht einmal, wenn ich das Teil so wie es im ZIP ist kompiliere und mit 
SAMBA "hochlade"... Mir würde es ja schon reichen, wenn die DEMO 
wenigstens läuft. Aber so weiß ich nicht, wo der Fehler liegt...

Verwendet denn niemand IAR Workbench und kann mir niemand einen kleinen 
Tip geben, wie ich die TCL-Datei konfigurieren muss?

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