ARM微控制器的“正常”ARM交叉编译通常包括三个或四个步骤:
- 使用汇编器将启动代码(如果是汇编)汇编到目标文件中
- 使用编译器将任何源代码编译成目标文件
- 使用链接器将目标文件链接到 .elf 文件中
- 使用 objcopy 将 .elf 文件转换为 .hex 文件
- 刷新 .hex 文件
这是我不确定的第 4 步。在 OpenOCDflash write_image
命令的文档中,它指出:
文件 [type] 可以明确指定为 bin(二进制)、ihex(Intel hex)、elf(ELF 文件)、s19(摩托罗拉 s19)。内存或生成器。
很明显 OpenOCD 支持 elf 文件,但我不知道这究竟意味着什么。这仅在某些目标上支持吗?JTAG/SWD 适配器是否必须提供某种类似 objcopy 的功能才能正常工作?它只是从 OpenOCD 还不支持 elf 文件的时代开始的遗留物吗?