Hallo, ich komme gerade nicht weiter. Ich habe ein STM32 Discovery Board vor mir liegen und möchte das einmal beliebig flashen zur probe. Ein SW Tool (stlink, https://github.com/texane/stlink) hab ich, das nimmt aber anscheinend nur .bin files - ich habe aber nur Beispiele im hex Format vorliegen. Wie kann ich das schnell umwandeln?? Wenn ich mir das so überlege, dann besteht ein hex-file ja aus den ASCII-codierten roh-code (+ checksummen, adressen), ein .bin hingegen ist ja der Maschinencode pur ( also ohne Prüfsummen und Offsetadressen). Oder irre ich mich da ? Grüße
Wikipedia hat einen Artikel über das Intel-Hex Format.
@Sacha: Ja hex2bin gibts irgendwie von Keil, gleub nicht dass das unter Linux läuft. @Georg. Ja den Artikel kenne ich, aber ob meine These zum Zusammenhang der Formate richtig ist weißt du auch nicht ?
>@Sacha: Ja hex2bin gibts irgendwie von Keil, gleub nicht dass das unter >Linux läuft. Nimm srecord. Das kann auch Intel HEX.
srecord, hab ich soeben versucht. der macht mir aus 2,7 MB hex ein 130 MB großes file. zweiter Vesuch war "objcopy -Iihex -Obinary in.hex out.bin" . da kommen dann 900KB raus .- das sieht schon realistischer aus. st-flash bringt mir aber einen ERROR, kA wieso. [ open(out_.bin) == -1 2012-09-14T19:05:51 WARN src/stlink-common.c: map_file() == -1 stlink_fwrite_flash() == -1 ]
>zweiter Vesuch war "objcopy -Iihex -Obinary in.hex out.bin" . objcopy ist auch gut. >da kommen dann 900KB raus . Wie viel Flash hat dein Controller?
>1MB Flash misst der Flash des Controllers
Passt doch;)
Nimm lieber die ELF Datei wenn du mit objcopy arbeitest.
So holen wir eine BIN aus der ELF:
arm-none-eabi-objcopy -O binary -j .text -j .data -j.ARM.exidx
--gap-fill 0xFF %1.elf %1.bin
Bin mir aber nicht sicher ob -j .data -j.ARM.exidx wirklich nötig sind.
nein eine ELF hab ich nicht, eine etwa ein drittel so große *.DFU Datei ist noch im binary Ordner. Davon hab ich aber noch nie gehört.
>st-flash bringt mir aber einen ERROR, kA wieso. >open(out_.bin) == -1 Deine Datei heisst doch out.bin und nicht out_.bin.
nein, out.bin war die die mit srecord erstellt wurde. Sorry - für die Verwirrung.
Nochmal sorry für weitere Verwirrung. Irgendwie klappt gerade das programmmieren das Flash mit dem objcopy erstellen file. Vielen Dank!!
Nur zur Info: $ st-flash write fancyblink.elf 0x8000000 2012-09-14T20:51:20 INFO src/stlink-common.c: Loading device parameters.... 2012-09-14T20:51:20 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device, id 0x10016420 2012-09-14T20:51:20 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes 2012-09-14T20:51:20 INFO src/stlink-common.c: Attempting to write 84806 (0x14b46) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08014800 erased 2012-09-14T20:51:22 INFO src/stlink-common.c: Finished erasing 83 pages of 1024 (0x400) bytes 2012-09-14T20:51:22 INFO src/stlink-common.c: Starting Flash write for VL core id 2012-09-14T20:51:22 INFO src/stlink-common.c: Successfully loaded flash loader in sram 82/82 pages written 2012-09-14T20:51:27 INFO src/stlink-common.c: Starting verification of write complete 2012-09-14T20:51:29 INFO src/stlink-common.c: Flash written and verified! jolly good! $ Jolly good!
>Jolly good!
Jolly better wäre allerdings, wenn er das elf nicht als Binärfile
flashen würde... :-)
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.