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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.