看到axf文件有的人就会想到elf文件,我们可以将它们看成一样的。在有的编译器经过链接之后生成的是axf文件、有的编译器经过链接之后生成的是elf文件。所有的.o、 .elf、 .axf 文件都是属于目标文件,它们都是使用 ELF 格式来存储的。ELF格式还是有点复杂的,感兴趣的同学可以了解一下。
bin文件、hex文件可以由elf文件、axf文件转换得来。
1、bin文件
bin文件就是二进制文件,里面不包含任何的描述信息,代码程序写的是啥,这个文件内容就是啥,FLASH内容存储的数据是啥,bin文件展示的就是啥。
由上图(仅仅展示了一部分)可以看出第一个32位数据是080a 0020 由于STM是采样小端存储的,所以实际数据是0x2000_a080,第二个数据是4501 0008,实际数据是0x0800_0145。通过超级详细讲解stm32f10x系列的启动文件(一)https://blog.youkuaiyun.com/weixin_52803467/article/details/141360184?spm=1001.2014.3001.5501(二)
https://blog.youkuaiyun.com/weixin_52803467/article/details/141387565?spm=1001.2014.3001.5501文章的学习,我们知道从FLASH开始启动的话,第一个地址是0x0800_0000,存储的内容是栈顶指针地址,第二个地址0x0800_0004存储的是Reset_Handler地址,该函数地址是0x0800_0145(这个数字是不是很熟悉??)。
2、hex文件
hex文件是一种十六进制表示的代码记录。Hex文件不同于bin文件,记录了很多辅助信息,比如存储的地址,还有校验信息等等。
hex文件格式有兴趣的朋友可以学一下(还是很简单的),如上图所示(仅仅展示了一部分),红色框标准的就是存储的第一个、第二个信息。分别是:080A0020,45010008,实际数据是0x2000_A008和0x0800_0145。是不是和bin文件的信息一样??
3、axf文件
axf文件不仅仅包含代码数据,还包含了工程的各种信息,复杂程度很高,所以他的文件大小也是最大的。
文件大小比较:axf文件>hex文件>bin文件