EFM32 M0+系列 MCU Bootloader 测试方法

  作者:angelazhang 时间:2015-11-09

EFM32 系列 MCU 在出厂时已将 UART Bootloader 固化在片上 Flash 的 0x00000000 地址处,用户可选择保留此 Bootloader,并将应用程序放到 Bootloader 后边,或将此 Bootloader擦除。使用 Bootloader 功能之前,需保证片上 Flash 的 0x00000000 地址处已经存放了Bootloader。若 Bootloader 已被擦除,则可通过调试接口将其烧入。本文以STK3200 demo板为例讲述bootloader的测试方法。


首先为DEMO重新烧录bootloder程序,Bootloader路径:

…\SiliconLabs\SimplicityStudio\v2\developer\sdks\efm32\v2\an\an0003_efm32_uart_bootloader\binaries,选择bootloader-zero.hex下载的demo板。


STK3200 demo板上MCU为EFM32ZG222F32, 串口bootloader使用的是 PF0和PF1脚,参看datasheet 51页和52页和demo板原理图,可以从SWDIO和SWCLK引出串口引脚PF0和PF1。为了启动bootloader需要再PF0(SWCLK)上增加一颗4.7K或5.1K的上拉电阻。


图1 数据手册管脚描述


 

图2 SWD调试接口

将 DBG_SWCLK 引脚上拉后复位芯片,从而运行 Bootloader。若复位后 DBG_SWCLK为低电平, Bootloader 将会检查 Flash 内部用户代码空间是否存在有效应用程序代码,若存在则 Bootloader 将跳转到应用程序起始处执行;否则, Bootloader 将进入 EM2 模式,并定时检测 DBG_SWCLK 是否拉高。DBG_SWDCLK 引脚默认内部下拉。因此悬空此引脚不会进入 Bootloader。


UART Bootloader,串口通信格式为 8 个数据位,一个停止位,无校验位。为了适应不同的串口终端,UART Bootloader 使用自动波特率。在串口上位机设置好通信格式并连接之后,即可向 MCU 发送大写字母‘ U’ ; MCU 接收到后,会根据总线上所传输的每个位之间的间隔来计算上位机所使用的波特率,并据此配置相关寄存器,波特率建议使用 115200。一旦 Bootloader 完成自动波特率匹配,其将上传Bootloader 版本号和芯片 UID,如图3所示

图3 串口调试助手接收数据


在上位机成功接收到 Bootloader 版本及芯片 UID 后, 即可通过命令来操作 MCU。 UART Bootloader 支持以下命令:

(1). u

上传应用程序。此命令用来上传用户应用程序到 Flash,并保留 Bootloader。

(2).d

毁灭性下载。此命令烧写用户程序到 Flash 的 0x0 地址处,并覆盖 Bootloader。数据的传输使用 XMODEM-CRC 协议。

(3). t

下载数据到用户信息页。此命令写数据到 Flash 内的用户信息页,数据的传输同样使用

XMODEM-CRC 协议。

(4). p

下载数据到锁信息页。此命令用来写锁信息页,传输使用 XMODEM-CRC 协议。

(5). b

启动应用程序。此命令用来启动已烧录的应用程序,常用于‘ u’命令之后。

(6). l

调试锁命令。此命令用来将锁信息页中的调试锁打开。打开后, EFM32 系列 MCU 将不能通过 SWD 接口进行仿真调试。

(7). v

Flash 数据校验。此命令计算 Flash 内所有数据的 CRC-16 校验和并打印,常与命令‘ d’配合使用。

(8). c

应用程序校验。此命令计算 Flash 应用程序段的 CRC-16 校验和并打印,常与命令‘ u’配合使用。

(9). n

用户信息页数据校验。此命令计算 Flash 内用户信息页的 CRC-16 校验和并打印,常与命令‘ t’配合使用。

(10). m

锁信息页校验。此命令计算锁信息页的 CRC-16 校验和并打印。

通过上述命令,进入bootloader程序后,实现程序的更新或复位操作。





关键词: EFM32 STK3200 Bootloader

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关电路