AVR: Datendatei fuer EEPROM erstellen

Gast #1786182
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.
Persönliche Seite #1786326
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?
Angehängte Dateien:
Gast #1786355
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren