www.mikrocontroller.net

Forum: Compiler & IDEs Zusammenfügen zweier bin Dateien


Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe zwei .bin Dateien. Die eine ist das "Betriebssystem" und die 
andere Datei meine Anwendung. Beide Dateien werden nacheinander in den 
Flash geschrieben. Das Nacheinander ist nicht ganz trivial. Ich suche 
eine Möglichkeit diese beiden Dateien zu einer Bindatei zusammenzufügen. 
Da würde das Flashen ganz einfach gehen. Alles aufeinmal schrieben und 
fertig.

Gibt es nicht was einfaches aus den binutils?
merge, copy??

Danke für Hilfe

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, bei reinen Binärdateien dürfte das nicht so einfach sein, denn
die haben keinerlei Adressinformationen.

Für Intel Hex oder Motorola S-Record müsste es das srecord-Tool
doch können, oder?  Ihex kann man zur Not auch manuell zusammen
zimmern, das Format ist so schwer nicht zu durchschauen.

Autor: Holger Krull (krulli) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DOS-Modus:
copy /b quelldatei1+quelldatei2 zieldatei

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das bloße Zusammenketten der Dateien geht eben nur komplett am Ziel
vorbei...

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit den Bintuils fällt mir grade auch keine schnelle Lösung ein. Evtl. 
über Umwege mit x*bin->hex, dann hex zusammenkopieren, von Hand 
anpassen, hex->bin.

Mit den bereits von Jörg erwähnten s-record Tools 
(http://srecord.sourceforge.net/) ist das "Zusammenkopieren" aber 
relativ einfach ohne größere Klimmzüge möglich (nicht nur für hex oder 
srec). Die Tools sind auch in WinAVR enthalten.

Habe das bei einem Projekt mal so gemacht für Anwendung+Bootloader unter 
Verwendung des Programms srec_cat aus den Tools. Dateien grade nicht zur 
Hand, also "aus dem Kopf" und ohne Gewähr:

gegeben:
app.bin  - die bin-Datei mit der Anwendung, soll an Flash-Adresse 0x0000
boot.bin - die bin-Datei mit dem Bootloader, soll an Adresse 0x3800

"Zusammenführen"
srec_cat app.bin -binary boot.bin -binary -offset 0x3800 -o flashimg.bin -binary

Ergebnis:
Datei flashimg.bin mit der Datei zum Flashen, in der beide Binärcodes 
enthalten sind

Wie ebenfalls schon erwähnt, braucht man die Adresse, an denen die 
einzelnen Teile starten. Diese sind nicht in der bin-Datei enthalten und 
müssen von Hand vorgegeben werden (offset 0x0 ist default, daher keine 
Angabe für app.bin).

Prinzip ist hoffentlich leicht auf die eigene Anwendung übertragbar.

Martin Thomas

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das bloße Zusammenketten der Dateien geht eben nur komplett am Ziel
> vorbei...

Sicher? Wenn er sie direkt hintereinander ins Flash schreiben will, 
düfte das durchaus gehen. Die Bin-Datei enthält ja auch keine Header 
oder sonstiges, sondern nur die rohen Daten.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Regel willst du aber den Bootloader nicht direkt nach deiner
Applikation stehen haben, sondern an einer definierten Adresse.

Martins Antwort deckt das IMHO erschöpfend ab (er kennt die Srecord
utils besser als ich).

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.