Forum: Compiler & IDEs Fixe Adresse im Flash hex_File extern äbändern


von gurke (Gast)


Lesenswert?

Hallo
ich habe gerade keinen Plan wie ich folgende Aufgabe lösen soll.
Zur Aufgabe. Ich muß ein Gerät mit einer Seriennummer ausstatten.
Das heißt ich soll direkt in den Flash die Seriennummer hinterlegen!
Nun da es mehrere Geräte sind möchte ich ich die Seriennummer irgendwie 
beim Flashen generieren und schreiben.
Meine Frage ist kann man die Seriennummer an eine bestimmte 
Speicherstelle binden und diese stelle mit einem bearbeiteten Hexfile 
beschreiben?
Ich hoffe ich habe mich einiger weiße klar ausgedrückt!
Ich verwende eine ATMEGA 644 und das Atmel Studio6

Danke für eure Hilfe!

von Luigi (Gast)


Lesenswert?

Die ATmega__ haben ein EEPROM, das dafür super geeignet ist...

von Peter II (Gast)


Lesenswert?

Oder einfach eine Dummy Seriennummer in den Quelltext einbauen und dann 
suchen und ersetzen im bin-file.

von gurke (Gast)


Lesenswert?

Peter II schrieb:
> Oder einfach eine Dummy Seriennummer in den Quelltext einbauen und dann
> suchen und ersetzen im bin-file.

Ja bleibt diese Seriennummer beim neu compilieren an der gleichen 
Stelle?

Luigi schrieb:
> Die ATmega__ haben ein EEPROM, das dafür super geeignet ist..

Das EEprom ist nicht gewünscht!

Danke für Eure Hilfe

von Peter II (Gast)


Lesenswert?

gurke schrieb:
> Ja bleibt diese Seriennummer beim neu compilieren an der gleichen
> Stelle?

ist doch egal, einfach nach jeden Compilern neu ersetzen.

von Daniel A. (daniel-a)


Lesenswert?

gurke schrieb:
> bestimmte Speicherstelle binden und diese stelle mit einem bearbeiteten
> Hexfile beschreiben?

Könnte mit einem linker script funktionieren.

Falls du auch ein elf file hast, und die variable mit der seriennummer 
mit extern declariert wurde, kannst du die Adresse der Variable 
womöglich mit
avr-objdump -t | grep ...
finden, und dann im hexfile ersetzen.

von Karl H. (kbuchegg)


Lesenswert?

Peter II schrieb:
> Oder einfach eine Dummy Seriennummer in den Quelltext einbauen und dann
> suchen und ersetzen im bin-file.

Ist nicht garantiert.

Auf dem avr-gcc führt der Weg über eine eigene Speicher Section, in die 
du die Variable legst und der Angabe für den Linker, wo du diese Section 
im Speicher platziert haben willst.

Such mal im Forum, da gibt es einige Beispiele dafür.


Ach ja.
Und du brauchst natürlich dann auf deinem Entwicklungsrechner ein Tool, 
welches du in den Buildprozess einbauen kannst und dass in der Lage ist 
Hex-Files zu lesen, einzelne Bytes auszutauschen und ein neues Hex-File 
zu schreiben. Aber das sollte für einen nicht ganz unerfahrenen 
C-Programmierer zu machen sein. So kompliziert ist das Intel-Hex Format 
nun auch wieder nicht.

von LG_gucker (Gast)


Lesenswert?

Karl Heinz schrieb:
> Ach ja.
> Und du brauchst natürlich dann auf deinem Entwicklungsrechner ein Tool,
> welches du in den Buildprozess einbauen kannst und dass in der Lage ist
> Hex-Files zu lesen, einzelne Bytes auszutauschen und ein neues Hex-File
> zu schreiben. Aber das sollte für einen nicht ganz unerfahrenen
> C-Programmierer zu machen sein. So kompliziert ist das Intel-Hex Format
> nun auch wieder nicht.

Dazu würde ich mich schon in der Lage sehen!
Werde mal die suche starten vielleicht hilfts ja;)
Lg

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.