mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datei mit Daten zusammen mit Programm ins Flash laden


Autor: Sven S. (honxx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will einen Datenfile an eine bestimmte Adresse im Flash ablegen um 
dann z.B: per "pgm_read_byte_far" zur Laufzeit auf die Daten 
zuzugreifen.

Gibt es eine Möglichkeit das Programm mit dem Datenfile zusammen zu 
linken, damit ich dann die Datei in meinen Mikrocontroller (ATMEGA 1284) 
programmieren kann?

Es würde auch über einen Bootloader gehen, aber den Umweg würde ich mir 
gerne ersparen.

In den Linker-Einstellungen von AtmelStudio kann ich Flash-Segmente 
definieren. Mir fehlt nur noch der Schritt die Datei in das Flash zu 
bekommen.

MfG,

Sven

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven S. schrieb:
> In den Linker-Einstellungen von AtmelStudio kann ich Flash-Segmente
> definieren. Mir fehlt nur noch der Schritt die Datei in das Flash zu
> bekommen.

http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_binarydata.html

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sven S. (honxx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Super, damit kann ich etwas anfangen!

Vielen Dank!

MfG,

Sven

Autor: Sven S. (honxx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hatte doch noch zu kämpfen mit dem Problem.

Für alle die einfach eine beliebig Formatierte Binärdatei dazu linken 
wollen:

Ich habe meine Binär-Datei foo.bin genannt und habe mit dem avr-objcopy 
eine foo.o Datei erstellt. Diese Datei habe ich dann zu meiner .elf 
Datei hinzugelinkt...

Ganz wichtig ist, dass man das Format der .o Datei angibt (in meinem 
Fall ATMEGA 1284: avr51) über die Option

--binary-architecture avr51

Das ganze in Atmel Studio einzubinden ist auch nicht so einfach:

Project->Properties->Build Events:

avr-objcopy --rename-section 
.data=.progmem.data,contents,alloc,load,readonly,data -I binary 
--binary-architecture avr51 -O elf32-avr foo.bin foo.o

in den Bereich "pre-build event command line" eintragen.


Dann noch unter:
Project->Properties->Toolchain->AVR/GNU Linker->Miscellaneous->Other 
Linker Flags:

foo.o

eintragen (sonst wird die Datei nicht hinzu gelinkt).


Im Programm kann man dann wie in dem Beispiel
[Beitrag "Re: PWM Tonhöhe und Lautstärke"]
drauf zugreifen.

MfG,

Sven

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.