Forum: Mikrocontroller und Digitale Elektronik AVR: Datendatei fuer EEPROM erstellen


von huibu (Gast)


Lesenswert?

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.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

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?

von roflkopter (Gast)


Lesenswert?

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