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


    源码文档软件硬件技术交流技术支持入口文末
    【所有相关 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例程源码均可从群文件 免费获取免安装解压即用
    源码文档软件硬件技术交流技术支持入口文末

    在这里插入图片描述

  • 相关阅读:
    SpringBoot的创建的使用
    转载-Troubleshooting .NET Blazor WASM Debugging
    Linux初始化(下):从_start到第一个进程
    Java中的抽象类和接口的区别
    NSFC申请不中的反思 (内部讨论)
    在命令行中打开Visual Studio Code方法
    数据链路层(3.1)
    javaEE初阶---博客系统(前后端分离)
    【面试题】如何破坏 JVM的双亲委派机制
    数字孪生智慧选煤厂:数据监控赋能矿山高效生产
  • 原文地址:https://blog.csdn.net/m0_38064214/article/details/127748330