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