ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-3-06:不同格式固件的区别:bin/hex/s37/gbl


【配套源码文档软件硬件等资源,请移步技术交流群:拿破仑ZigBee(263671349)】
【所有相关IDESDK均可从群文件免费获取,也全都是免安装的,解压出来直接就能开始开发】

持续更新中,欢迎关注!

一、编译生成

我们在使用 Simplicity Studio 开发基于 EFR32EmberZnet 时,发现当我们的固件编译结束之后,在工程根目录下的 GNU ARM v10.2.1 - Default 目录下可以得到很多种格式的固件,比如 .bin.hex.s37.gbl 等等。

那么这些不同格式的文件到底有什么区别的?在什么情况下我们要用到对应的文件呢?

二、bin文件

.bin 文件是一个二进制镜像,它包含了一个字节一个字节的二进制镜像,可以烧录到任意地址中。我们在烧录时需要指定地址,所以我们一般不使用这个格式的文件。

三、hex文件

.hex 文件是标准的Intel HEX格式。这种 ASCII 文本文件包含在目标设备的什么位置编程哪些数据的记录,它可以包含应用程序固件引导加载程序固件,甚至制造商 tokenSimEEPROM token数据的编程数据。这是你将芯片的内容导出成文件时使用的格式。在 Silicon Labs 的开发中,.hex 文件通常被作为一种方式来提供一个单独的固件,该文件包含所有必要的信息(应用程序固件和任何必要的引导加载程序固件),用于一次加载一个芯片。这些类似于二进制文件,但它们也包含了 flash的地址。在实际量产过程中,我们可以将 bootloaderapplication合成一个 .hex 文件进行烧录。

四、s37文件

.s37 文件是标准的摩托罗拉S-Record格式。这种ASCII 文件包含有关已构建固件(无论是应用程序固件还是 bootloader固件)的编程数据和加载程序工具的一些原始数据。在 Silicon Labs 的开发中,一个 .s37 文件通常只代表一个固件(一个引导加载程序或一个应用程序,但不是两个同时包含)。它们类似于二进制 .bin 文件,但它们也包含了 flash的地址。我们正常调试固件时可以直接烧录 .hex 或者 .s37 文件,唯一的区别是 .s37 仅能是 bootloaderapplication中的一个,无法合并成一个 .s37 文件。

五、gbl文件

.gbl 文件是 Gecko BootLoader 数据文件的一个二进制格式的文件。使用 Simplicity Commander 工具可以将 .s37 文件转换成 .gbl 文件。由于 .gbl 文件是给 Gecko BootLoader 用的,因此这个文件格式仅适用于应用程序固件,而不适用于bootloader固件。我们在进行串口固件升级或者生成 .ota 文件时需要使用的都是这个格式的文件。更多关于 .gbl 格式的文件的详细信息请参考 Silicon Labs 的官方说明文档《UG266: Silicon Labs Gecko Bootloader User’s Guide》和《Gecko Bootloader File Format》。

(注:如果还有遇到问题,建议在文初或文末提及的技术交流QQ群中提问交流。)

 

持续更新中,欢迎关注!

 

【所有相关IDESDK均可从群文件免费获取,也全都是免安装的,解压出来直接就能开始开发】
【配套源码文档软件硬件等资源,请移步技术交流群:拿破仑ZigBee(263671349)】

文章作者: 拿破仑940911
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 拿破仑940911 !
评论
  目录