【技术】 EFM8系列MCU BootLoader之HEX2BOOT工具解析
EFM8系列MCU是SILICON LABS公司在C8051Fxxx系列基础上推出的高性能低价格8位单片机。在工业、医疗、智能家居、传感器、通讯等行业已经得到广泛运用。MCU在产品的应用过程中,往往需要具有在线升级的功能。针对这一需求,Silicon Labs公司提供全套的解决方案。
在这个方案中,需要用到Hex2boot.exe工具(./ AN945SW/Tools/Windows目录下)。这个工具实现什么功能?如何使用?是否可以不使用这个工具?很多工程师使用的时候几乎都有这些疑问。
我们一般通过Simplicity Studio开发环境或者keil C51编译软件编译的代码输出为HEX格式文件。Silicon Labs公司提供的bootloader引导程序并不具备HEX格式文件的解析功能。所以,我们需要通过Hex2boot工具将HEX文件转换为bootloader引导程序可识别的文件:efm8文件。
Hex2boot工具是一个DOS程序,需要在DOS下通过命令实现格式转换。创建一个EFM8文件可以使用如下命令:
hex2boot.exe input_file.hex -o Filename.efm8
// input_file.hex为需要转换的hex文件,Filename.efm8为bootloader烧写文件
注意:hex2boot的更多参数和运用说明可以查看文档AN945的第5.1节
EFM8是Silicon Labs公司自定义的一种文件格式。了解efm8文件格式,有利于进行bootloader升级时,正确进行数据传输。
下述通过比较同一个hex文件转换成的bin文件和efm8文件来分析efm8文件内容。
图1:bin文件和efm8文件比较
从图1可以看出,efm8文件是在bin文件的基础上,将第一个字符02修改为FF,然后增加了部分数据。增加的数据其实为bootloader烧写指令。指令格式如图2:
图2:bootloader指令格式
参照指令格式,可以从图1中提取以下指令:
指令1:0x24 0x04 0x31 0xA5 0xF1 0x00
//0x24 指令头;0x04 数据长度;0x31 Setup指令;0xA5 0xF1关键字;0x00 bank参数(该指令是在烧写之前,通知bootloader选择Flash Bank,除了EFM8SB2之外,其他MCU均采用此指令格式,不可省略此指令)。
指令2:0x24 0x55 0x32 0x00 0x00
//0x32 擦除指令;0x00 0x00起始地址(两字节),后面为烧写数据(bin文件内容)。
//如果指令后带有数据,则擦除Flash后直接将数据烧入Flash。
指令3:0x24 0x07 0x34 0x00 0x00 0x00 0x51 0xD3 0x92
//0x34 校验指令;0x00 0x00起始地址;0x00 0x51结束地址;0xD3 0x92 CRC16-CCITT校验值。
指令4:0x24 0x04 0x33 0x00 0x00 0x02
//将Flash地址0x00数据修改为0x02。
指令5:0x24 0x03 0x36 0x00 0x00
//启动APP程序
注意:bootloader具有0x32(擦除指令)和0x33(烧写指令)。这两条指令运用非常相近。0x32指令可以擦除后直接将数据写入Flash。0x33指令将数据写入Flash,写入前自动擦除Flash,不需要再使用0x32指令进行擦除。区别在于0x32指令可以只擦除,不写入数据。由于0x32或者0x33指令,后面的数据最大值为128字节,所以需要在bin文件数据中,每隔128个字节插入一条0x32或者0x33指令。如图3:
图3:在烧写数据中每隔128字节插入烧写指令
Hex2boot工具转换后的efm8文件,其中已经包含了参数设置、擦除、烧写、校验、加密(如有需要)等所有指令。因此,通过bootloader升级时,只需要将efm8文件按顺序将数据传输到MCU,bootloader会根据接收到的数据分析出指令进行对应操作,完成程序升级。如果不使用Hex2boot工具进行文件转换,则需要在桌面系统上设计烧写软件,在传输bin文件数据时自行添加控制指令。
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 9
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【技术】基于 AN945对EFM8系列MCU BootLoader使用说明的分析和补充
EFM8系列MCU是Silicon Labs公司在C8051Fxxx系列基础上推出的高性能低价格8位单片机。在工业、医疗、智能家居、传感器、通讯等行业已经得到广泛运用。
技术探讨 发布时间 : 2018-02-05
【技术】预安装BOOT的新一代的8位MCU
Silicon labs的EFM8系列MCU是C8051F的升级换代产品。较C8051F不同的是,其在出厂时已经固化好BOOT程序。
技术探讨 发布时间 : 2019-07-11
8位单片机EFM8的烧录器有哪些?
8位单片机EFM8系列采用C2调试接口,常见的烧录器有:1,官方的EFM8 STK、USB Debug Adapter、ToolStick。2,第三方的U-EC2/6、WizPro200EFM(支持EFM8和EFM32)等。
技术问答 发布时间 : 2016-10-25
雅特力携工业控制、电机控制、消费电子、智能家居及汽车电子等领域近百款产品与方案亮相ELEXCON 2022
雅特力作为32位微控制器的创新领导者,携工业控制、电机控制、消费电子、智能家居及汽车电子等五大领域近百款产品与方案亮相此次展会,全面展示了雅特力最新技术与成果,吸引了众多电子行业人士参观交流!
行业资讯 发布时间 : 2022-11-10
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
新产品 发布时间 : 2016-07-11
Silicon Labs(芯科科技) AN945 EFM8 Factory Bootloader 用户指南
型号- EFM8UB2,EFM8UB1,EFM8LB12F64E-B-QFN32,EFM8UB20F32G-A-QFP48R,EFM8UB20F32G,EFM8LB10F16E-A-QFN32,EFM8BB31F16G-A-QFN32,EFM8LB12F64ES0-B-QFN32R,EFM8BB21F16G-B-QSOP24,EFM8UB10F8G,EFM8SB20F32G,EFM8LB10F16,EFM8BB31F64G-B-QFN32,EFM8BB31F64G-B-QFP32R,EFM8LB12F32ES0-B-QFN32,EFM8SB20F32G-A-QFN32R,EFM8LB11F16ES0-B-QFN24,EFM8LB12F64E-B-QFN24,EFM8LB10F16E-B-QFP32,EFM8BB31F64G-B-QFN24,EFM8BB31F32,EFM8SB10F2,EFM8UB20F64G-B-QFN32,EFM8SB10F8,EFM8SB10F4,EFM8SB20F16,EFM8LB11F16E-B-QFN24,EFM8LB12F32ES0-B-QFN24,EFM8LB10F16E-B-QFN24,EFM8SB20F32G-A-QFN32,EFM8UB20F64G-B-QFP48R,EFM8BB31F32I-B-QFP32,EFM8UB10F8,EFM8BB10F2G-A-QFN20,EFM8UB20F32G-A-QFN32,EFM8LB11F16E-B-QSOP24R,EFM8BB10M1069F8GM-A,EFM8LB11F16E-B-QFP32,EFM8LB10F16ES0-B-QFN32,EFM8SB20F32,EFM8BB10F4G-A-QFN20,EFM8BB10F2I-A-QFN20R,EFM8LB12F32E-A-QFN32,EFM8SB10F8G-A-CSP16,EFM8BB10F8G-A-QFN20R,EFM8BB10F8G-A-QSOP24R,EFM8LB10F16E-A-QFN24,EFM8BB22F16G-C-QFN28R,EFM8LB11F16E-B-QFN24R,EFM8LB10F16E-B-QFN32R,EFM8SB20F32G-B-QFN24,EFM8LB11F16ES0-B-QFN32,EFM8LB12F32E-B-QFN24R,EFM8LB12F64E-B-QFP32,EFM8SB20F64G-A-QFP32,EFM8BB10F8I-A-QSOP24,EFM8LB12F64E-A-QFN24,EFM8SB10F8G-A-QFN24R,EFM8LB11F16ES0-B-QFN24R,EFM8UB20F64G,EFM8LB10F16E-A-QFP32,EFM8UB10F8G-C-QFN20R,EFM8BB22F16G-B-QFN28,EFM8BB31F64G-B-QFP32,EFM8SB10F8A-A-QFN20,EFM8BB10F8G-A-SOIC16R,EFM8LB11F32ES0-B-QFN32R,EFM8BB22F16,EFM8SB10F8A-A-QFN24,EFM8BB31F64G-A-QFN24,EFM8LB12F64E-A-QFN32,EFM8SB20F32G-A-QFN24,EFM8SB10F4G-A-QFN20,EFM8LB11F32ES0-B-QFN24,EFM8BB10F2G,EFM8LB1OF16E-B-QFP32,EFM8SB20F16G-A-QFN24R,EFM8BB31F64G-B-QS0P24,EFM8LB11F32,EFM8BB10F2I-A-QFN20,EFM8UB10F16G-B-QFN20,EFM8LB10F16ES0-B-QFN32R,EFM8BB10F8I-A-QFN20R,EFM8BB31F64G-A-QFN32,EFM8UB10F16G-B-QFN28,EFM8LB10F16ES0-B-QFN24,EFM8LB11F32ES0-B-QFN32,EFM8BB22F16I-C-QFN28R,EFM8UB20F32G-A-QFN32R,EFM8SB20F32G-A-QFP32,EFM8LB12F32E-B-QFP32,EFM8BB21F16,EFM8BB31F32G-A-QS0P24R,EFM8BB21F16I-C-QFN20R,EFM8BB21F16I-C-QFN20,EFM8UB20F64G-A-QFP48R,EFM8BB31F64,EFM8LB12F32ES0-B-QFN24R,EFM8SB10F2G-A-QFN20R,EFM8SB10F8G-A-QSOP24R,EFM8BB10F8G-A-SOIC16,EFM8BB10F8G-A-QFN20,EFM8BB31F32G-B-QFP32,EFM8LB11F16E-B-QFN32,EFM8LB10F16E-B-QSOP24,EFM8SB20F64G-A-QFN24,EFM8BB31F32G-A-QFP32,EFM8UB10F16G-C-QFN20R,EFM8SB10F8G-A-QFN24,EFM8LB11F16,EFM8SB10F8G-A-QFN20,EFM8LB11F32E-B-QFN24R,EFM8SB20F64G-A-QFN32,EFM8SB10F8G-A-QFN20R,EFM8LB11F16ES0-B-QFN32R,EFM8BB21F16G-C-QSOP24R,EFM8BB10M1069F8GM,EFM8LB12F32E-B-QSOP24,EFM8BB21F16G-C-QSOP24,EFM8LB12F32,EFM8SB10F8G-A-QSOP24,EFM8UB20F64G-A-QFP32,EFM8BB31F32G-B-QFN24R,EFM8UB10F8G-B-QFN20,EFM8LB11F32ES0-B-QFN24R,EFM8LB12F64E-A-QFN32R,EFM8LB12F64E-A-QFP32,EFM8BB22F16G-B-QFN28R,EFM8UB11F16G-B-QSOP24,EFM8BB31F32G-B-QS0P24,EFM8LB10F16E-A-QFN24R,EFM8UB20F32,EFM8LB12H1077F32EM3-B,EFM8LB10F16ES0-B-QFN24R,EFM8LB11F32E-B-QFN32,EFM8LB12F32E-B-QFN32,EFM8LB12F64ES0-B-QFN32,EFM8SB20F16G-A-QFN24,EFM8UB10F16G-C-QFN28,EFM8BB10F8I-A-QFN20,EFM8BB31F32I-B-QS0P24R,EFM8LB12F32ES0-B-QFN32R,EFM8BB10F2G-A-QFN20R,EFM8UB11F16G-C-QFN24,EFM8UB11F8G-C-QFN24,EFM8UB10F16G-C-QFN20,EFM8BB31F32G-B-QFN32,EFM8SB10F8G-A-CSP16R,EFM8BB1,EFM8BB2,EFM8BB3,EFM8LB12F32E-B-QFN24,EFM8SB10F8G,EFM8LB11F32E-B-QFN24,EFM8LB12F64ES0-B-QFN24,EFM8BB22F16G-C-QFN28,EFM8BB31F32I-B-QFP32R,EFM8BB31F64G-A-QS0P24,EFM8UB20F32G-B-QFN32,EFM8BB31F64G,EFM8SB20F32G-QFN32,EFM8SB10F2G-A-QFN20,EFM8BB10F8G-QFN20,EFM8BB31F32I-B-QS0P24,EFM8UB10F8G-C-QFN20,EFM8BB31F32G-B-QFN24,EFM8BB10F4G,EFM8BB21F16G-C-QFN20,EFM8BB10F2G-QFN20,EFM8SB20F64,EFM8SB1,EFM8LB12F64ES0-B-QFN24R,EFM8BB10M1069F8GM-AR,EFM8SB2,EFM8BB21F16G-B-QFN20,EFM8SB20F32G-A-QFN24R,EFM8SB20F16G-B-QFN24,EFM8UB11F16,EFM8UB20F64G-A-QFN32,EFM8LB11F16E-B-QSOP24,EFM8UB11F16G,EFM8SB10F4G-A-QFN20R,EFM8BB10F4G-A-QFN20R,EFM8LB10F16E-B-QFN32,EFM8UB20F32G-B-QFP48,EFM8LB12H1077F32EM3-BR,EFM8LB10F16E-B-QFP32R,EFM8UB20F64G-B-QFP32,EFM8UB20F64G-A-QFP48,EFM8BB10F2,EFM8SB10F8G-CSP16,EFM8LB11F32E-B-QFP32,EFM8BB10F4,EFM8BB10F8,EFM8BB10F8G-A-QSOP24,EFM8LB11F32E-B-QSOP24,EFM8UB20F64,EFM8BB22F16I-C-QFN28,EFM8BB31F64G-B-QFN24R,EFM8LB1,EFM8LB10F16E-A-QSOP24,EFM8UB20F32G-A-QFP32,EFM8SB10F2G,EFM8LB12F64E-B-QSOP24,EFM8UB11F16G-C-QSOP24,EFM8SB10F4G,EFM8BB21F16G-C-QFN20R,EFM8UB20F64G-B-QFP48,EFM8BB10F8G-QSOP24,EFM8UB10F16G,EFM8LB10F16E-B-QFN24R,EFM8UB20F32G-B-QFP32,EFM8LB12F64,EFM8UB10F16,EFM8BB10F8G,EFM8LB12F32E-B-QFN32R,EFM8BB31F64G-A-QSOP24
【经验】EFM8 MCU评估板的JLINK口当UART口使用
Silicon Labs 新系列的EFM8 MCU评估板在 EFM8 STK板提供了一个虚拟COM端口(BC),可以省去USB转串口的设备。
设计经验 发布时间 : 2019-07-16
8位单片机EFM8系列中芯片上的UID是什么?
UID是芯片中新加的全球唯一ID,即每个芯片的ID都是不一样的,EFM8系列的MCU上都包含此ID。有两类获取UID的方式,一种通过读取RAM的特定地址获得,一种通过读取Flash的特定地址获得。在早期引入此ID的MCU上(比如EFM8BB1/SB1/SB2)这个ID为32位,在芯片复位时(PC指针被复位至0之前)被复制至RAM中特定位置,用户程序可以读取其值。此位置的RAM仍然可以由用户使用。需要注意的是如果此位置被编译器分配了变量,那么当函数执行至main()时此位置的内容会被初始化代码覆盖。EFM8UB2的UID也是此类,但其位数为128位。在新的EFM8系列MCU上(比如EFM8BB3/LB1/UB1),UID位数为128位,存储在Flash上。
技术问答 发布时间 : 2017-05-05
单片机EFM8的烧录工具是什么?
Silicon Labs的EFM8MCU的内核还是C8051,通过C2CLK和C2D两根线调试和下载程序,EFM8 Starter Kit支持调试和下载目标板,也可以选择Silicon Labs的USB DEBUG ADAPTER。
技术问答 发布时间 : 2016-10-25
8位单片机EFM8在线烧录时,使用烧录软件Flash Programming Utility每次更换芯片都需要重新连接,请问是否有不需要重新连接的在线烧录软件?
除了Flash Programming Utility烧录软件,Silicon Labs还提供MCUProductionProgrammer烧录软件,后者更换芯片时无需再重新连接。
技术问答 发布时间 : 2016-10-25
主控MCU通过C2接口对EFM8BB10F8G MCU的Flash存储器进行读写操作,存在概率性失败。从Flash存储器中读数据也是异常,请问这时什么原因导致的?
检查程序中的中断设置,发现是有一处读操作没有关闭中断导致的,将中断关闭后,对EFM8BB10F8G MCU的Flash进行读、写,存在概率性失败的情况得到解决。因为主控MCU用的是ARM芯片,运行的是linux操作系统,所以主控MCU通过C2接口对EFM8BB10F8G MCU的Flash存储器进行读写操作的函数也是以驱动程序的形式存在的,并且系统中各种软硬中断也比较频繁,因此相对时序控制上也需要更加严格,才能保证可靠的读写操作。
技术问答 发布时间 : 2016-10-25
Silicon Labs(芯科科技) AN295 USB音频类源代码参考工程
型号- EFM8UB2,EFM8UB1,C8051F321-GMR,C8051F34D-GQ,C8051F381-GQR,C8051F341-GQ,EFM8UB20F32G-A-QFP48R,C8051F387-GM,EFM8UB20F32G,C8051F320-GQR,C8051F327,C8051F326,C8051F321-GM,EFM8UB10F8G,EFM8UB20F64G-A-QFP32,C8051F321,C8051F320,C8051F38X,EFM8UB10F8G-B-QFN20,C8051F388-GQR,C8051F384-GQ,C8051F345-GQR,C8051F340-GQR,EFM8UB11F16G-B-QSOP24,C8051F326-GM,C8051F347-GQ,EFM8UB20F64G-B-QFN32,EFM8UB20F32,C8051F347-GQR,C8051F34B-GQ,C8051F326-GMR,C8051F342-GQR,C8051F34A,C8051F34C,C8051F385-GM,EFM8UB20F64G-B-QFP48R,C8051F34B,C8051F343-GQ,C8051F34D,C8051F349,EFM8UB10F16G-C-QFN28,C8051F348,C8051F32X,EFM8UB10F8,EFM8UB11F16G-C-QFN24,C8051F341,EFM8UB11F8G-C-QFN24,EFM8UB10F16G-C-QFN20,C8051F340,EFM8UB20F32G-A-QFN32,C8051F343,C8051F342,C8051F345,C8051F344,C8051F347,C8051F346,C8051F382-GM,C8051F340-GQ,EFM8UB20F32G-B-QFN32,C8051F345-GQ,C8051F320-GQ,EFM8UB10F8G-C-QFN20,C8051F381-GMR,C8051F383-GM,EFM8UB20F64G,C8051F348-GQ,C8051F383-GQ,C8051F34X,C8051F38C-GQ,EFM8UB10F8G-C-QFN20R,C8051F380-GQR,EFM8UB11F16,C8051F38C-GM,EFM8UB20F64G-A-QFN32,EFM8UB11F16G,C8051F34C-GQ,C8051F38B-GQR,C8051F381,C8051F380,C8051F383,C8051F382,EFM8UB20F32G-B-QFP48,C8051F342-GQ,C8051F380-GQ,C8051F389-GQR,C8051F342-GM,EFM8UB20F64G-B-QFP32,EFM8UB10F16G-B-QFN20,EFM8UB10F16G-B-QFN28,C8051F381-GM,EFM8UB20F32G-A-QFN32R,EFM8UB20F64G-A-QFP48,EFM8UB20F64G-A-QFP48R,C8051F381-GQ,C8051F327-GM,C8051F346-GQ,C8051F38A,EFM8UB20F64,C8051F38C,C8051F38B,C8051F38A-GQR,C8051F385,C8051F384,C8051F387,C8051F386,EFM8UB20F32G-A-QFP32,C8051F389,C8051F327-GMR,C8051F388,EFM8UB11F16G-C-QSOP24,C8051F34A-GM,EFM8UB20F64G-B-QFP48,C8051F386-GM,C8051F344-GQ,C8051F349-GQ,EFM8UB10F16G-C-QFN20R,EFM8UB10F16G,EFM8UB20F32G-B-QFP32,EFM8UB10F16
使用J-link调试工具调试EFM8系列8bit单片机时,Jlink和EFM8单片机之间需要连接哪些接口线?
在使用JLink调试工具调试EFM8系列单片机时,使用到的调试接口是C2接口,正确的连线如下:1、JLink的pin1引脚VTARGET连接到目标板的VDD;2、JLink的pin2引脚C2D连接到目标板的C2D引脚;3、JLink的pin4引脚C2CK连接到目标板的C2CK;4、JLink的GND引脚连接到目标板的GND;5、目标板在调试的时候,VDD引脚需要上电。
技术问答 发布时间 : 2016-10-25
使用Simplicity studio建立EFM8工程,如何使用Keil C51进行编译连接?
通过以下步骤配置设置,即可使用Keil C51编译Simplicity Studio建立的EFM8工程。 1)打开Keil C51开发环境,版本能够选择EFM8器件型号,创建一个新的空工程(不要包含起始文件startup.a51),路径指向Simplicity studio已经建立的工程根目录下; 2)在Projiect视图框,新建src和inc两个Group文件夹。按照工程路径添加src和inc路径下的汇编起始文件,C源代码文件,以及头文件; 3)打开Options for Target /C51/Include Paths编辑框,添加以下路径:C:\Keil_v5\C51\INC\SiLABS\shared\Si8051Base;.\inc;.\src。(重新定义Keil C51的安装路径)
技术问答 发布时间 : 2016-12-26
【经验】如何在Simplicity IDE中创建汇编工程?
在Silicon Labs新出的开发环境Simplicity Studio 环境下,我们看到关于EFM8系列的MCU提供的范例程序都是C语言的,但有些时候我们需要用汇编语言来写程序,主要是代码精简,运行效率高。本文以EFM8BB10F8G-A-QFN20举例介绍汇编工程建立的过程
设计经验 发布时间 : 2018-02-28
电子商城
现货市场
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
定制水冷板尺寸30*30mm~1000*1000 mm,厚度1mm~50mm,散热能力最高50KW,承压可达3MPA;液冷机箱散热能力达500W~100KW。项目单次采购额需满足1万元以上,或年需求5万元以上。
提交需求>
查看全部2条回复