Forum: Compiler & IDEs WinAVR + AVR Studio + AVR EEprom Datei


von Mike (Gast)


Lesenswert?

Hallo,

kann mir mal bitte jemand etwas Helfen.

Ich habe das EEprom des AT90S8515 auselesen dann die Datei bearbeitet 
mit den Werten die ich im EEprom haben will. Dann wollte ich diese 
Flashen aber die Checksumm stimmt nicht, was ja klar ist weil ich ja per 
Hand manipuliert habe.

Also wie erzeuge ich eine gültige flashbare Datei ?

Gruß
Mike

von Ronny (Gast)


Lesenswert?

Indem du die Prüfsumme im Hex-File wieder korrigierst.Das File ist 
eigentlich relativ simpel aufgebaut,nachzulesen u.a. hier:

http://www.keil.com/support/docs/1584.htm

Ein paar Werte aufaddieren sollte ja nicht sooo schwierig sein ;)

Nur aus Interesse:Was stand den im EEPROM?Keine Quellen mehr verfügbar?

von Mike (Gast)


Lesenswert?

Hallo,

wiso sollte ich keine Quellen haben ?

es wäre genauso möglich die Werte in die quellen zu schreiben. Beim 
compilieren wird auch eine epp Datei erzeugt, aber natürlich leer, ich 
weiß leider nicht wohin ich die Werte schreiben soll damit eine epp 
Datei mit den Werten mit erstellt wird.

Für mich war das Auslesen im Moment der einfachste Weg, fals es noch 
einen anderen gibt das in die Quellen einzubauen nur her damit.

Geuß
Mike

von Ronny (Gast)


Lesenswert?

Das geht z.B mit dem AVR-Assembler der zum Studio gehört.
Mit .ESEG weisst du dem Assembler an,alles ab der nächsten Zeile für das 
EEPROM zu assemblieren.

Beispiel aus der Hilfe zum AVR-Assembler:

.ESEG
eevar1: .DW 0xffff        ; initialize 1 word in EEPROM

von Mike (Gast)


Lesenswert?

hmm, ja das hab ich schonmal gesehen, also ist es in c nicht möglich ? 
der Compiler erzeugt ja eine leere epp Datei, wenn das nicht geht müsste 
ich das Projekt in 2 Projekte aufteilen nach asm und c , fände ich nicht 
soo toll.

Gruß
Mike

von Ronny (Gast)


Lesenswert?

Naja,ein einzelnes .asm-File zu assemblieren ist ja wohl nicht das 
Problem.Ansonsten steht es dir frei in der Hilfe zu WinAVR 
nachzuschauen,wie man den GCC/Linker dazubringen kann,Daten fürs EEPROM 
zu generieren.Da WinAVR ein entsprechendes File erzeugt,muss es ja 
möglich sein.

von Ludger (Gast)


Lesenswert?

Ist zwar schon ziemlich lange her, das der letzte sich hier gemeldet 
hat, jedoch ist es im Grunde ganz einfach eine section fuers EEPROM 
anzulegen.


#define EEPROM _attribute_ ((section(".eeprom")))

long    longs[]   EEPROM =  {1, 1, 2, 3, 4, 5, 6, 7, 8, 9};
char    k[10]     EEPROM =  {1, 2, 3, 4, 5, 6, 7, 8, 9};
char    nstring[] EEPROM = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
float   floats[]  EEPROM =  {1.e30, -1.e30, 1.e-30, -1.e-30, 1.0, 
3.1415926};


Im Makefile braucht man dann nur noch:

  avr-objcopy -j .eeprom -O $(FORMAT) $< $@

und das file fuers EEPROM wird erzeugt.

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.