Hallo, wie kann ich denn mit avr-gcc eine Datendatei fuer das eeprom erstellen? Egal was ich auch tue, mein Makefile generiert mir nur eine 13byte lange .eep Datei. Habe schon folgende Syntax zur Deklaration meiner EEPROM-Daten ausprobiert: static const EEMEM uint8_t werte[]= {0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff}; oder static const uint8_t werte[] _attribute_ ((section(".eeprom"))) = {0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff}; Hier ist mein obj-copy Aufruf: -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ Was mache ich falsch? Gibt es irgendwo eine Beschreibung fuer das EEPROM Datenformat fuer AVRs? Dann baue ich mir das Ding von Hand.
Testcode (mit Atmega8 getestet)
1 | #include <avr/io.h> |
2 | #include <avr/eeprom.h> |
3 | |
4 | static const EEMEM uint8_t werte[]= {0x00, 0xff, 0x00, 0xff, 0x00, 0xff, |
5 | 0x00, 0xff}; |
6 | |
7 | int main(void) |
8 | {
|
9 | while(1); |
10 | }
|
Meldungen der Toolchain (AVR Studio + WINAVR)
1 | Build started 18.7.2010 at 17:30:19 |
2 | avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT huibu_eeprom.o -MF dep/huibu_eeprom.o.d -c ../huibu_eeprom.c |
3 | avr-gcc.exe -mmcu=atmega8 huibu_eeprom.o -o huibu_eeprom.elf |
4 | avr-objcopy -O ihex -R .eeprom huibu_eeprom.elf huibu_eeprom.hex |
5 | avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex huibu_eeprom.elf huibu_eeprom.eep |
6 | |
7 | AVR Memory Usage |
8 | ---------------- |
9 | Device: atmega8 |
10 | |
11 | Program: 106 bytes (1.3% Full) |
12 | (.text + .data + .bootloader) |
13 | |
14 | Data: 0 bytes (0.0% Full) |
15 | (.data + .bss + .noinit) |
16 | |
17 | EEPROM: 8 bytes (1.6% Full) |
18 | (.eeprom) |
EEP-Datei siehe Anhang als Screenshot im Hexviewer und als Binärdatei. Sieht das bei dir anders aus? Wenn ja, wie?
vieleicht erwartet der TE eine Datei mit der kompletten anzahl an bytes des EEPROMs es werden aber meist nur dateien erstellt die die adresse + Inhalt wiederspiegeln wenn man eine Komplette Datei möchte zwingt man den GCC einfach dazu bei 1kb EEPROM
1 | static const EEMEM uint8_t werte[1024]= {0x00, 0xff, 0x00, 0xff, 0x00, 0xff, |
2 | 0x00, 0xff}; |
wenn man feste adressen mag : http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM-Variable_auf_feste_Adressen_legen
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.