在Linux上从ARM转换为*.hex到*.bin

Jac*_*ack 6 linux binary hex file-conversion stm32f4discovery

我想使用st-flash命令将程序上传到我的STM32F4 Discovery板.问题是,当我尝试上传*.hex或*.elf文件时,它只是无法正常工作.我尝试了很多方法(比如使用xxd)从*.elf或*.hex转换为*.bin但是当我上传它时仍然无法正常工作.是的,我尝试从其他Windows计算机上传hex文件,它的工作原理.

hex文件的示例(前三行,只是为了向您展示它的内容):

:020000040800F2
:100000000000022099020008A1020008A5020008D1
:10001000A9020008AD020008B102000800000000BB
Run Code Online (Sandbox Code Playgroud)

我的操作系统是Ubuntu 14.04 LTS.

感谢帮助!

A. *_*hev 9

我假设你已经安装了linux binutils,所以你只需:

objcopy --input-target=ihex --output-target=binary code00.hex code00.bin
Run Code Online (Sandbox Code Playgroud)

  • @ulidtko:1.问题是针对ARM的,因此答案是针对ARM的;2. bin文件中不包含加载基地址,您声称会出现乱码。您在加载 .bin 时指定地址 (2认同)
  • 如何更改起始段地址?例如,我不希望它以 0x00000000 为基础,而是以 0x80000000 为基础。 (2认同)

小智 2

您是否考虑过使用arm-none-linux-gnueabi-objcopy(或类似的)而不是xxd?这可以在任何 ARM 工具链中找到。