1. 问题现象
在 FRDM-MCXW71 上运行 Zephyr 官方 BLE 示例:
samples/bluetooth/peripheral_ht
应用可以正常构建和烧录,但启动后 BLE 初始化失败,串口报错:
ASSERTION FAIL [err == 0] @ WEST_TOPDIR/zephyr/subsys/bluetooth/host/hci_core.c:482 Controller unresponsive, command opcode 0xfc22 timeout with err -11
此时手机端扫描不到 BLE 设备。
2. 原因分析
FRDM-MCXW71 的 BLE 不是只烧录主核应用就能工作。
它需要两部分镜像:
· CM33 主核:运行 Zephyr BLE host/application。
· NBU CM3:运行 NXP 提供的 BLE controller firmware。
`Controller unresponsive` 表示 Zephyr Bluetooth Host 向 Controller 发送 HCI 命令后没有收到响应。因此问题不在手机扫描,也不在 GATT 服务代码,而是 NBU 侧 BLE controller 固件没有正确运行。
Zephyr 工程中已经包含 NBU 固件:
/home/actdxh/zephyrproject/modules/hal/nxp/zephyr/blobs/mcxw71/mcxw71_nbu_ble.sb3
3. 解决办法
使用 MCUXpresso Secure Provisioning Tool 给 NBU 烧录 BLE firmware。
先把 `.sb3` 文件复制到 Windows 目录:
cp "/home/actdxh/zephyrproject/modules/hal/nxp/zephyr/blobs/mcxw71/mcxw71_nbu_ble.sb3" \ "/mnt/h/16.NXP/workspace/mcxw71_nbu_ble.sb3"
Windows 路径:
H:\16.NXP\workspace\mcxw71_nbu_ble.sb3
在 MCUXpresso Secure Provisioning Tool 中进入 Manufacturing Tool,选择 `Apply SB file / 应用 SB 图像`,选择上面的 `.sb3` 文件后执行烧录即可。





注意:
1.本次只需要烧录 SB 文件,不需要执行 `Erase all`、`Provision keys`、`Write fuses`、`Life cycle update` 等操作。
2.首先在win新建一个工作区,把板卡插入的时候会多出来usb和uart,记住要选择uart。然后源可执行文件不需要填,微控制器型号要选对。
3.新建后添加工具里面的制造工具,然后点是再勾选是否更新写入脚本。
4.进入工具后先自动检测串口选择板卡的串口然后测试连接(测试前要下进入isp模式),测试通过后在上面选择sb固件并开始烧录。
4. 验证结果
NBU 固件烧录完成后,重新烧录 Zephyr 官方 BLE 示例:
LinkServer flash --probe 2ZZMU5ASTTI1H --update-mode none \ MCXW716CxxxA:FRDM-MCXW71 load \ /home/actdxh/zephyr-frdm-mcxw71-review/build_ble_peripheral_ht/zephyr/zephyr.elf
串口输出正常:
HCI transport: BT NXP Bluetooth initialized no temperature device; using simulated data Advertising successfully started
手机端可以扫描并连接 `Zephyr Health Thermometer`,开启 indication 后串口可以看到:
Connected temperature is 21C Indication success Indication complete
说明 BLE Host 与 NBU Controller 通信恢复正常。
5. 其他注意点
WSL 下尝试使用 `blhost` 烧录 NBU 时没有成功,`nxpdevscan` 只能看到 MCU-Link,不能看到目标 ROM bootloader:
MCU-LINK NXP TRACE - NXP Semiconductors
因此本次改用 Windows 版 MCUXpresso Secure Provisioning Tool 完成 NBU `.sb3` 烧录。
另外,LinkServer 只用于烧录主核 CM33 应用。设备配置中只暴露 `cm33`,不能替代 `.sb3` 方式烧录 NBU 固件。
如果 `west flash` 停在 MCU-Link firmware check,可以直接使用:
LinkServer flash --probe 2ZZMU5ASTTI1H --update-mode none \ MCXW716CxxxA:FRDM-MCXW71 load <zephyr.elf>
6. 后续应用验证
NBU 固件烧录完成后,自定义 DHT11 + BLE 温湿度计应用也可以正常运行。
设备名:
FRDM-MCXW71-TH
串口输出:
Bluetooth initialized Advertising successfully started DHT11 + BLE Test Start Temperature: 28.0°C, Humidity: 68.6%RH
温度使用标准 Health Thermometer Service,湿度使用 `Humidity (0x2A6F)` 特征。手机端可通过 nRF Connect 扫描、连接并查看数据。
7. 小结
这次问题的关键点是:FRDM-MCXW71 跑 BLE 需要主核应用和 NBU controller firmware 两部分。只烧录 Zephyr app 时,主核 BLE Host 会启动,但 NBU Controller 没有响应,于是出现 `Controller unresponsive`。
烧录 `mcxw71_nbu_ble.sb3` 后,官方 BLE demo 和自定义温湿度计应用均验证通过。

我要赚赏金
