我使用嵌入式系统。在C源代码构建之后,我得到了很多文件。文件名相同,但扩展名不同:
.s37 .elf .HEX 的.sig
它们之间有什么区别?主要是.s37和.elf之间的区别是什么?
谢谢, 升。
答案 0 :(得分:1)
这些只是不同的可执行格式。
.s37是SREC format的一种变体,它是ascii / line固定文本,包括hex(二进制)
大多数嵌入式目标中的闪存/上传软件都熟知这种格式。
.elf
是executable & linkable file,是gcc
或其他商业编译器(Windriver,CodeWarrior ...)等链接器的产品。
.elf
格式很难在嵌入式目标上上传,而无需先使用.SREC
转换为objcopy
。
内容的主要区别之一是.elf
格式可以包含调试符号,而.srec/.s37
则不能。
我的猜测是你的工具链全部完成:链接:.elf,然后objcopy将.elf转换为.s3进行目标上传(如果有的话丢失符号信息,这需要你保持.elf
文件方便在目标上调试应用程序时,SREC文件仅包含代码和数据,无需调试。