www.mikrocontroller.net

Forum: GCC GCC: Daten in Programmdatei integrieren


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Christopher C. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich müsste ein paar Daten auf meinem ATMega8 speichern. Die einfachste 
Methode wäre wahrscheinlich den EEPROM zu benutzen, allerdings ist der 
Speicher zu klein. Ich habe herausgefunden, dass ich die Daten auch 
einfach in den Flash also in den Programmspeicher schreiben könnte. Ich 
weiss allerdings nicht wie man das am besten anstellt und dann auch die 
Speicheradresse dieser Daten bekommt. Im Internet finde ich nur wie man 
den Flash zur Laufzeit beschreiben könnte, also mit einem Bootloader. 
Das nützt mir aber nicht viel. Von Assembler kenne ich die .Data 
section. Das müsste es doch für C auch geben oder? Man müsste dem 
Compiler einfach sagen können, welche dateien er anhängen möchte.

Vielen Dank für Eure Hilfe.

mfg

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wenn es im Binärdaten geht, dann musst du die Daten in ein Array 
umwandeln, das per PROGMEM ins Flash legen und mit pgm_read_xxx darauf 
zugreifen.

Autor: Christopher C. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Erstmal vielen Dank für die schnelle Antwort.
Das kommt dann praktisch in eine Header Datei, oder? Geht das nicht 
bequemer, wenn ich die Daten als rohe Binärdateien habe?
Gut, ein Programm wäre schnell geschrieben, dass mir die Arbeit abnimmt.

Autor: Uwe S. (de0508)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Christopher ich denke dein Ansatz ist der falsche, keine Aussage welche 
Daten das sind.

Read Only
Read/Write
in welchem Zeitraster wird gelesn, geschrieben ?
wie viele Gbyte, MByte oder kByte beötigt werden.

Es gibt auch grössere Atmel mit mehr Speicher.

Vielleicht reicht Dir der Hinweis auf das Attribut PROGMEM.
const char pgmText[] PROGMEM = "what's up?";

Autor: Christopher C. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Die Daten müssen nur gelesen werden. Ich benutzte ich eine PWM um einen 
Motor zu regulieren. Die Daten sagen wie der Motor zu regeln ist.
Ich weiss zwar nicht genau wie groß die Daten werden, aber der EEPROM 
mit seinen 512 Byte wird da nicht ausreichen. Selbst wenn ich meinen 
ATMega32 benutzten würde, reicht es wahrscheinlich nicht aus. Der Flash 
dagegen ist ja sehr viel größer, mit dem lässt sich etwas anfangen. Die 
Geschwindigkeit müsste nach meiner Einschätzung völlig reichen.

Autor: Uwe S. (de0508)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ok,

sonst fällt mir noch ein Atmel µP mit externen XRAM ein, z.B. ein 
atMega162.
Die Daten könnten dabei vorher auch von einem ext. langsammen Flash ins 
XRAM geladen werden. Danach ist die Zugriffszeit minimal.

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Christopher C. schrieb:

> Geht das nicht
> bequemer, wenn ich die Daten als rohe Binärdateien habe?

Nein.

> Gut, ein Programm wäre schnell geschrieben, dass mir die Arbeit abnimmt.

Eben.

Autor: Oliver (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Christopher C. schrieb:
> Die Daten müssen nur gelesen werden.

A. K. schrieb:
> das per PROGMEM ins Flash legen und mit pgm_read_xxx darauf
> zugreifen.

So gehts.

Oliver

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
A. K. schrieb:
>> Geht das nicht
>> bequemer, wenn ich die Daten als rohe Binärdateien habe?
>
> Nein.

doch geht. Wurde hier auch schon mehrfach besprochen. Man muss sie als 
Obj file umwandeln und dann einfach dem linker mitgeben.

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Meine Antwort bezog sich auf die Frage, ob es bequemer geht. Wenn 
deine Alternative bequemer ist, dann scheib die Sequenz doch hier rein.

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter II schrieb:
> 
http://www.linuxjournal.com/content/embedding-file...

Ist aber nur die halbe Miete. Man will ja auch angeben, in welcher 
Section das Zug landen soll.

Autor: Peter II (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Johann L. schrieb:
> Ist aber nur die halbe Miete. Man will ja auch angeben, in welcher
> Section das Zug landen soll.

muss man das? Programmcode landet doch standardmäßig im Flash, und das 
obj wird als Programmcode gerwerted,

Aber zur not kann man ja immer noch den parameter angeben.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter II schrieb:
> Johann L. schrieb:
>> Ist aber nur die halbe Miete. Man will ja auch angeben, in welcher
>> Section das Zug landen soll.
>
> muss man das? Programmcode landet doch standardmäßig im Flash, und das
> obj wird als Programmcode gewerted,

Werden die wie Orphans behandelt?

Wo isn das dokumentiert: "Orphans landen immer im Flash"?

Autor: Stefan Ernst (sternst)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: Christopher C. (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Na dann vielen Dank für eure Hilfe!
Der letzte Vorschlag wäre auch noch eine Alternative. Muss ich mir noch 
genauer anschauen ;).

mfg

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net