【技术】基于 AN945对EFM8系列MCU BootLoader使用说明的分析和补充
EFM8系列MCU是SILICON LABS公司在C8051Fxxx系列基础上推出的高性能低价格8位单片机。在工业、医疗、智能家居、传感器、通讯等行业已经得到广泛运用。MCU在产品的应用过程中,往往需要具有在线升级的功能。针对这一需求,Silicon Labs公司提供全套的解决方案。
Silicon Labs公司提供的bootloader在文档AN945中有详细的使用说明。在使用之前,需要先熟悉该文档内容。本文根据AN945内容进行分析和补充。
Silicon Labs公司的bootloader提供UART、SMBUS、USB三种升级接口。其中UART接口模式的bootloader支持所有的EFM8系列MCU。SMBUS接口主要针对EFM8LB系列的特殊运用。USB接口适用于带USB接口的EFM8UB系列。出厂时,除了部分EFM8LB系列MCU带有SMBUS模式的bootloader之外,其余MCU都需要通过Flash Programer工具将bootloader.hex文件烧入MCU中。
Bootloader代码存放在Flash的末尾,代码大小不超过2KB。UART/SMBUS的代码大概只有512Byte,USB的代码大概为1.5KB。应用程序仍然从0地址开始,所以设计应用程序时,不需要做特殊设置处理。
Silicon Labs公司提供efm8load.exe和hex2boot.exe两个在windows下的MSDOS环境运行的软件,用于bootloader升级。由于bootloader程序不能解析HEX文件,所以需要hex2boot.exe软件将应用程序HEX文件转换为botloader升级使用的efm8后缀名的烧写文件。efm8load.exe软件用于PC到MCU之间数据传输,将efm8文件下载到MCU。Efm8load.exe软件有提供代码,采用Python语言设计,在"./EFM8_bootloader/AN945SW/Tools/Source"目录下,可以在PC端软件开发时作为参考。PC端设计升级软件,只需要将efm8后缀的文件按顺序传输到MCU,不需要额外添加控制指令(efm8文件类似于bin文件)。程序升级步骤如图1。
图1:通过bootloader升级程序流程
MCU复位后,bootloader会判断0x0000地址是否为0xFF,即判断是否存在APP程序,如果为0xFF,则进入bootloader,等待烧写APP程序。升级程序时,会先将程序的0x0000地址数据修改为0xFF,烧写完成后,进行数据CRC校验,校验通过后,再将0x0000地址数据修改为0x02。如果出现程序升级错误,由于0x0000地址数据为0xFF,复位后可直接进入bootloader,进行重新升级。不会产生升级失败后不能进入bootloader的风险。
在进入APP程序后,如果需要唤醒bootloader进行升级。可以设置R0=0xA5,再启动软件复位功能,复位后将进入bootloader等待升级。
图2:在程序中进入bootloader
该方案还提供外部引脚(C2D引脚,48PIN封装除外)控制方式进入bootloader。如果需要进入bootloader,只需要将C2D引脚拉低后复位MCU,MCU将绕过APP,直接进入bootloader程序。
MCU是运行bootloader还是APP程序,是在bootloader源代码的boot_startup.asm文件中进行设置,如有需要,可以自定义设置。代码如下:
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 7
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(7)
-
小伟 Lv7. 资深专家 2018-07-30不错
-
terrydl Lv9. 科学家 2018-07-19不错,学习了
-
mark-chen Lv6. 高级专家 2018-07-14学习
-
宇宙星神 Lv6. 高级专家 2018-07-04学习了
-
zizhangshu Lv7. 资深专家 2018-06-10学习
-
OutstandingEngineer Lv6. 高级专家 2018-04-23bootloader在程序升级上很重要,这个说的不错。
-
用户18396822 Lv8 2018-02-17学习了
相关推荐
【技术】 EFM8系列MCU BootLoader之HEX2BOOT工具解析
EFM8系列MCU是Silicon Labs公司在C8051Fxxx系列基础上推出的高性能低价格8位单片机。在工业、医疗、智能家居、传感器、通讯等行业已经得到广泛运用。
技术探讨 发布时间 : 2018-02-06
【技术】预安装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万元以上。
提交需求>
登录 | 立即注册
提交评论