Forum: Mikrocontroller und Digitale Elektronik Binärdaten im Programmspeicher (Flash) unterbringen


von Jürgen G. (jg32)


Lesenswert?

Hallo,
ich suche nach einer Möglichkeit, eine Binärdatei (z.B. Midi-File) im 
Flash unterzubringen, damit das Programm Zugriff auf die Daten dieser 
Binärdatei hat.
(Programmierumgebung: GCC unter Linux, Architektur: AtMega)
Mein erster Ansatz war, mittels eines PC-Hilfsprogramms die Datei 
umzuwandeln in C-Code:

const unsigned char datei[]={
0x10,0x11,0x57, ...
};


D.h. Zuerst werden die C-Bezeichner erzeugt, dann die Datei gelesen und 
für jedes Byte eine Darstellung im Ascii-Format erzeugt.
Natürlich ein paar Zeilenumbrüche.
Diese erzeugte Datei ist im Makefile und wird kompiliert und gelinkt.

Aber gibt es eventuell einen einfacheren und eleganteren Weg?

Vielleicht gibt es spezielle Befehle im Makefile, um die Datei im Flash 
abzulegen?

Schönen Abend!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mach´s doch zur Laufzeit über eine Art Bootloader mittels SPM, dann 
kannst Du die Daten nachträglich auch mal ändern. Mögliches Interface 
dafür wäre das UART.

von spess53 (Gast)


Lesenswert?

Hi

Warum kein Array erzeugen?

MfG Spess

von Jürgen G. (jg32)


Lesenswert?

Ich meinte sowas aehnliches wie der Windows Resource-Editor.
Aus den Resourcen werden ganz normale Objekte erzeugt (*.res) und zum 
exe gelinkt.
Sowas aehnliches duerfte es doch bei GNU auch geben.


> Warum kein Array erzeugen?
Hast du meinen 1. Beitrag gelesen?

von Ja mann (Gast)


Lesenswert?

const unsigned char datei[]={
0x10,0x11,0x57, ...
};

So landen die Daten nicht im Flash, sondern im RAM. Stichtwort: PROGMEM

von Jürgen G. (jg32)


Lesenswert?

Ja mann wrote:
> const unsigned char datei[]={
> 0x10,0x11,0x57, ...
> };
>
> So landen die Daten nicht im Flash, sondern im RAM. Stichtwort: PROGMEM
Ist mir schon klar.

von Henry (Gast)


Angehängte Dateien:

Lesenswert?

Mit diesem Programm (nicht von mir) kann man irgendwelche Binär-Dateien 
in ein C-Array konvertieren.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?


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.