Matter NXP RW61x 平台应用开发指南:FreeRTOS 下的构建、烧录、调试与安全配置
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本指南以 connectedhomeipMatter / Project CHIP仓库中的 docs/platforms/nxp/nxp_rw61x_guide.md 为核心系统讲解 Matter 应用在 NXP RW61xRW610/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-FiWi-Fi 直连BLE 配网Matter over OpenThreadThread 低功耗 mesh 网络Matter over Wi-Fi OpenThread Border RouterWi-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命令构建应用与 SDKMatter 协议栈部分仍由 GN 编译后链接进应用。CMake 工程入口见 examples/thermostat/nxp/zephyr/CMakeLists.txt。硬件需求不同网络配置对天线的要求如下配置RD-RW612-BGARD-RW610-BGAFRDM-RW612Matter 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 相关子模块userubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursiveStep 2激活 Matter 环境首次配置或本地环境过期时运行userubuntu:~/Desktop/git/connectedhomeip$ source scripts/bootstrap.sh -p all,nxp环境已就绪时可直接激活userubuntu:~/Desktop/git/connectedhomeip$ source scripts/activate.shStep 3安装 NXP MCUX SDKuserubuntu:~/Desktop/git$ third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform commonStep 4source mcux-env.shuserubuntu:~/Desktop/git/connectedhomeip$ source path to mcux sdk/mcux-env.shStep 5导出 ARMGCC_DIR仅 CMake 构建需要CMake 构建要求ARMGCC_DIR指向 ARM GCC 工具链根目录可使用 Matter 环境安装的工具链userubuntu:~/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 构建的通用命令格式为userubuntu:~/Desktop/git/connectedhomeip$ west build -d build_dir -b board examples/example_name/nxp -DCONF_FILE_NAMEprj_flavour.conf其中build_dir构建输出目录board目标板卡名称RW61x 平台可选rdrw612bgaRD-RW612-BGA或frdmrw612FRDM-RW612examples/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板卡userubuntu:~/Desktop/git/connectedhomeip$ west build -d build_matter -b frdmrw612 examples/all-clusters-app/nxp -DCONF_FILE_NAMEprj_wifi.confEthernet 配置的 CMake 构建示例prj_eth.conf使用 Thermostat 应用userubuntu:~/Desktop/git/connectedhomeip$ west build -d build_matter -b frdmrw612 examples/thermostat/nxp -DCONF_FILE_NAMEprj_eth.conf可用项目配置文件与平台兼容性CONF_FILE_NAME可取的配置在 nxp_examples_freertos_platforms.md 中有完整清单与 RW61x 相关的核心配置如下配置文件描述支持平台prj_wifi.confWi-FiRW61x, RT1060, RT1170prj_wifi_fdata.confWi-Fi factory dataRW61x, RT1060, RT1170prj_wifi_ota_fdata.confWi-Fi factory data OTARW61x, RT1060, RT1170prj_wifi_ota.confWi-Fi OTARW61x, RT1060, RT1170prj_wifi_onnetwork.confWi-Fi onnetwork无 BLERW61x, RT1060, RT1170prj_thread_ftd.confThread FTDRW61x, RT1060, RT1170, MCXW71, MCXW72prj_thread_ftd_fdata.confThread FTD factory dataRW61x, RT1060, RT1170, MCXW71, MCXW72prj_thread_ftd_wifi_br_ota.confWi-Fi Thread Border Router OTARW61x, RT1060, RT1170prj_thread_ftd_wifi_br_ota_fdata.confWi-Fi Thread Border Router OTA factory dataRW61x, RT1060, RT1170prj_eth.confEthernetRW61xfrdmprj_eth_fdata.confEthernet factory dataRW61xfrdmprj_eth_ota.confEthernet OTARW61xfrdmprj_*配置实际位于 examples/platform/nxp/config不同 flavor 通过叠加启用 Wi-Fi/Thread/factory data/OTA 等能力构建产物位于build_dir/app.elf。CMake 构建的自定义如需进一步定制可直接修改应用的prj.conf或在命令行通过-DCONF_FILE指定自定义配置文件支持多个以分号分隔userubuntu:~/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_DISCRIMINATOR0xF01将 discriminator 设为 0xF01十进制 3841。其他常用参数--config releaserelease 模式构建默认是 debug-Dcore_id多核板卡指定目标核-DCHIP_ROOTout-of-tree 应用指定 connectedhomeip 仓库根路径。关于 BLE 与 Matter CLICMake 构建的 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/rw61xrt表示 FreeRTOS/RT 端口其工程结构由 BUILD.gn 定义。说明原文档中的 GN 命令示例使用了examples/all-clusters-app/nxp/rt/rw61x路径在当前仓库快照中RW61x 的 RT 工程位于examples/thermostat/nxp/rt/rw61xGN 命令应在此类包含rt/rw61x/BUILD.gn的目录下执行并将目录替换为你实际使用的示例工程。Matter over Wi-FiBLE 配网userubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --argschip_enable_wifitrue out/debug userubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debugMatter over ThreadBLE 配网userubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --argschip_enable_threadtrue chip_inet_config_enable_ipv4false chip_config_network_layer_bletrue out/debug userubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debug其中chip_inet_config_enable_ipv4false关闭 IPv4Thread 仅需 IPv6chip_config_network_layer_bletrue启用 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 应用中支持。userubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw610$ gn gen --argschip_enable_wifitrue chip_enable_threadtrue nxp_enable_matter_clitrue out/debug userubuntu:~/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_TBR1并把 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_wifitrue启用 Wi-Fichip_enable_threadtrue启用 Threadchip_enable_blefalse禁用 BLE默认启用nxp_enable_matter_clitrue启用 Matter-CLIis_debugtrue optimize_debugfalsedebug 模式构建nxp_use_factory_datatrue使用预置的制造数据分区证书/密钥chip_enable_ota_requestortrue启用 OTA RequestorRT1060/RT1170/RW61x 需同时加no_mcubootfalseRW61x 特有的 GN 选项board_version选择板卡变体。默认选择NXP RD-RW612-BGA切换为NXP FRDM-RW612时需在gn gen命令中加入board_versionfrdm。对应代码分支见 BUILD.gnfrdm时引入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 支持将 DACDevice Attestation Certificate设备认证证书私钥放入 S50 安全子系统中安全使用但该功能为实验特性存在已知限制并发访问风险对ELSEdgeLock Subsystem密码模块的多次访问之间缺少保护DAC 私钥签名操作可能存在并发访问问题启用方式在gn gen命令中加入nxp_enable_secure_dac_private_key_storagetrue且必须已设置nxp_use_factory_datatrueDAC 私钥生成若需要将明文私钥转换为带 S50 的 blob还需在gn gen中加入chip_convert_dac_private_key1前提是nxp_enable_secure_dac_private_key_storage1已设置。ELS并发访问风险必须在其修复之前保持禁用官方不推荐默认开启该功能。DAC 私钥 blob 生成DAC private key blob generationRW61x 提供一种静态安全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_NAMEprj_wifi_fdata.conf \ -DCONFIG_NXP_FACTORY_DAC_BLOB_GENERATIONy该 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端口硬件接口连接方式UART1Flexcomm3直接插入 USB 线查看输出UART2Flexcomm0引脚接到 USB-to-UART 适配器UART2 引脚位置NXP RD-RW612-BGA使用连接器HD2 pin 03NXP FRDM-RW612使用J5 pin 4mikroBUS 的 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_requestortrue与no_mcubootfalse。从 BUILD.gn 可以看出当启用 OTA 且使用 MCUBoot 时链接器会为 bootloader 预留0x20000128 KB空间若设置no_mcuboottrue应用会链接在 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_TBR1。完整的 Border Router 指南位于 nxp_otbr_guide.md其中包含 TBR management cluster 的使用方法以及 secondary network commissioning interface 的启用方式后者需在 GN 参数中增加chip_enable_secondary_nwk_iftrue与chip_device_config_thread_network_endpoint_id2且目前仅在 thermostat 应用的 Wi-Fi OTBR 配置下支持。扩展启用 SE05x 安全元件RW61x 可将密码学运算crypto operations卸载到外接的 NXP SE05x 安全元件。硬件连接使用 OM-SE051ARD 扩展板时的连接关系如下信号FRDM-RW612 引脚OM-SE051ARD 引脚I2C SDAJ1_2J2_9I2C SCLJ1_4J2_103V3J3_8J8_4GNDJ3_14J8_7ENA可选J1_12J1_6构建选项使用 CMake 配置通过-DCONFIG_CHIP_SE05Xy将密码学运算卸载到 SE05xubuntuubuntu-Latitude-5420:~/matter/connectedhomeip$ west build -d out_dir -b frdmrw612 examples/thermostat/nxp/ -DCONF_FILE_NAMEprj_wifi.conf -DCONFIG_CHIP_SE05Xy注意如需通过使能引脚enable pin控制安全元件需将 OM-SE051ARD 板上的跳线 J14 接到 3-4 引脚并额外使用-DCONFIG_SE05X_HOST_GPIOy构建以允许 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 RW61xOTA 升级完整流程NXP OpenThread Border Router GuideBorder Router 配置与 TBR management clusterNXP SE05x GuideSE05x 安全元件配置源码参考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),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →