Matter NXP RW61x 平台应用开发指南:FreeRTOS 下的构建、烧录、调试与安全配置
【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip
本指南以 connectedhomeip(Matter / Project CHIP)仓库中的 docs/platforms/nxp/nxp_rw61x_guide.md 为核心,系统讲解 Matter 应用在 NXP RW61x(RW610/RW612)平台上的完整开发流程。文章覆盖 CMake 与 GN 两套构建系统、Wi-Fi/Thread/Ethernet/Border Router 多种网络配置、制造数据加密与 DAC 私钥硬件包裹(blob)、JLink 烧录调试、Matter CLI 测试以及 SE05x 安全元件扩展,读者可以据此从零搭建环境并产出可运行的 Matter 设备固件。
平台概述与支持配置
RW61x 示例应用是建立在 Project CHIP 代码库与 NXP MCUX SDK 之上的 RW610/RW612 板级集成演示,展示了设备配网(commissioning)与多 Cluster 控制能力。RW61x 平台在仓库中的示例代码路径包括 examples/thermostat/nxp(含 RT/FreeRTOS 与 Zephyr 两套端口)以及 examples/all-clusters-app/nxp 等。
支持的网络配置
RW61x 示例支持以下三种主要配置:
- Matter over Wi-Fi:Wi-Fi 直连,BLE 配网;
- Matter over OpenThread:Thread 低功耗 mesh 网络;
- Matter over Wi-Fi + OpenThread Border Router:Wi-Fi 作为主干,同时承担 Thread Border Router 职责。
注意:使用 CMake 构建时,若未在
west build命令中指定prj_<flavour>.conf文件,默认配置为 Matter over Wi-Fi(详见下文 CMake 构建)。
此外,RW61x 还支持Matter over Ethernet配置(仅限 FRDM-RW612 开发板,RD-RW612-BGA 不支持,官方建议使用frdm板卡)。
支持的两套构建系统
RW61x 平台同时支持两套构建系统,二者在工程组织上存在差异:
- GN:基于 examples/thermostat/nxp/rt/rw61x/BUILD.gn 等
rt_executable目标组织整个项目,直接产出固件; - CMake:使用 NXP MCUX SDK 的 CMake + Kconfig 体系(
west build命令)构建应用与 SDK,Matter 协议栈部分仍由 GN 编译后链接进应用。CMake 工程入口见 examples/thermostat/nxp/zephyr/CMakeLists.txt。
硬件需求
不同网络配置对天线的要求如下:
| 配置 | RD-RW612-BGA | RD-RW610-BGA | FRDM-RW612 |
|---|---|---|---|
| Matter over Thread | 需外接 BLE/15.4 天线(插 Ant2) | — | 无需外接天线(板载 PCB 天线) |
| Matter over Wi-Fi | 需 BLE 天线(Ant2)+ Wi-Fi 天线(Ant1) | 需 BLE 天线(Ant2)+ Wi-Fi 天线(Ant1) | 无需外接天线(板载 PCB 天线) |
| Wi-Fi + Border Router | 需 BLE/15.4 天线(Ant2)+ Wi-Fi 天线(Ant1) | — | 无需外接天线(板载 PCB 天线) |
| Matter over Ethernet | 不支持,建议改用frdm板卡 | — | 板载以太网接口,无需额外处理 |
构建环境准备
在开始构建前,需要按照 CHIP NXP Examples Guide for FreeRTOS platforms 中 "Set-up the build environment" 一节完成环境搭建。核心步骤如下:
Step 1:检出 NXP 相关子模块
user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursiveStep 2:激活 Matter 环境
首次配置或本地环境过期时运行:
user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh -p all,nxp环境已就绪时可直接激活:
user@ubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.shStep 3:安装 NXP MCUX SDK
user@ubuntu:~/Desktop/git$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform commonStep 4:source mcux-env.sh
user@ubuntu:~/Desktop/git/connectedhomeip$ source <path to mcux sdk>/mcux-env.shStep 5:导出 ARMGCC_DIR(仅 CMake 构建需要)
CMake 构建要求ARMGCC_DIR指向 ARM GCC 工具链根目录,可使用 Matter 环境安装的工具链:
user@ubuntu:~/Desktop/git/connectedhomeip$ export ARMGCC_DIR=/path/to/connectedhomeip/.environment/cipd/packages/arm提示:Step 1 和 Step 3 在环境已更新时可跳过;Step 2、4、5 需要在每个新的终端会话中重复执行。系统级依赖(git、ninja、python3-venv 等)请参照 docs/guides/BUILDING.md 的前置要求安装。
CMake 构建系统
CMake 构建的通用命令格式为:
user@ubuntu:~/Desktop/git/connectedhomeip$ west build -d <build_dir> -b <board> examples/<example_name>/nxp -DCONF_FILE_NAME=<prj_flavour.conf>其中:
<build_dir>:构建输出目录;<board>:目标板卡名称,RW61x 平台可选rdrw612bga(RD-RW612-BGA)或frdmrw612(FRDM-RW612);examples/<example_name>/nxp:应用入口 CMakeLists.txt 所在路径;CONF_FILE_NAME:指定位于examples/platform/nxp/config下的项目配置文件名称,构建系统会自动拼接为examples/platform/nxp/config/${CONF_FILE_NAME}。
常用构建命令示例
以 All-Clusters 应用 + Matter over Wi-Fi 为例(frdmrw612板卡):
user@ubuntu:~/Desktop/git/connectedhomeip$ west build -d build_matter -b frdmrw612 examples/all-clusters-app/nxp -DCONF_FILE_NAME=prj_wifi.confEthernet 配置的 CMake 构建示例(prj_eth.conf,使用 Thermostat 应用):
user@ubuntu:~/Desktop/git/connectedhomeip$ west build -d build_matter -b frdmrw612 examples/thermostat/nxp -DCONF_FILE_NAME=prj_eth.conf可用项目配置文件与平台兼容性
CONF_FILE_NAME可取的配置在 nxp_examples_freertos_platforms.md 中有完整清单,与 RW61x 相关的核心配置如下:
| 配置文件 | 描述 | 支持平台 |
|---|---|---|
prj_wifi.conf | Wi-Fi | RW61x, RT1060, RT1170 |
prj_wifi_fdata.conf | Wi-Fi + factory data | RW61x, RT1060, RT1170 |
prj_wifi_ota_fdata.conf | Wi-Fi + factory data + OTA | RW61x, RT1060, RT1170 |
prj_wifi_ota.conf | Wi-Fi + OTA | RW61x, RT1060, RT1170 |
prj_wifi_onnetwork.conf | Wi-Fi onnetwork(无 BLE) | RW61x, RT1060, RT1170 |
prj_thread_ftd.conf | Thread FTD | RW61x, RT1060, RT1170, MCXW71, MCXW72 |
prj_thread_ftd_fdata.conf | Thread FTD + factory data | RW61x, RT1060, RT1170, MCXW71, MCXW72 |
prj_thread_ftd_wifi_br_ota.conf | Wi-Fi + Thread Border Router + OTA | RW61x, RT1060, RT1170 |
prj_thread_ftd_wifi_br_ota_fdata.conf | Wi-Fi + Thread Border Router + OTA + factory data | RW61x, RT1060, RT1170 |
prj_eth.conf | Ethernet | RW61xfrdm |
prj_eth_fdata.conf | Ethernet + factory data | RW61xfrdm |
prj_eth_ota.conf | Ethernet + OTA | RW61xfrdm |
prj_*配置实际位于 examples/platform/nxp/config,不同 flavor 通过叠加启用 Wi-Fi/Thread/factory data/OTA 等能力,构建产物位于build_dir/app.elf。
CMake 构建的自定义
如需进一步定制,可直接修改应用的prj.conf,或在命令行通过-DCONF_FILE指定自定义配置文件(支持多个,以分号分隔):
user@ubuntu:~/Desktop/git/connectedhomeip$ west build -d <build_directory> -b <board> <path/to/examples> -DCONF_FILE="/path/to/prj_<custom1>.conf;/path/to/prj_<custom2>.conf"也可以在命令行直接设置 Kconfig 符号,例如-DCONFIG_CHIP_DEVICE_DISCRIMINATOR=0xF01将 discriminator 设为 0xF01(十进制 3841)。其他常用参数:
--config release:release 模式构建,默认是 debug;-Dcore_id:多核板卡指定目标核;-DCHIP_ROOT:out-of-tree 应用指定 connectedhomeip 仓库根路径。
关于 BLE 与 Matter CLI:CMake 构建的 Matter 应用默认启用 BLE 和 Matter-CLI。需要禁用时,参照 nxp_examples_freertos_platforms.md 中 "How to customize the CMake build" 一节调整 Kconfig。以 Zephyr 端口为例,BLE/CLI 相关的源文件选择逻辑位于 examples/thermostat/nxp/zephyr/CMakeLists.txt(如
CONFIG_CHIP_CUSTOM_BLE_ADV_DATA、CONFIG_CHIP_LIB_SHELL条件编译块)。
GN 构建系统
GN 构建通过在gn gen命令行传递参数来配置应用。RW61x 的 GN 示例在仓库中的对应目录为 examples/thermostat/nxp/rt/rw61x(rt表示 FreeRTOS/RT 端口),其工程结构由 BUILD.gn 定义。
说明:原文档中的 GN 命令示例使用了
examples/all-clusters-app/nxp/rt/rw61x路径;在当前仓库快照中,RW61x 的 RT 工程位于examples/thermostat/nxp/rt/rw61x,GN 命令应在此类包含rt/rw61x/BUILD.gn的目录下执行,并将目录替换为你实际使用的示例工程。
Matter over Wi-Fi(BLE 配网)
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --args="chip_enable_wifi=true" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debugMatter over Thread(BLE 配网)
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --args="chip_enable_thread=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debug其中chip_inet_config_enable_ipv4=false关闭 IPv4(Thread 仅需 IPv6),chip_config_network_layer_ble=true启用 BLE 配网通道。
Matter over Wi-Fi + OpenThread Border Router
该配置支持通过Thread Border Router management cluster下发 Thread 凭据。建议(非必需)同时启用 Matter CLI,以便通过otcli命令控制 Border Router 上的 Thread 网络,并支持 Thread 凭据共享等扩展功能。
注意:Thread Border Router management cluster 目前仅在thermostat 应用中支持。
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw610$ gn gen --args="chip_enable_wifi=true chip_enable_thread=true nxp_enable_matter_cli=true" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw610$ ninja -C out/debug从 BUILD.gn 可以看到,同时启用chip_enable_wifi与chip_enable_thread时,构建会额外定义CHIP_DEVICE_CONFIG_ENABLE_TBR=1并把 FreeRTOS 堆扩大到 250 KB,以满足 Border Router 处理大量 mDNS 报文的需求。
GN 通用选项与 RW61x 特有选项
GN 构建产物位于out/debug/chip-rw61x-all-cluster-example。常用 GN 选项完整列表见 nxp_examples_freertos_platforms.md 中的 "General information" 表格,例如:
| GN 参数 | 说明 |
|---|---|
chip_enable_wifi=true | 启用 Wi-Fi |
chip_enable_thread=true | 启用 Thread |
chip_enable_ble=false | 禁用 BLE(默认启用) |
nxp_enable_matter_cli=true | 启用 Matter-CLI |
is_debug=true optimize_debug=false | debug 模式构建 |
nxp_use_factory_data=true | 使用预置的制造数据分区(证书/密钥) |
chip_enable_ota_requestor=true | 启用 OTA Requestor(RT1060/RT1170/RW61x 需同时加no_mcuboot=false) |
RW61x 特有的 GN 选项:
board_version:选择板卡变体。默认选择NXP RD-RW612-BGA;切换为NXP FRDM-RW612时,需在gn gen命令中加入board_version="frdm"。对应代码分支见 BUILD.gn:frdm时引入frdmrw612/下的clock_config.c与board.c,否则使用rdrw612bga/版本。
此外,BUILD.gn 还暴露了wifi_auto_connect_at_boot(配合wifi_auto_connect_at_boot_ssid/wifi_auto_connect_at_boot_password在启动时自动连接指定 Wi-Fi)与setup_discriminator(默认 3840)等参数。
制造数据与 DAC 私钥安全
关于制造数据(factory data)的写入流程,请参阅 Guide for writing manufacturing data on NXP devices。
RW61x 应用演示了加密的 Matter 制造数据存储:Matter 制造数据在烧录到设备 Flash 前,应使用 AES 128 软件密钥加密。
安全 DAC 私钥使用(实验性)
RW61x 支持将 DAC(Device Attestation Certificate,设备认证证书)私钥放入 S50 安全子系统中安全使用,但该功能为实验特性,存在已知限制:
- 并发访问风险:对
ELS(EdgeLock Subsystem)密码模块的多次访问之间缺少保护,DAC 私钥签名操作可能存在并发访问问题; - 启用方式:在
gn gen命令中加入nxp_enable_secure_dac_private_key_storage=true,且必须已设置nxp_use_factory_data=true; - DAC 私钥生成:若需要将明文私钥转换为带 S50 的 blob,还需在
gn gen中加入chip_convert_dac_private_key=1(前提是nxp_enable_secure_dac_private_key_storage=1已设置)。
ELS并发访问风险必须在其修复之前保持禁用,官方不推荐默认开启该功能。
DAC 私钥 blob 生成(DAC private key blob generation)
RW61x 提供一种"静态安全"(at rest)保护机制:将存储在制造数据分区中的32 字节明文 DAC 私钥转换为48 字节的 ELS 硬件包裹 blob。该 blob 是设备唯一的,只能由创建它的同一 S50 硬件实例解包,从而防止私钥被从 Flash 中提取。
这是一个产线一次性操作(provisioning-time operation),需要先烧录一个专用的中间二进制。整个流程分为三步:
Step 1:构建 blob 生成专用固件
使用启用CONFIG_NXP_FACTORY_DAC_BLOB_GENERATION的配置构建专用 Matter 应用二进制。CMake 构建示例:
west build -d build_matter_blob -b frdmrw612 examples/all-clusters-app/nxp \ -DCONF_FILE_NAME=prj_wifi_fdata.conf \ -DCONFIG_NXP_FACTORY_DAC_BLOB_GENERATION=y该 Kconfig 符号的作用可以从 examples/all-clusters-app/nxp/zephyr/CMakeLists.txt 的源码得到印证:当CONFIG_NXP_FACTORY_DAC_BLOB_GENERATION为真时,构建会额外加入gn_build/rt_sdk/sdk_hook/els_pkc/ELSFactoryData.c及其头文件路径,这正是执行 ELS 私钥转换的钩子实现。
Step 2:烧录并运行 blob 生成固件
将专用固件烧录到应用的 Flash 区域(不要擦除 factory data 分区)并启动设备。UART 日志会依次打印:
SSS: convert DAC private key to blob SSS: extracted blob from DAC private key SSS: replaced DAC private key with secured blob SSS: updated factory dataStep 3:烧录正式 Matter 应用固件
重新烧录未启用CONFIG_NXP_FACTORY_DAC_BLOB_GENERATION的正式 Matter 应用固件。由于 factory data 分区中已是包裹后的 blob,应用启动时不会再做转换,而是通过 S50 硬件解包 blob 并执行 DAC 签名操作——明文私钥全程不会出现在可访问内存中。
前提与限制:执行该转换前,factory data 二进制必须已烧录进 Flash(步骤见上文 制造数据 链接);除非覆盖 factory data 分区,此转换只需执行一次。
烧录与调试
官方推荐使用 SeggerJLink进行烧录与调试。安装完成后,在终端运行JLink进入交互界面:
$ JLink交互操作如下:
J-Link > connect Device> ? # 弹出对话框 -> 选择 `RW612` Please specify target interface: J) JTAG (Default) S) SWD T) cJTAG TIF> S Specify target interface speed [kHz]. <Default>: 4000 kHz Speed> # <enter> J-Link > exec EnableEraseAllFlashBanks J-Link > erase 0x8000000, 0x88a0000烧录 ELF 可执行文件:
J-Link > loadfile <application_binary>若以二进制格式烧录,则使用loadbin并指定加载地址:
J-Link > loadbin <application_binary>.bin 0x8000400注意:
erase 0x8000000, 0x88a0000会擦除整个 Flash 区域;如需保留 factory data 分区(例如执行 DAC blob 转换流程),请勿擦除对应地址范围。
测试示例应用
完整的测试方法请参考 nxp_examples_freertos_platforms.md 中的 "Testing the example" 一节,测试通常配合 CHIP Tool 控制器完成:
- Matter over Wi-Fi:使用
ble-wifi配对方式完成配网; - Matter over Thread:使用
ble-thread配对方式; - Wi-Fi + Border Router:通过 TBR management cluster 或 Matter CLI 的
otcli命令创建/加入 Thread 网络(详细步骤见 nxp_otbr_guide.md),设备本身通过ble-wifi配网。
UART 连接细节
启用 CLI 后测试需要同时连接 UART1 与 UART2:
| 端口 | 硬件接口 | 连接方式 |
|---|---|---|
| UART1 | Flexcomm3 | 直接插入 USB 线查看输出 |
| UART2 | Flexcomm0 | 引脚接到 USB-to-UART 适配器 |
UART2 引脚位置:
NXP RD-RW612-BGA:使用连接器HD2 pin 03;NXP FRDM-RW612:使用J5 pin 4(mikroBUS 的 TX)。
两个串口参数均为:波特率 115200、8 数据位、1 停止位、无校验、无流控。UART1 用于输入 CLI 命令,UART2 用于打印 Matter 运行日志。
Matter CLI 附加命令
NXP 应用在默认 Matter CLI 之外支持以下附加命令(默认命令列表见 examples/shell/README.md):
> help [...] mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off] matterfactoryreset Perform a factory reset on the device matterreset Reset the devicematterfactoryreset:完全擦除文件系统(所有 Matter 设置被清除);matterreset:设备重启但保留设置。
通过 otcli 启动 Thread 网络(Border Router)
由于 OpenThread 协议栈更新,直接设置 channel/panid/network key 已不足以组网,需先初始化新的 dataset:
> otcli dataset init new Done > otcli dataset Active Timestamp: 1 Channel: 25 Channel Mask: 0x07fff800 Ext PAN ID: 42af793f623aab54 Mesh Local Prefix: fd6e:c358:7078:5a8d::/64 Network Key: f824658f79d8ca033fbb85ecc3ca91cc Network Name: OpenThread-b870 PAN ID: 0xb870 PSKc: f438a194a5e968cc43cc4b3a6f560ca4 Security Policy: 672 onrc 0 Done > otcli dataset panid 0xabcd Done > otcli dataset channel 25 Done > otcli dataset commit active Done > otcli ifconfig up Done > otcli thread start Done > otcli state leader Donestate返回leader即表示当前设备已成为 Thread 网络中的 Leader。
OTA 软件升级
RW61x 示例支持 Over-The-Air 软件升级,具体操作流程(包括 MCUBoot、SW v2 等变体)请参阅专用指南 Matter Over-The-Air Software Update with NXP RW61x example applications。
在 GN 构建中启用 OTA 时,需要同时设置chip_enable_ota_requestor=true与no_mcuboot=false。从 BUILD.gn 可以看出:当启用 OTA 且使用 MCUBoot 时,链接器会为 bootloader 预留0x20000(128 KB)空间;若设置no_mcuboot=true,应用会链接在 Flash 基址,构建时会打印警告提示这将导致无法应用软件更新。CMake 侧可选用prj_wifi_ota*.conf、prj_thread_ftd_ota*.conf、prj_eth_ota*.conf等配置组合(见前文配置表)。
Thread Border Router 概览
启用 Thread Border Router 支持的方法见上文构建一节(Wi-Fi + Thread 双栈,CHIP_DEVICE_CONFIG_ENABLE_TBR=1)。完整的 Border Router 指南位于 nxp_otbr_guide.md,其中包含 TBR management cluster 的使用方法以及 secondary network commissioning interface 的启用方式(后者需在 GN 参数中增加chip_enable_secondary_nwk_if=true与chip_device_config_thread_network_endpoint_id=2,且目前仅在 thermostat 应用的 Wi-Fi + OTBR 配置下支持)。
扩展:启用 SE05x 安全元件
RW61x 可将密码学运算(crypto operations)卸载到外接的 NXP SE05x 安全元件。
硬件连接
使用 OM-SE051ARD 扩展板时的连接关系如下:
| 信号 | FRDM-RW612 引脚 | OM-SE051ARD 引脚 |
|---|---|---|
| I2C SDA | J1_2 | J2_9 |
| I2C SCL | J1_4 | J2_10 |
| 3V3 | J3_8 | J8_4 |
| GND | J3_14 | J8_7 |
| ENA(可选) | J1_12 | J1_6 |
构建选项
使用 CMake 配置,通过-DCONFIG_CHIP_SE05X=y将密码学运算卸载到 SE05x:
ubuntu@ubuntu-Latitude-5420:~/matter/connectedhomeip$ west build -d <out_dir> -b frdmrw612 examples/thermostat/nxp/ -DCONF_FILE_NAME=prj_wifi.conf -DCONFIG_CHIP_SE05X=y注意:如需通过使能引脚(enable pin)控制安全元件,需将 OM-SE051ARD 板上的跳线 J14 接到 3-4 引脚,并额外使用-DCONFIG_SE05X_HOST_GPIO=y构建,以允许 frdm-rw61x 的 GPIO 按需控制使能引脚。
SE05x 的更多配置细节(如安全通道协议-DCONFIG_SE05X_SCP03)请参阅 SE05x 指南。SE05x 集成在 CMake 侧通过 app_se05x.cmake 与third_party/simw-top-mini模块接入(见 examples/thermostat/nxp/zephyr/CMakeLists.txt)。
参考资料
- CHIP NXP Examples Guide for FreeRTOS platforms:环境搭建、配置文件总表、GN/CMake 通用选项、测试流程
- NXP Manufacturing Flow:制造数据生成与写入
- Matter OTA with RW61x:OTA 升级完整流程
- NXP OpenThread Border Router Guide:Border Router 配置与 TBR management cluster
- NXP SE05x Guide:SE05x 安全元件配置
- 源码参考:examples/thermostat/nxp/rt/rw61x/BUILD.gn、examples/all-clusters-app/nxp/zephyr/CMakeLists.txt、examples/platform/nxp/config
【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考