1

我使用嵌入式系统。在 C 源代码构建之后,我得到了很多文件。文件名相同,但扩展名不同:

.s37 .elf .hex .sig

它们之间有什么区别?主要是.s37和.elf有什么区别?

谢谢,L。

4

1 回答 1

1

这些只是不同的可执行格式。

.s37 是SREC 格式的一种变体,它是 ascii/line 固定文本,包括十六进制(二进制)

这种格式在大多数嵌入式目标中被闪存/上传软件所熟知。

.elf是一个可执行和可链接文件,是链接器gcc或其他商业编译器(Windriver、CodeWarrior ...)的产品。

.elf.SREC如果不先转换为with,格式很难在嵌入式目标上上传objcopy。内容的主要区别之一是.elf格式可以包含调试符号,而.srec/.s37不能。

我的猜测是您的工具链完成了所有操作:链接:.elf,然后 objcopy 将 .elf 转换为 .s3 以进行目标上传(如果有的话,会丢失符号信息,这需要您.elf在目标上调试应用程序时将文件放在手边, SREC 文件仅包含代码和数据,没有调试)。

于 2018-03-06T15:19:51.757 回答