Forum: Mikrocontroller und Digitale Elektronik ARM: Readonly Daten von Datei direkt in Flash?


von Stefan (Gast)


Lesenswert?

Hallo,

nach langem vergeblichem Suchen, hier folgende Frage:

Gibt es eine Moeglichkeit, eine grosse Datei (120kB) so mit einzulinken, 
dass deren Inhalt:
a) im Flash eines AT91SAM7x256 abgelegt wird und
b) ein Zugriff vom Programm aus moeglich ist, z.B. mit:
    extern const unsigned char caldata[];
?
Danke allen Helfern vielmals im voraus!

More Info:
Die Datei liegt als hex-file vor. Ihre Groesse ist bekannt und fixed.
Benutzte Tools : gnu-arm-elf;

Danke!

Stefan

von holger (Gast)


Lesenswert?

Frag google nach einem hex2bin Programm.
Also aus Hex-Datei erstmal eine Bin-Datei machen.
Dann nach bin2c suchen. Macht aus der Bin-Datei
ein C-Array. Oder gleich hex2c ?

von Ralph (Gast)


Lesenswert?

Ja es geht;

zu a:

Leg im Linkerfile einen Adressbereich an in dem das Hexfile abgelegt 
werden soll. zb. Hexfile start: 0x01234 size:0x100

Im Hexfile ist die Adresse enthalten bei der die Daten geflasht werden.
Dazu musst du dir das Hexformat ansehen, dann lassen sich diese Adressen 
auslesen und bei Bedarf modifizieren.
Die im Hexfile enthaltenen Adressen müssen allerding mit der Adresse im 
Linkerfile identisch sein.

zu b:

Leg eine Variable, Array,..... entsprechend der Daten an, und weiß 
dieser Variablen die Adresse zu, an die das Hexfile im Linkerfile 
eingetragen ist.

zb:  pointer  auf die Variable = 0x01234


Wie du das in Praxis mit dem von dir genutzen Compiler , Linker , 
Maketool machen kannst, kann ich dir allerdings nicht erklären.


von swoo (Gast)


Lesenswert?

Danke fuer Euere Hilfe!

Werde morgen alles ausgiebig testen!

Beste Gruesse & Danke!

von Stefan (swoo) (Gast)


Lesenswert?

Also,

danke an Euch beide.

Es funktioniert grossartig.
Holger's Methode besticht durch einfache Eleganz. Bin2C ist grossartig.
Es gab keinerlei Probleme!!

Ursprueglich dachte ich genau wie Du, Ralf, habe auch versucht zu 
verstehen, wie ich dies mit meinem Linker hinbiegen koennte, kam aber zu 
keiner Loesung. Ich denke auch, dass es gehen muss, habe aber leider 
keine Zeit dem weiter nachzugehen.

Nochmals Danke!

Beste Gruesse,

Stefan

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.