【经验】EFM8 出厂预置引导加载程序在生产环境中设备编程,或现场更新的操作经验
SILICON LABS的8位MCU EFM8 设备在出厂时带有引导加载程序。如下图所示,EFM8 引导加载程序工具将读取映像文件(十六进制或二进制)并将其转换为一系列引导加载程序命令。这些命令被格式化为引导记录,这些记录存储在文件中或直接传输到 EFM8 设备。无论是保存到文件还是通过引导加载程序传输发送,都使用相同的二进制记录格式。引导加载程序命令被设计为不返回任何数据,它们包含执行命令和确定成功或失败所需的所有信息。要实现嵌入式主机,请从文件中读取每条记录,将其发送到EFM8设备,然后等待确认。因可以在生产环境中对设备编程,或者在现场更新为引导记录文件是二进制文件,所以它对映像增加了很少的开销,并且易于嵌入。EFM8 引导加载程序。

所有设备都预编程了UART(~500字节),SMBus(~500字节)或USB HID(~1.5 kB)引导加载程序。此引导加载程序驻留在代码安全页中。如果它太大而不适合驻留在代码安全页,它会占用代码闪存的最后几页。如果不需要,可以删除它。
锁定字节前的字节是引导加载程序签名字节。将此字节设置为值0xA5表示系统中存在引导加载程序。此位置中的任何其他值表示引导加载程序不在闪存中。
当存在引导加载程序时,在任何情况下复位后设备将跳转到引导加载程序向量,从而允许引导加载程序运行。然后,引导加载程序确定设备是应该保持引导加载模式还是跳转到位于0x0000的复位向量。当引导加载程序不存在时,设备将在复位后跳转到复位向量0x0000。
通信接口
因为引导加载程序无法访问第0页的中断向量,故引导加载程序通信接口采用轮询的方法。通信使用自定义二进制协议,该协议在所有通信接口中都是通用的。在PC端,可通过USB或者串口对出厂具有预置引导加载程序的 EFM8 设备进行更新。如果采用嵌入式主机对 EFM8 设备进行更新,除了可使用 USB 和串口之外,还可以使用SMBus接口。
进入引导加载模式
在任何情况下复位时,如果闪存地址0x0000为0xFF(即未编程复位向量的第一个字节),则引导加载程序将启动。这可确保新的或已擦除的设备启动引导加载程序以进行生产编程。为了实现稳健性,引导加载程序首先擦除闪存页0并最后写入闪存地址0x0000。这可确保如果先前的引导加载操作未成功完成,则设备将在引导加载程序模式下重新启动。
要按需启动引导加载程序,应用程序固件可以在Bank 0(数据地址0x00)的R0中设置签名值0xA5,然后启动设备的软件复位。如果引导加载程序在软件重置后看到R0中带有签名值,它将启动引导加载程序执行而不是跳转到应用程序。
为了在应用程序损坏时提供故障安全操作,在上电复位(POR)或 引脚保持低电平超过50μs导致引脚复位时,则引导加载程序将启动。此引脚也可以通过查看引导加载程序源码中的efm8_device.h文件找到。没有选项可以禁用此进入方法。
存储器
通过擦除设备,可以恢复所有引导加载程序内存以供应用程序使用。唯一的例外是Bootloader签名字节,如果引导加载程序不存在,则不应将其编程为0xA5。设备出厂时闪存已解锁。引导加载程序提供了一种写入锁定字节和引导加载程序签名字节的方法,可用于分别锁定闪存和禁用引导加载程序。可以通过向引导加载程序签名字节写入0x00来禁用引导加载程序。通过这样做,MCU直接跳转到应用程序,不再调用引导加载程序。因此,进入引导加载程序方法也被禁用。
安全性
此引导加载程序设计为小巧且易于使用。它没有任何安全属性或功能。从安全角度来看,引导加载程序和C2调试接口都应被视为易受攻击。例如,任一接口的闪存读取或验证功能都可能受到损害,或者闪存写入功能可用于注入“微小闪存转储”例程以提取代码内容。如果需要考虑代码安全性,则在将设备暴露给不受信任的环境之前,应明确禁用这两个接口。
设备出厂时已启用引导加载程序且闪存已解锁。引导加载程序支持两个安全控制:一个用于编程闪存中的“锁定字节”,另一个用于编程“引导加载程序签名”字节。锁定字节可用于保护Flash内容不被C2调试接口读取。锁定字节的值对引导加载程序的行为或功能没有影响。C2调试接口将引导加载程序视为“普通”用户代码。
将非0xA5的值写入“引导加载程序签名”字节将禁用引导加载程序。发生这种情况后,无法访问任何引导加载程序命令,并且设备无法再从设备重置或应用程序命令进入引导加载模式。只有通过C2调试接口执行器件擦除,“锁定字节”和“引导加载程序签名”字节才能重置为0xFF。
引导加载程序位于闪存的“锁定字节”页,该页具有一些独特的属性。设备上运行的代码可以写入“锁定字节”页,但无法删除该页。这意味着引导加载程序无法自行更新,并且无法通过设备上运行的任何代码进行更新。但是,引导加载程序可以自行修改,也可以通过其他代码进行修改。更新引导加载程序或修复损坏的引导加载程序只能通过C2调试接口完成。
大于一个闪存页面(例如USB)的引导加载程序将占用用户闪存的最顶层页面。非锁定字节页面可以由引导加载程序或设备上运行的其他代码擦除。
AN945SW 软件包
注意:本文档中AN945SW封装的描述适用于AN945SW Revision 0.3及更新版本,不一定适用于之前的版本。软件版本号在AN945SW软件包的README.txt文件中指定。
AN945SW软件包包含预编译的引导加载程序和应用程序,以及用于使用EFM8引导加载程序的实用程序。AN945SW软件包包含三个子目录:
• ProductionDeviceHexFiles(包含所有生产EFM8设备的预编译引导加载程序十六进制文件)
• StarterKitHexFiles(包含用于EFM8入门套件的预编译引导加载程序和应用程序十六进制文件)
• Tools(包含用于处理EFM8引导加载程序的实用程序和Python脚本)
提供预编译的引导加载程序和应用程序文件,以便用户可以快速下载和评估特定设备的引导加载程序和应用程序,在需要时也可以恢复原始引导加载程序到设备。引导加载程序和示例应用程序的项目和源文件随Simplicity Studio一起安装。
- |
- +1 赞 0
- 收藏
- 评论 2
本文由zxl翻译自Silicon Labs,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【产品】SILICON LABS EFM8系列 8 BIT MCU
系列型号: EFM8BB10F8G-A-QSOP24R; EFM8UB10F16G-C-QFN20R; EFM8SB20F16G-B-QFN24R; EFM8SB10F8G-A-QFN24R; EFM8BB10F8G-A-SOIC16R; EFM8LB11F16ES1-C-QFN24R; EFM8SB20F64G-B-QFN32R; EFM8BB21F16I-C-QFN20R; EFM8BB21F16G-C-QFN20R; EFM8BB10F8G-A-QFN20R; EFM8BB31F16A-D-4QFN24R; EFM8BB10F8A-A-QFN20R; EFM8BB10F8I-A-QFN20R; EFM8BB31F32G-D-QFN24R; EFM8UB20F32G-B-QFP48R; EFM8BB21F16G-C-QSOP24R; EFM8UB11F16G-C-QFN24; EFM8SB10F8G-A-QFN24; EFM8SB10F8G-A-QFN20; EFM8SB10F2G-A-QFN20; EFM8BB50F8I-A-SOIC16R; EFM8BB50F8I-A-SOIC16; EFM8BB50F8I-A-QFN16; EFM8BB50F8I-A-QFN16R; EFM8BB50F8I-A-QFN12; EFM8BB50F4I-A-QFN16; EFM8BB50F4I-A-QFN16R; EFM8BB50F4I-A-SOIC16; EFM8BB50F4I-A-QFN12R; EFM8BB50F16G-A-SOIC16R; EFM8BB50F4I-A-QFN12; EFM8BB50F16G-A-QFN16; EFM8BB50F16G-A-SOIC16; EFM8BB50F8G-A-SOIC16; EFM8BB50F16G-A-QFN16R; EFM8BB50F8G-A-SOIC16R; EFM8BB50F8G-A-QFN16R; EFM8BB50F4G-A-SOIC16R; EFM8BB50F8G-A-QFN12; EFM8BB50F4G-A-SOIC16; EFM8BB50F4G-A-QFN16R; EFM8BB50F4G-A-QFN16; EFM8BB50F16I-A-QFN12R; EFM8BB50F16I-A-SOIC16R; EFM8BB50F16I-A-SOIC16; EFM8BB50F16I-A-QFN16; EFM8BB50F16I-A-QFN16R; EFM8BB50F16I-A-QFN12; EFM8BB50F4G-A-QFN12; EFM8BB50F4G-A-QFN12R; EFM8BB50F4I-A-SOIC16R; EFM8BB31F16G-D-QFN32R; EFM8LB12F64E-C-QFP32R; EFM8LB12F64E-C-QFN32; EFM8LB12F64E-C-QFN32R; EFM8LB12F64ES0-C-QFN24; EFM8LB12F32E-C-QFP32; EFM8LB12F32E-C-QFN24; EFM8LB12F32E-C-QFN32; EFM8LB12F32E-C-QFN32R; EFM8LB12F64ES1-C-QFN32R; EFM8LB12F64ES1-C-QFN24R; EFM8LB12F32ES1-C-QFN24R; EFM8LB12F32E-C-QSOP24R; EFM8LB12F32E-C-QFP32R; EFM8LB12F32E-C-QFN24R; EFM8LB12F64ES0-C-QFN32R; EFM8LB12F64E-C-QFN24R; EFM8LB12F64ES0-C-QFN24R; EFM8LB10F16ES1-C-QFN24R; EFM8LB12F32ES0-C-QFN32R; EFM8LB12F32ES0-C-QFN24R; EFM8BB21F16I-C-QSOP24R; EFM8LB11F16E-A-QFN24; EFM8BB31F16G-A-QSOP24; EFM8BB21F16A-C-QFN20R; EFM8BB22F16I-C-QFN28R; EFM8BB10F2G-A-QFN20R; EFM8SB20F32G-B-QFN24R; EFM8BB10F4G-A-QFN20R; EFM8SB10F8G-A-QFN20R; EFM8SB10F4G-A-QFN20R; EFM8BB22F16G-C-QFN28R; EFM8LB12F64E-A-QFP32; EFM8UB20F64G-B-QFP48R; EFM8BB10M1069F8GM-AR; EFM8LB12M1077F32EM3-B; EFM8LB12M1077F32EM3-BR; EFM8BB10F2I-A-QFN20R; EFM8BB10F4I-A-QFN20R; EFM8BB10F8I-A-QSOP24R; EFM8BB10F8I-A-SOIC16R; EFM8UB11F16G-C-QFN24R; EFM8BB22F16A-C-QFN28R; EFM8BB10F4A-A-QFN20R; EFM8BB10F2A-A-QFN20R
EFM8 Universal Bee 系列 EFM8UB3 数据表
2018/03/03 - 数据手册 EFM8UB3 是一款小型多用途 8 位微控制器,具备 USB 功能集,适用于空间受限的 USB 应用。它采用高效的 8051 内核和精密模拟技术,具有低功耗、高可靠性的特点。
SILICON LABS - 带有 USB 功能集的小型多用途 8 位微控制器,EFM8UB3,EFM8,加密狗,USB I/O 控制,USB TYPE-C 转换器,扩展坞/USB 集线器,消费电子,USB TYPE-C 布告牌/备用模式
公告#1509011
9/1/2015 - 产品变更通知及停产信息 Silicon Labs发布EFM8系列微控制器修订B的错误更正公告,包括EFM8BB1、EFM8SB1、EFM8SB2、EFM8UB2型号。公告中提到新增“引导加载程序签名字节”以支持工厂预编程引导加载程序,并详细说明了如何使用该字节。同时,公告列出了受影响的多个产品型号,并提醒用户不要将特定值写入该字节位置。
SILICON LABS - EFM8
物联网MCU选型指南-业界领先的低功耗、高性能微控制器
2026-05-27 - 器件选型 本文介绍Silicon Labs的8位和32位MCU产品家族,重点讲解EFM32和EFM8系列在低功耗、高性能及安全性方面的优势,涵盖物联网、工业及消费电子等应用。
SILICON LABS 8-bit Microcontroller选型表
选型表 - SILICON LABS SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
|
产品型号
|
品类
|
SPI
|
Vdd max(V)
|
Temp Sensor
|
Comparators
|
Debug Interface
|
Dig I/O Pins
|
I2C
|
RAM (kB)
|
ADC 1
|
Package Size (mm)
|
Internal Osc.
|
EMIF
|
USB
|
Timers (16-bit)
|
UART
|
Frequency(MHz)
|
Vdd min(V)
|
Package Type
|
LIN
|
CAN
|
PCA Channels
|
系列
|
5 Volt Tolerant
|
VREF
|
Flash (kB)
|
|
EFM8UB10F16G-QFN20
|
8位MCU
|
1
|
5.25
|
Temp Sensor
|
2
|
C2
|
13
|
2
|
2
|
12-bit, 11-ch.
|
3x3
|
±1.5
|
0
|
USB
|
5
|
2
|
48
|
2.2
|
QFN20
|
0
|
0
|
3
|
EFM8 Universal
|
5 Volt Tolerant
|
VREF
|
16
|
芯科科技的8位和32位MCU助力开发极致省电并符合未来趋势应用的无线设备
2025-02-20 - 器件选型 微控制器(MCU)是物联网的核心,开发人员如何面向其应用需求选择最合适的设备,将是在产品开发过程中的一个重大决策。但是,您如何知道哪款处理器合适呢?本篇物联网MCU选型指南深入介绍Silicon Labs(芯科科技)的8位和32位MCU产品家族,助您顺利完成决策过程。
【经验】芯科科技8bit单片机C2通信接口烧录指南
2021-12-30 - 设计经验 本文主要介绍芯科科技的(Silicon Labs)8bit单片机,调试烧录过程中遇到的一些不稳定问题,以及工厂生产批次不良率分析处理。
【经验】解析芯科科技8bit MCU EFM8BB5如何使用KEIL开发环境调试烧录
2021-11-04 - 设计经验 大多使用C8051平台开发的用户都在使用KEIL或IAR开发工具,学习新的SSV5集成开发平台,会投入较多精力和使用习惯问题,不利于产品的快速研发和迭代。故为满足广大用户的需求,本文介绍芯科科技8bit MCU EFM8BB5如何使用KEIL开发环境调试烧录。
【经验】读取低功耗8位MCU EFM8SB内部FLASH的方法
2021-08-21 - 设计经验 在使用Silicon Labs的低功耗8位MCU EFM8SB时有时需要从MCU内部将FLASH的内容读出做反向分析或保存代码,但多数人不了解使用什么工具去实现这个功能。本文介绍读取EFM8SB内部FLASH的方法。
【经验】8位MCU EFM8系列内部BOOTLOADER的空间分配
2021-08-17 - 设计经验 本文介绍Silicon Labs的8位MCUEFM8系列内部BOOTLOADER占用FLASH空间的情况,及程序中对FLASH空间地址的分配。
【经验】如何使用Silicon LabsSLSTK2030调试开发板外的EFM8系列MCU
2021-08-12 - 设计经验 EFM8系列是Silicon Labs推出的集成度高、性能强、接口配置灵活的8位单片机。SLSTK2030开发板通过文章介绍的方法配置,可以实现开发板外的EFM8单片机的调试,免除购买单独调试器的需求。
【经验】如何在Simplicity Studio的安装位置获取全部EFM8的Demo程序
2021-07-14 - 设计经验 Simplicity Studio是Silicon Labs为其产品开发的IDE,在其中为EFM8系列的MCU提供了完备的Demo程序,为了能从Simplicity Studio中快速导出Demo程序。本文将分享如何在Simplicity Studio安装位置一次性获取所有的EFM8 Demo 程序。
【经验】使用CP2112-EK对EFM8BB21F16G进行BootLoader程序升级的步骤及注意事项
2021-06-19 - 设计经验 使用efm8load.exe通过SMBus对MCU进行程序升级时,需要使用到USB转SMBus工具CP2112-EK。本文将介绍使用CP2112-EK对芯科科技MCU EFM8BB21F16进行程序升级的详细步骤以及注意事项。
【经验】如何修改EFM8系列单片机BOOTLOAD起始地址?
2021-05-31 - 设计经验 Silicon Labs的8位单片机EFM8系列中,引导装载程序是储存在闪存内的,因此在产品开发时,为了让整个闪存空间便于用户应用,则需要对相应Bootload进行地址更改。本文以EFM8BB10F8G为例来修改Bootload的初始地址。
【经验】如何解决8位单片机EFM8BB21F16G串口通信不正常问题?
2021-05-19 - 设计经验 本文以Silicon Labs的8位单片机EFM8BB21F16G为例,介绍如何通过软件程序置位中断标志位,通过串口中断方式来解决清除前如果有数据到来会引起数据丢失并无法产生中断的方法。
电子商城
服务市场
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量:1000 提交需求>
可定制单位/双位/三位/四位LED数码管的尺寸/位数/发光颜色等性能参数,每段亮度0.8~30mcd,主波长470~640nm,电压2~10.2V。
最小起订量:1000 提交需求>
登录 | 立即注册
提交评论