NXP AN13183 Application Note

AN13183
如何通过 LPC55(S)1x 高速 USB 接口配合 blhost 更新应用程序
Rev. 0 — March 15, 2021
目录

1 LPC55(S)1x 简介

LPC55(S)1x 是一款基于 Arm Cortex®-M33 内核的 MCU。该 MCU 集成有 Casper 安全加速器,最大 96kBytes 片上 RAM,最大 256kBytes 片上 Flash, PRINCE 模块支持加密固件边解密边执行,片上带有一路 CAN-FD 控制器, 5 个通用定时器 CTIMER,1 个状态可配置定时器,1 个看门狗定时器,8 个 Flexcomm 串行接口(可以任意配置为 UART,SPI,I2C 或者 I2S),1 路 50MHz 高速 SPI,1 路 16 位 2.0Msps 采样率的 ADC,片上集成温度传感器。
LPC55(S)1x 片上 ROM 启动非安全的部分支持:
• 支持片上 Flash 中固件的启动。
• 支持 CRC32 校验使能的固件检查以及启动。
• 支持片上 Flash 在系统中编程(ISP, In System Programming)的 命令并支持以下接口:USB1 接口支持 HID 类设备,串口(Flexcomm0) 支持自动波特率,SPI 从机接口(Flexcomm3 或者 9)使用 MODE3 (CPOL=1,CPHA=1),支持 I2C 从机接口(Flexcomm1)。
• 支持 ROM API:Flash 编程 API,功耗模式配置,安全固件升级 API 支 持 NXP Secure Boot 文件格式,版本 2.0。
• 支持从带有 PRINCE 加密的 Flash 区域的固件启动。
• 支持 1.0 版本的 NXP 调试身份认证协议(RSA-2048)以及 1.1 的版本 (RSA-4096)。
• 支持在安全调试过程中的故障分析。
本应用笔记,针对非安全的状态下的 LPC55(S)1x 的固件升级,接口使用高速 USB 接口 USB Port1。可以配合 NXP 开源上位机 blhost 实现固件的升级。

2 非安全状态下 ROM 启动流程

1 LPC55(S)1x 简介.............................1
2 非安全状态下 ROM 启动流程..........1
2.1 非安全状态下 ROM 启动流程.......1
2.2 进入 ROM USB HID 固件升级的三
种方式 ......................................... 2
3 软硬件工具:LPC55S16-EVK,
BLHOST 和 ELFTOSB-GUI.............2
3.1 LPC55S16-EVK 评估板............... 2
3.2 BLHOST 固件升级软件................3
3.3 ELFTOSB 安全固件生成软件.......3
4 如何通过 USB1 接口更新固件.........4
4.1 blhost 更新固件的命令................. 4
4.2 LPC55S16-EVK 如何进入 ISP 模式
配合 blhost 进行固件升级 ............5
4.3 升级例程后的现象........................ 5
5 如何通过 ELFtoSB 工具生成使能
CRC 校验的固件 .............................5
5.1 LPC55(S)1x ROM 如何支持固件的
CRC 校验 ....................................5
5.2 如何用 ELFtoSB-GUI 工具生成带有
CRC 校验功能的固件 ..................6
5.3 如何验证带有 CRC 的固件损毁不执 行且重新使能 USB ISP 升级的功能
.....................................................7
6 KEIL,IAR 和 MCUXpresso 生成 bin
文件 ................................................ 8
6.1 KEIL MDK 环境下生成 bin 文件... 8
6.2 IAR 环境下生成 bin 文件.............. 8
6.3 MCUXpresso 环境下生成 bin 文件
.....................................................9
7 结论............................................... 10
8 参考文档........................................10
Application Note

2.1 非安全状态下 ROM 启动流程

本文主要针对的是非安全状态下 ROM 的启动流程,一 安全,我们也有相应的应用笔记 AN 介绍安全启动以及固件的安全升级。
图 1 为 ROM 启动流程图,因为本文内容并没有使能 TrustZone(TZM)以及没有使能安全启动,所以在正常情况下整个启动流程
会按照橙色线路进行。
绿色标出的程序执行路径为,片上 Flash 的固件启用了 CRC 校验的功能且固件有损坏的情况。
是不是所有的客户都需要安全启动,二是本文重心在 USB 固件升级而不是
NXP Semiconductors
软硬件工具:LPC55S16-EVK,BLHOST 和 ELFTOSB-GUI
图 1. 非安全状态下 ROM 启动流程

2.2 进入 ROM USB HID 固件升级的三种方式

LPC55(S)1x 片上的 ROM 启动支持从 USB1 口以 HID 设备类的方式更新固件。通常有两种办法启动 ROM 固件升级的功能,一种 是通过将 ISP 引脚(对 LPC55(S)1x 来说就是 PIO0_5);另外一种就是在用户应用程序中调用 runBootloader()这个 ROM 的 API 即可在应用程序中进入 ROM 的 ISP 固件升级模式 否来进入 USB HID ISP 升级的方式。
由启动流程用户可以了解到,非安全状态下 ROM 启动过程中可以选择固件是否有 CRC 校验和的检查。
• 如果固件没有使能 CRC 校验,则按照正常的启动流程启动。
• 如果固件使能了 CRC 校验,则 ROM 会在复位后检查 Flash 上固件的 CRC 值是否正确,如果不正确(意味着片上固件损坏 了)则进入 ISP 固件升级的模式。
。除了这两种方式外,还有一种通过启动流程中固件 CRC 校验和的检查成功与

3 软硬件工具:LPC55S16-EVK,BLHOST 和 ELFTOSB-GUI

3.1 LPC55S16-EVK 评估板

是官方针对 LPC55(S)1x 系列的评估板 LPC55S16-EVK。该评估板可以通过‘SW4-ISP ’按键配合‘SW2-RESET’按键进入ISP
图 2
模式,USB HID ISP 则需要将 USB 接口 J4 (USB 1)与 PC 机相连接。
如何通过 LPC55(S)1x 高速 USB 接口配合 blhost 更新应用程序, Rev. 0, March 15, 2021
Application Note 2 / 11
NXP Semiconductors
软硬件工具:LPC55S16-EVK,BLHOST 和 ELFTOSB-GUI
图 2. LPC55S16-EVK 评估板

3.2 BLHOST 固件升级软件

BLHOST 软件是 NXP 官方开源的固件升级的上位机程序,用于支持片上 ROM 的 ISP 固件升级功能。BLHOST 是以命令行的方 式来实现用户应用程序的更新,支持三个平台 Windows/Linux/MACOS。
其使用手册见
blhost User's Guide
(document MCUBLHOSTUG).

3.3 ELFTOSB 安全固件生成软件

图 3 是 elftosb-gui 应用程序的界面,ELFTOSB 是 NXP 官方生成安全固件的工具,可以帮助客户在普通的应用程序的 binary基
础上,可选择的加入 CRC 校验和或者带有签名的固件。如果用户想自己了解 NXP 的 BOOT ROM 校验 CRC 的细节,本文在
何通过 ELFtoSB 工具生成使能 CRC 校验的固件会做详细介绍。
如何通过 LPC55(S)1x 高速 USB 接口配合 blhost 更新应用程序, Rev. 0, March 15, 2021
Application Note 3 / 11
NXP Semiconductors
如何通过 USB1 接口更新固件
图 3. elftosb-gui 应用程序界面
关于 blhost 以及 elftosb 的工具,用户可以从 MCUBOOT: MCU Bootloader for NXP microcontrollers 下载到最新的软件。

4 如何通过 USB1 接口更新固件

4.1 blhost 更新固件的命令

由于 elftosb 工 固件是否有 CRC 校验。
各种 IDE 下生成 bin 文件的方法见 KEIL,IAR 和 MCUXpresso 生成 bin 文件
blhost 升级固件需要用到如下命令,如 图 4 所示。
blhost.exe -u 0x1FC9,0x0022 -- flash-erase-all
blhost.exe -u 0x1FC9,0x0022 -- write-memory 0x0 binary.bin
具需要 bin 格式的固件才能加入 CRC 校验和。所以本文所有的固件升级都是基于 bin 格式的。固件更新并不会查看
如何通过 LPC55(S)1x 高速 USB 接口配合 blhost 更新应用程序, Rev. 0, March 15, 2021
Application Note 4 / 11
Loading...
+ 7 hidden pages