ARM7 In Flash speichern

Hallo zusammen,

bin Neuling auf dem Gebiet der ARM7-Programmierung und ben=F6tige mal = Hilfe von einem Freak:

Ich benutze den 2368 bzw 2378 Prozessor vom ARM, jeweils ein = Evaluation-Board habe ich. Jetzt mein Problem:=20

Ist es m=F6glich, au=DFer dem eigentlichen Progarmm auch separate (nur = ein paar Bytes, wie z. B. eine Kennung) zus=E4tzlich zum Programm an = eine bestimmte Speicherstelle des Flash zu schreiben, und wenn ja wie?

Stehe da auf dem Schlauch, das Handbuch des Proz. gibt da auch nicht = viel her.

Bin f=FCr jeden Hinweis dankbar.

Freundlicher Gru=DF

Roland

Reply to
Roland Kuhn
Loading thread data ...

Roland Kuhn schrieb:

einem Freak:

habe ich. Jetzt mein Problem:

ARM stellt keine Prozessoren her, lediglich IP. Ich nehme an du meinst den LPC2368 von NXP?

Bytes, wie z. B. eine Kennung) zusätzlich zum Programm an eine bestimmte Speicherstelle des Flash zu schreiben, und wenn ja wie?

Ja, du musst allerdings eine ganze Page löschen.

formatting link
formatting link

Gruß, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
 Click to see the full signature
Reply to
Johannes Bauer

Am 25.02.2010 18:39, schrieb Roland Kuhn:

einem Freak:

habe ich. Jetzt mein Problem:

Bytes, wie z. B. eine Kennung) zusätzlich zum Programm an eine bestimmte Speicherstelle des Flash zu schreiben, und wenn ja wie?

Wie Johannes Bauer bereits geschrieben hat, stellt ARM keine uC her. Schaue bei dem Hersteller des uC nach Librarys. Damit geht das dann relativ einfach.

Rolf

Reply to
Rolf Mennekes

Johannes Bauer :

Wenn man nachträglich noch etwas eintragen möchte, geht es auch so, dass man die Zellen im Flash auf 1 lässt (0xffff) und die dann bei Bedarf auf Null schreibt, ohne vorher zu löschen. Allerdings darf man in einen bestimmten Flashblock (je nach Modell) zwischen Löschvorgängen auch nicht beliebig oft schreiben, selbst wenn andere Bits unbeeinflusst bleiben. (mal ins Datenblatt schauen nach "cumulative program time" o.ä.)

M.

Reply to
Matthias Weingart

Wenn die Kennung im gleichen Moment in den Flash soll wie das Programm, kannst du ja einfach das Programm jeweils entsprechend modifizieren. Natürlich nicht, indem du den Quelltext modifizierst und neubaust, sondern indem du in dem Programmimage rumschreibst. Wie das am kleversten geht, hängt jetzt von deiner Toolchain ab.

Für unser Projekt (kein ARM-Prozessor, würde da aber auch funktionieren) habe ich die Bootloader-Tools entwickelt, und habe da einfach eine Funktion eingebaut, die vor dem Generieren des Flashimages im Programm einen Variablenwert tauscht. Das heißt, im Programm steht char ident[100] = "nix"; und der Generator macht da "gebaut von X am Y" draus. ELF hat genug Symbolinformationen, dass das recht einfach ist.

Die nicht-ganz-so-Luxus-Version ist, rauszufinden, wo die Variable im .hex-file steht und das vor dem Flashen darin zu ersetzen.

Stefan

Reply to
Stefan Reuther

Also jeder Compiler kann auch Variablen auf eine feste Adresse legen. Da muss man nichts mehr suchen. Die Variable in einer separaten Datei anlegen, compilieren und mit dem restlichen Code linken. Sowas wie __DATE__ und __TIME__ kennt auch jeder Compiler.

Dirk

Reply to
Dirk Ruth

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.