二进制文件格式(ARM GCC)

时间:2015-09-18 19:21:30

标签: gcc arm ld firmware binutils

什么包含来自ARM GCC for ARM设备的二进制文件?

里面有关于写入的目的地址的一些信息吗? 或者只是原生的,纯粹的程序内容,没有关于内存位置的信息?

如果我有一个引导加载程序,或者通过程序员,我可以在闪存中的任何地方写一个二进制文件,还是通过有关特定内存地址的内部信息自行编写?

如果我设置我的链接描述文件在特定的内存地址中编写程序,那么bin文件会有影响吗?

1 个答案:

答案 0 :(得分:0)

有几种类型的文件,它们被称为“二进制”(至少在我的同事中是这样):

.bin 文件扩展名。仅包含将/可以写入单个连续分区的数据。它里面不包含任何地址或偏移量。将此文件闪存到微控制器时,您应该明确指定目标地址(通常是 0x0,闪存开始)。如果您需要写入不同的分区,您需要为每个分区创建单独的 .bin(如果这些分区是连续的,则可以合并一个)。所以这种文件类型就像内存占用。
优点:如果您有单个连续分区且目标地址始终相同,则开销最小(因此可以硬编码)

.hex 是一种 Intel hex 文件格式。它包含其中每一行的目标地址。可以在任何文本编辑器中打开。

.s19 或 .srec Motorola s-record。与 .hex 非常相似,只是另一种格式。也可以包含一些不会被闪现的元数据。

最后两种类型的优点:如果您有多个不一致的分区,则是最佳选择。可以通过去除间隙来压缩

对于 VSCode,有几个插件可以突出显示 .s19 和 .hex 文件