Forum: Compiler & IDEs Linkerscript: Ausgabe Memory an Programm


von David B. (dave10)


Lesenswert?

Hallo,

ich nutze eclipse mit gcc-arm und möchte nach dem Kompilieren ein 
Programm aufrufen. Dieses Programm benötigt die Startadresse und Größe 
des Flashs.
Möglichkeit 1 wäre dies als postbuildprocess von eclipse aufrufen zu 
lassen.
Doch wie sage ich dann wie groß der Flash ist? - Ja man könnte dies fest 
eintragen, aber ich möchte gern eine Variable oder soetwas ähnliches 
nutzen um beim nächsten mal dies nicht eintragen zu müssen.

Möglichkeit 2 wäre das Programm aus dem Linkerscript aufzurufen. Da ich 
in eclipse das managemake benutze, kann man eine Datei makefile.targets 
erstellen, welche als letztes aufgerufen wird. Darin kann ich schreiben:
1
all:
2
 $(shell programmname.exe $(__FLASH_FW_START))
3
4
.PHONY: all
Leider funktioniert dies nicht. Wie muss ich den Programmaufruf 
abändern, damit die Startadresse und die Größe des Flash mit übergeben 
werden

Danke
VG David

: Verschoben durch User
von Dr. Sommer (Gast)


Lesenswert?

David B. schrieb:
> Leider funktioniert dies nicht

Wie soll das denn funktionieren, woher soll make das Symbol aus dem ELF 
File kennen?!
Du kannst mit "nm" oder "readelf" Symbol Adressen aus dem ELF abfragen. 
Alternativ direkt mit readelf die Größe der Flash Section abfragen

von David B. (dave10)


Lesenswert?

Es geht nicht um ein Symbol vom elf-File, sondern ich kann im 
Linkerscript mem.ld ein Symbol anlegen: __FLASH_FW_START = ORIGIN( FLASH 
);

Im Linkerscript makefile.targets möchte ich dies nutzen um es dem 
Programm zu übergeben (siehe Anfang des Threads). Nur funktioniert dies 
nicht.

Die Idee mit readelf hatte ich auch schon, aber ich habe nur die 
sections auslesen können und nicht memory. Weil in sections steht nicht 
die Länge des Flashs, sondern wie viel davon genutzt wird.
Wie kann ich mit readelf memory ausgeben?

VG David

von S. R. (svenska)


Lesenswert?

Dann nimm "nm" statt "readelf".

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
Noch kein Account? Hier anmelden.