本帖最后由 小恩GG 于 2025-8-8 16:58 编辑
一、引言 MCX C 系列芯片是恩智浦新推出的入门级微控制器,包括 MCX C14x/24x/44x,带有 16KB 的 Boot ROM,且出厂时已在 ROM 中烧录 Bootloader 程序,便于客户更新 MCU 中的 application 代码,既减少工作量又节约 Flash 空间。 近期有客户反馈 MCUXpresso Secure Provisioning(SEC) 暂不支持 MCX C 系列产品,如下图。小编从 SW Team 了解到,SEC工具对 MCX C 的支持可能在 2025 年实现,具体时间待定。基于此情况,本文将重点讲解如何使用 blhost 操作 MCX C,并以 FRDM - MCX C444 的 ROM Bootloader 为例展开详细介绍。
SEC Tool暂不支持MCXC
二、MCX C444 ROM Bootloader概述 在 MCX C 参考手册的 ROM Bootloader 章节中,对 ROM Bootloader 的功能特性和参数配置、指令集、Bootloader 通信协议等方面内容进行细致的介绍。而接下来小编就具体讲讲FRDM-MCX C444的ROM Bootloader。 (一)Bootloader的启动流程 1.上电复位(POR)或正常复位:设备启动时,微控制器依据相关寄存器配置,决定进入 ROM Bootloader还是直接从正常 FLASH 启动。 2.检查配置选项:Bootloader读取特定地址配置区域,根据其中的参数来确定通信接口、时钟设置等。 3.等待外部设备连接:进入Bootloader模式后,等待外部设备通过指定通信接口连接,以接收固件更新数据。 下面附上它的启动流程图。
Bootloader启动流程图
(二)ROM Bootloader相关信息 1.ROM Bootloader位置 ROM Bootloader位于 ROM 之中,其地址范围是从 0x1c00_0000 至 0x1c00_4000,大小共计 16K。并且在运行期间会使用一部分RAM,具体情况如下图所示。
bootloader ROM/RAM 内存映射
2.Boot流程控制因素 先看一下启动过程的流程图,该图源自 MCX C242 参考手册,虽 MCX C444 参考手册未提供此图,但二者启动流程相同。
芯片启动流程
Boot 流程由FORCEROM、BOOTPIN_OPT、BOOTCFG0 pin、BOOTSRC_SEL等控制,下面逐一展开介绍。 1)FORCEROM:用于始终进入 ROM bootloader的两位。如果这两位不全为零,则始终进入 ROM bootloader。
FORCEROM
2)BOOTPIN_OPT:FOPT 寄存器的一部分。如果此位为零,则启用对可选bootloader使能引脚的检查(对于 MCX Cx4x 而言是 NMI):如果该引脚被拉低,则进入 ROM bootloader。
BOOTPIN_OPT
3)BOOTCFG0 pin: 这是由 BOOTPIN_OPT 设置启用的引脚(对于 MCX C 而言是 NMI 引脚)。 4)BOOTSRC_SEL:FOPT 寄存器的一部分。如果设置为 10 或 11,那么它将进入 ROM bootloader:
BOOTSRC_SEL
总结上面内容,可以得知,如果下面情况之一成立,可以进入ROM bootloader:
a) FORCEROM 设为非零值 b) 通过 BOOTPIN_OPT 配置 Bootloader 引脚(NMI),且此引脚被拉低 c) BOOTSRC_SEL设置为 10 或者 11
3. NMI pin信息 接下来让我们看一下NMI pin,
NMI_pin
在 FRDM-MCXC444 上,NMI引脚连接到 SW3 按钮。
NMI_pin连接到SW3
SW3的按钮可以在下图看到,
FRDM-MCXC444
4. Bootloader 引脚复用 如上文所述,NMI 引脚可用于进入Bootloader。那么它可以在哪些引脚上进行通信呢,在参考手册中可以看到,MCX C444可以通过 UART、I²C、SPI 和USB 接口进行通信。
bootloader引脚复用
5. Bootloader配置区域(BCA) BCA 的作用:BCA 用于存储Bootloader的配置信息,如通信接口的使能状态、时钟设置、设备地址等。 BCA 的结构和内容:它是一个位于 FLASH 中地址 0x3C0 的结构体,包含了多个字段,每个字段对应不同的配置参数。例如,有用于标识配置有效性的标签字段,以及用于设置通信接口使能的位字段等。
bootloader BCA
三、操作步骤 通过上面的描述,相信大家已经对ROM bootloader有了一定的了解了。接下来小编具体以 FRDM-MCX C444 为例,手把手演示一下如何使用blhost通过 ROM bootloader (Uart通信串口)来更新 Flash 中的application 程序。 (一)blhost简介 blhost是NXP用于在PC主机端的命令行工具。blhost通过向BOOT ROM或运行有Flashloader的MCU发送命令来实现设备的读写和擦除等操作,而不依赖IDE。blhost是一个多平台工具,可在Windows、Linux(x86)、Mac、Linux(Arm)系统使用,主机能够通过USB、UART直接连接MCU设备,能为MCU设备工业现场应用提供便利。 2. Blhost路径:path\to\blhost_2.6.7\bin\win
blhost路径
3. 使用指南: blhost User's Guide.pdf, 可以在path\to\blhost_2.6.7\docs下找到
(二)进入ROM Bootloader 这里将以 UART 通信方式进行操作演示。此前已介绍过 bootloader 引脚复用表,从中可知 LPUART0_TX/LPUART0_RX 引脚分别对应 PTA2/1 pin。通过查看 FRDM-MCXC444 电路图能够发现,这两个引脚与 MCU-LINK Debug 接口相连。 下面介绍进入ROM bootloader的两种方法。 1. Mass Erase 如果您使用的开发板已预烧录固件,可能会在后续操作中尝试进入 ROM Bootloader 时失败。这是因为闪存固件中的默认配置可能未设置为从 ROM 启动。因此,对于已烧录固件的开发板,建议先执行闪存擦除操作再进行后续流程。 由于闪存擦除后默认值全为 1,空白芯片将自动引导至 ROM。您可以使用 MCUXpresso IDE 中的GUI Flash Tool 执行 “Mass Erase”,或选择其他的擦除方法。 在完成 Flash 擦除操作后,直接将 USB 电缆连接到 MCU-Link 端口,即可与 ROM Bootloader 建立初始连接。
Mass Erase
2. 从代码层面修改 FOPT 寄存器 此外,除了Mass Erase进入 ROM Bootloader 的方式外,还可以从代码层面进行相关设置以实现特定的进入 ROM Bootloader 条件。下面介绍如何从代码层面修改 FOPT 寄存器。对于SDK中的project,它位于startup/startup_mcxc444.c中:
修改上图标注的特定两位可实现对 BOOTPIN_OPT 和 BOOTSRC_SEL 的修改,具体对应关系可在 debug 状态下查看寄存器值确定。例如: 1)设置BOOTPIN_OPT = 0 改为0xFFFF3DFE。编译生成的bin烧写进板子里,不用Mass Erase也可以通过NMI pin进入ROM Bootloader。 具体地,先按住SW3按键不松开,接着将USB电缆连接到MCU-Link端口,最后松开SW3按键,即可与ROM Bootloader建立初始连接。 2)设置BOOTSRC_SEL = 10/11 改为 0xFFFFBFFE(BOOTSRC_SEL = 10)或者 0xFFFFFFFE(BOOTSRC_SEL = 11)。这样编译生成的 bin 烧进板子里后,上电后无需 NMI pin 即可直接进入 ROM Bootloader。 具体地,直接将 USB 电缆连接到 MCU-Link 端口,即可与 ROM Bootloader 建立初始连接。 a) 0xFFFFBFFE,BOOTSRC_SEL=10
b) 0xFFFFFFFE,BOOTSRC_SEL=11
(三)通过设备管理器查看串口号
查看端口号
(四)执行blhost命令 1.blhost -p COMx -- get-property 1 该命令用于获得MCU的属性和设置,其中参数1返回MCU的bootloader版本。我们通过这个命令测试是否连接成功。 注意:上电后的第一个命令可能会丢失。再试一次,第二次通常会起作用。
对于MCXC041 ISP模式,使用UART进行通信,波特率必须等于或低于19200。
2.blhost -p COMx -- flash-erase-all 该命令用于指令格式化整个 Flash 区间。
3. blhost -p COMx -- write-memory 0 xxx.bin 将bin文件写入指定地址。这里我们烧录在FLASH上,起始地址为0x00000000。 如果使用 S19/S record文件,则需要用 “flash-image” 命令: blhost -p COMx -- flash-image xxx.srec
四、小结 本文介绍了MCX C系列的ROM Bootloader以及如何使用blhost工具对MCX C444进行烧录。在 MCUXpresso Secure Provisioning tool 暂不支持 MCX C 的情况下,用户可参考本文使用 blhost 进行相关操作。 后续还将带来更多关于如何使用 MCUXpresso Secure Provisioning (SEC)工具更新固件和对 BCA(引导配置区域)进行编程的内容,敬请期待!
|