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
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.
Das bloße Zusammenketten der Dateien geht eben nur komplett am Ziel vorbei...
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"
1 | 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
> 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.
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.