Konvertierung von *.hex,*.bin für ARM unter Linux
Möchte ich-upload-Programm auf meinem STM32F4 Discovery board mit st-flash
Befehl.
Problem ist, wenn ich versuche zu laden *.hex oder *.elf-Datei ist, es funktioniert einfach nicht.
Ich habe versucht, viele Möglichkeiten ( wie die Verwendung von xxd ) der Umwandlung von *.elf oder *.hex,*.bin aber immer noch nicht funktioniert, wenn ich es hochladen. Und ja, ich habe versucht, Upload-hex-Datei von einem anderen Windows-computer, und es funktioniert.
Probe ( die ersten drei Zeilen, nur um Ihnen zu zeigen, wie es aussieht innen ) der hex-Datei:
:020000040800F2
:100000000000022099020008A1020008A5020008D1
:10001000A9020008AD020008B102000800000000BB
Mein OS ist Ubuntu 14.04 LTS.
Danke für die Hilfe!
InformationsquelleAutor Jacajack | 2014-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, du hast linux und das Sie installiert haben
binutils
, so dass Sie nur tun:1. die Frage ist, für ARM, daher ist die Antwort für ARM; 2. die bin-Dateien enthalten keine be-Basis-Adresse, die Sie behaupten, werden verstümmelt. geben Sie die Adresse ein, wenn Sie laden .bin
InformationsquelleAutor A. Genchev
.hex
- Datei-format ist dokumentiert im web. Benötigen Sie ein loader-Programm, um es zu verstehen, wie es hat mehrere Arten von Registern zur Steuerung des Ladevorgangs. Einige der Register control entry point Adresse. Andere Daten geladen werden, auf einige Feste Adresse.Können Sie Informationen auf der wikipedia (ich habe ihn gefunden, es) für Intel-Hex-format (das ist, wie es genannt wird). Wenn sich alle Daten auf nur ein segment und kein Einstiegspunkt angegeben ist, theoretisch können Sie konvertieren Sie es in binäre Daten geladen werden, aber das ist unwahrscheinlich.
Es ist eine text-Datei aus Zeilen beginnend mit ': '- Zeichen, dann kommt eine zwei-Feld hex Zahl, die die Anzahl von bytes der Daten in diesem Datensatz, dann die Adresse diese Daten werden geladen, dann den Typ der Datei, es kann sein:
Dann kommt n bytes (n ist der Wert des ersten Feldes) Daten (hex-codiert) geladen werden, und schließlich eine Prüfsumme byte (die Summe in zwei der Ergänzung der den Datensatz Byte aus dem Dickdarm).
st-flash write bingotfromhex.bin 0x8000000
. Ich bin eigentlich lernen openOCD kleine Schritte, damit ich hochladen kann *.elf Dateien. Dank für die Erklärung, wie die hex-Dateien arbeiten!Ich weiß es nicht. Intel-hex-format ist ein Allgemeines, sehr extended-format. Ich arbeite nicht mit Waffen. Ich kann Ihnen nicht viel mehr helfen. Sorry. Vielleicht haben Sie zu verwenden, eine option für st-flash in der Lage sein zum analysieren von hex-Dateien... Haben Sie versucht, st-flash --Hilfe ???
Es ist ok. c: Eh wissen, das Sie gab mir sehr nützlich sein kann. Danke für die Hilfe!
Ich bin auf der Suche nach st-flash utility Dokumentation, aber noch keine Ergebnisse.
tjakubowski.wordpress.com/2012/12/04/... (es scheint zu funktionieren mit
.hex
Dateien)InformationsquelleAutor Luis Colorado
Haben Sie sich überlegt mit einem arm-none-linux-gnueabi-objcopy (oder ähnlich) anstelle von xxd?
Diese finden Sie in jedem ARM-toolchain.
arm-none-eabi-objcopy myhex.hex -O binary mybin.bin
aber ich bin mir nicht sicher jetzt. Ich werde Sie wissen lassen, wenn ich nach Hause komme.Ok, ich kann auf meinem PC jetzt. Also habe ich versucht, beide Optionen:
arm-none-eabi-objcopy "F4 Discovery test.elf" -Obinary "out.bin"
undarm-none-eabi-objcopy "F4 Discovery test.elf" -Oihex "newout.bin"
- Sie funktionieren nicht, zumindest bei mir. Ich bin wirklich versucht zu verstehen, OpenOCD und ich habe hochgeladen, mein *.hex und es funktioniert...vielleicht haben Sie einen Namen endend mit
.hex
InformationsquelleAutor Adashi