【经验】简述32位MCU EFM32/EZR32的USB-UART引导加载程序的编程、验证、安全命令的使用
引导加载程序使用户能够通过UART或USB CDC类虚拟UART对EFM32或EZR32进行编程,而无需调试器,故本文旨在指导用户如何在SILICON LABS 32位MCU EFM32或EZR32器件的使用中去引导加载程序。除了引导用户应用程序之外,它还提供了破坏性写入模式,允许用户覆盖引导加载程序,以便整个闪存都用于用户应用程序。还可以通过CRC校验来验证存储内容,并且可以启用Debug锁定来保护IP。由于引导加载程序通过已建立的XMODEM-CRC协议进行数据上传,因此可以使用任何串行终端程序与引导加载程序进行通信。USB/UART引导加载程序在带有USB外设的所有EFM32或EZR32器件中进行预编程。虽然EFM32HG器件只有8 KB的RAM,但是引导加载程序经过了大量优化,适合这些设备。
所有带USB外设的32位MCU EFM32或EZR32器件都预先设有USB/UART引导加载程序,其中可以实现以下功能:
1)可以与客户应用程序一起保留以支持现场升级,也可以被覆盖以最大化可用的闪存空间;
2)使用基于USB的虚拟或物理UART接口进行通信;
3)支持单字符命令:编程(上传/覆盖),验证(计算校验和),安全(写保护,锁定调试端口)等;
4)使用XMODEMCRC协议进行文件传输;
5) DBG_SWCLK拉高时,在复位后调用。
1.启动Bootloader
1.1进入Bootloader模式
要进入引导加载程序,必须将DBG_SWCLK拉高并且必须复位EFM32或EZR32。如果DBG_SWCLK为低,则引导加载程序将检查闪存中的应用程序。如果应用程序空间包含有效的应用程序,则引导加载程序将运行此应用程序。如果没有有效的应用程序,引导加载程序将在EM2中休眠以节省电量,同时定期检查引导加载程序引脚。而DBG_SWCLK具有内部下拉,如果保持此引脚不连接不会调用引导加载程序。
1.2初始化与Bootloader的通信
通过在物理UART接口(启动自动波特算法)上传输大写“U”或通过枚举USB CDC虚拟UART设备来初始化Bootloader通信。无论哪个先发生,都将控制引导加载程序操作的其余部分,引导加载程序通常使用GPIO引脚的E11和E10进行UART通信。UART数据结构包含1个停止位和8个数据位,无奇偶校验位。为了启用各种不同的终端仿真器(如果使用USB串行端口则不适用),引导加载程序使用自动波特率算法。在物理UART上接收到大写“U”时,将测量主机波特率并相应地调整UART波特率,自动波特率算法适用于2400到115200范围内的波特率。
图1.1 在Tera Term中配置UART串行端口以进行引导加载程序通信
一旦引导加载程序完成了自动波特率调整,它将打印引导加载程序版本和芯片唯一ID: BOOTLOADER版本x.yy,芯片ID F08AB6000B153525。如果使用USB-UART,您将看不到版本字符串,发出命令[i]以检查版本信息。如果自动波特率算法和USB枚举都没有在30秒内完成,芯片将被重置。如果使用Windows主机并且要使用USB CDC虚拟UART,则必须安装USB CDC设备驱动程序。通过打开设备管理器,在设备上单击并选择[更新驱动程序软件],手动安装,就可以轻松完成。大多数EFM32或EZR32器件中的引导加载程序配置为使用引脚位置0中的外设USART0作为物理UART接口,但某些器件没有USART0外设或引脚位置0选项。由于这些原因或其他原因,EFM32HG器件中的引导加载程序使用引脚位置3中的LEUART0,而EZR32LG器件中的引导加载程序使用引脚位置2中的USART1。有关这些信号的引脚位置,请参见器件数据手册。
1.3命令行界面
命令行界面使用单个字母字符作为命令,支持多种命令,具体命令请参考文末链接。需注意,使用USB CDC虚拟UART时,[b]和[r]命令将在实际执行命令之前延迟7秒,前5秒允许操作员断开UART连接,然后引导加载程序执行USB软断开连接,然后再等待2秒钟,以便主机操作系统有时间拆除USB CDC驱动程序的堆栈。
2.上传应用程序
要将应用程序上传到EFM32或EZR32,必须使用[u]或[d]命令。按键后,使用终端软件内置支持XMODEM-CRC传输文件,可以使用任何终端软件,只要它支持XMODEMCRC传输即可。下图显示了使用Tera Term中的内置传输支持传输文件的示例。
图2.1 在Windows 7上使用带有Tera Term的XMODEM-CRC传输文件
2.1创建与Bootloader一起使用的应用程序
使用引导加载程序上传应用程序有两种可能性:破坏性和定期上传。破坏性上传将覆盖引导加载程序。在这种情况下,创建应用程序不需要其他步骤;定期上传会保留引导加载程序,这允许使用引导加载程序进行将来的升级。对于使用引导加载程序的应用程序,必须使用起始地址0x4000创建它们。原因是引导加载程序本身占据了该地址下方的闪存区域。要实现此目的,必须从默认的闪存起始地址0x00更改链接器文件。
2.1.1使用IAR创建应用程序
要使用IAR创建应用程序,请使用项目包含的链接器文件。这将为二进制文件设置正确的起始地址,在项目选项菜单中,选择[Output Converter]和[Generate additional output],再选择[二进制]输出格式,生成的二进制文件可与UART Bootloader一起使用。
2.1.2使用Keil uVision 4 / MDK-ARM创建应用程序
要使用Keil uVision 4 / MDK-ARM创建应用程序,必须先更改项目的目标设置。在选项对话框中,将[IROM1]更改为[0x4000]的开头并从size字段中减去[0x4000]。要生成二进制输出文件,可以使用命令行实用程序fromelf.exe,该实用程序通常安装在C:\ Keil \ ARM \ BIN40 \ fromelf.exe下。
图2.2 设置Keil uVision 4 / MDK-ARM
2.1.3使用Simplicity Studio创建应用程序
要使用Simplicity Studio创建应用程序,请更改项目的内存布局设置,在[属性]> [C / C ++构建]> [设置]> [工具设置]> [存储器布局]对话框中:
1)选中[覆盖默认闪存选项]。
2)将[ORIGIN]更改为[0x4000]的开头。
3)从长度字段中减去[0x4000]。
图2.3 设置Simplicity Studio
这样,应用程序将在内存中的引导加载程序之后启动。
2.2非破坏性应用程序上传
[u]命令将上传应用程序而不覆盖引导加载程序本身。使用终端软件将应用程序二进制文件传输到芯片,完成上传后,您可能希望通过计算上传二进制文件的CRC-16来验证正确性,这可以通过验证应用程序和校验命令来实现。要从引导加载程序启动应用程序,请使用引导命令。
2.3破坏性应用程序上传
[d]命令将启动破坏性上传。使用终端软件将二进制文件传输到芯片,破坏性上传与常规上传的不同之处在于它会覆盖引导加载程序。如果不需要引导加载程序这或者上传新的引导加载程序,则可以覆盖引导加载程序占用的闪存。完成上传后,您可能希望通过计算CRC-16校验和来验证正确性,这可以通过verify flash content命令来实现。要启动应用程序,可以使用reset命令。
2.4写入用户信息页面
使用[t]命令可以将数据写入用户信息页面,使用终端软件将用户数据传输到用户信息页面。
2.5写入锁定信息页面
使用[p]命令可以将数据写入锁定信息页面。使用终端软件将用户数据传输到用户信息页面,使用此命令可以锁定闪存中的页面以进行写入和擦除,但不保护内容,有关锁定位的详细信息,请参见参考手册。
图3.1 示例Tera使用引导加载程序版本/ ChipID和校验和命令的术语对话框
3.验证上传
XMODEM-CRC以128字节为单位传输数据。如果二进制文件的大小不是128字节的倍数,则终端程序将填充剩余的字节,有关详细信息,请参阅终端程序的文档。
4.杂项命令
4.1启动应用程序
没有通过调试将引脚拉高来启用引导加载程序一样,[b]命令将以类似的方式引导上传的应用程序。引导加载程序首先在Cortex-M3的矢量表设定到应用程序的基础上执行此操作。然后,它读出新向量表中的第一个字并相应地设置SP。最后,它将PC由向量表定义的值设置为复位,来执行向量复位。
4.2重置设备
[r]命令重置设备。如果在破坏性上传后发出此命令,则将启动新的二进制文件。如果在常规上传后发出此命令且调试引脚未拉高,则应用程序将启动。否则,引导加载程序将重新启动。
4.3调试锁
[l]命令将锁定调试接口。锁定后,将无法访问常规调试工具,只能通过调试接口擦除设备。在锁定调试接口之前,必须重置设备一次,如果锁定成功,此命令将返回“OK”,否则返回“Fail”; 如果调试锁定失败,请确保未连接DBG_SWDIO且DBG_SWCLK为高电平。
详细方案请参考该链接或联系代理商世强:
- |
- +1 赞 0
- 收藏
- 评论 0
本文由GHjames翻译自Silicon Labs,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】EFM32系列低功耗32位MCU芯片加密详解
本文主要介绍以Silicon Labs EFM32系列低功耗32位MCU为核心的方案打造加密系统。
【经验】防止32位微控制器EFM32™ Gecko嵌入式目标上的SystemView缓冲区溢出的方法
Silicon Labs的EFM32™ Giant Gecko GG11 32位微控制器入门套件都包含一个板载J-Link调试器,不仅可以调试和刷新嵌入式应用程序,还可以运行SystemView。本文将讨论防止溢出的基本步骤,并且描述防止溢出的最终方法。
【经验】如何读取EFM32系列32位MCU产品ID码?
Silicon Labs推出EFM32系列32位单片机产品是基于ARM Cortex-M0+, M3+,M4+ 内核设计出来的高性能、低功耗32位微控制器,如在产品开发中特别功能需要获取该MCU产品ID来设置保护。那么EFM32系列32位MCU如何获取产品ID码?请看本文。
华芯微特(Synwit)32位MCU选型表
目录- 32位微控制器
型号- SWM19SC9T6-50,SWM241PBT7-80,SWM260PBT7-80,SWM181RCT6-50,SWM211,SWM21DC8U7-50,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM201C6T7-50,SWM341CET7-50,SWM190CBT7-50,SWM201,SWM320VET7-50,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM32SRET6-50,SWM190RBT7-50,SWM241CBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
【IC】芯科科技新品PG26 32位MCU系列,大容量存储 + 快速AI/ML推理满足未来的物联网需求
SILICON LABS最新发布的EFM32PG26(PG26)32位微控制器系列通过提升两倍的闪存和RAM容量,以及GPIO的数量来满足各种低功耗和高性能嵌入式物联网应用需求。面向无线连接功能的需求,PG26可作为EFR32xG26多协议无线SoC平台的软件兼容MCU版本,有助于开发人员基于同一平台设计快速且无缝地升级低功耗蓝牙、Matter、Thread、Zigbee或专有无线连接设计。
【应用】32位MCU SWM181用来驱动段码仪表盘屏幕,最高可以支持4COM*32SEGMENT
在两轮车客户群体当中,还有非常大一部分使用的是段码仪表盘屏幕,其中现在市场上多为使用液晶控制IC,与MCU进行8080通信来控制驱动屏幕,而华芯微特的32位 MCU SWM181作为一款屏幕驱动的专用MCU,内置了SLCD控制器,可以代替传统的液晶控制IC,使成本进一步降低。
【产品】主频超过600MHz的32位微控制器HPM6300系列,采用小体积BGA封装,强大的DSP扩展能力
HPM6300系列MCU是上海先楫半导体科技有限公司推出的一款高性能、高实时、高性价比 RISC-V 内核的32位微控制器。HPM6300系列提供LQFP 和小体积 BGA 封装,简化用户板级设计,为工业自动化及边缘计算应用提供了丰富的算力和高效的控制能力。
SILICON LABS 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,频率24MHz~80MHz,Flash存储4kB~2048kB,RAM存储2kB~512kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
Dig I/O Pins
|
ADC 1
|
DAC
|
USB
|
Cap Sense
|
LCD
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
EFM32GG290F512-BGA112
|
32位MCU
|
EFM32 Giant Gecko
|
48
|
512
|
128
|
1.98
|
3.8
|
BGA112
|
10x10
|
±2%
|
ETM; SW
|
AES-128 AES-256
|
90
|
12-bit, 8-ch., 1 Msps
|
12-bit, 2 ch.
|
-
|
Cap Sense
|
-
|
Temp Sensor
|
4
|
7
|
3
|
3
|
2
|
1
|
0
|
RTC
|
2
|
选型表 - SILICON LABS 立即选型
【技术】8位MCU与32位MCU的区别
对某类应用做产品定义和规划时,首要任务之一就是选择理想的处理器/控制器,但开发人员往往难以选择合适的MCU。本文是关于微控制器的技术文章,该文从基本差异、基准性能、应用适用性等角度详细地对8位和32位MCU进行了分析。
SILICON LABS EFM32 Zero Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于24MHz Frequency,4kB~32kB Flash,2kB或4kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
AES-128
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
EFM32ZG222F8-QFP48
|
Microcontroller
|
24
|
8
|
2
|
37
|
12-bit, 4-ch., 1 Msps
|
—
|
Cap Sense
|
Temp Sensor
|
2
|
AES-128
|
2
|
1
|
1
|
1
|
1
|
0
|
RTC
|
1
|
1.98
|
3.8
|
QFP48
|
7x7
|
±2%
|
SW
|
选型表 - SILICON LABS 立即选型
【应用】基于低功耗32位MCU EFM32G2X的智能温控器节能解决方案
采用Silicon Labs的ARM Cortex-M3内核EFM32是全球最低功耗的32位MCU,外设丰富,5大超低模式,非常适用于智能温控器。无线WIFI模块采用WGM110,具有卓越的射频性能,并可提供远程范围的稳定无线连接和安全性。
【应用】低功耗32位MCU在智能安防无线报警系统中的应用
芯科高性能低功耗的32位微控制器EFM32非常适合于智能安防系统的应用,其EFM32JG系列内核采用运算性能突出的Cortex-M3设计,极大地缩短了智能安防应用中的算法处理时间,提高了系统的性能。
【IC】芯科科技新款32位MCU EFM32和EFM8功能升级,电流可低至1.03µA,小尺寸满足微型设备需求
芯科科技近期发布的新款32位MCU EFM32PG23和8位MCU EFM8BB50产品旨在通过更优化的设计架构来帮助开发人员加速产品原型设计。PG23和BB50不仅进一步扩大了Silicon Labs的MCU产品组合,并且利用小尺寸和低功耗设计满足各种微型、电池设备和物联网应用的需求。
【产品】超低功耗EFM32G880 32位MCU,具有ARM Cortex-M3内核CPU架构
Silicon labs推出的EFM32G880系列超低功耗32位MCU,系列下具体型号有EFM32G880F32,EFM32G880F64,EFM32G880F128。具有32/64/128KB三种可选的flash闪存存储,便于工程师快速擦写程序,8/16KB的RAM运存,多达86个普通I/O管脚。主要用于智能配件、报警和安全系统、工业和家庭自动化等领域。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论