Matter RT1170 平台开发实战指南:基于 connectedhomeip 构建 Wi-Fi/Thread/Wi-Fi+OTBR 应用
【免费下载链接】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(Project Matter 官方仓库)中的docs/platforms/nxp/nxp_rt1170_guide.md及其关联源码整理,聚焦 NXP MIMXRT1170-EVK-B 开发板与 IW612 三射频模组(Wi-Fi + BLE + 802.15.4)的组合方案。读完本文,你将掌握 RT1170 硬件接线与跳线设置、CMake 构建命令与配置项选择、制造数据写入、J-Link 烧录调试,以及 OTA 升级与 Thread Border Router 的完整落地流程。
一、平台定位与支持的配置
RT1170 应用示例基于 Matter 代码库与 NXP MCUX SDK 构建,目标板卡默认为 NXP MIMXRT1170-EVKB(主机侧),配合外置 IW612 无线模组实现射频功能。从源码结构看,该平台的构建入口为 examples/platform/nxp/rt/rt1170/BUILD.gn,它引入了build_overrides/nxp_sdk.gni并配置了app/project_include、common/util/include、common/mbedtls等公共包含路径,供 GN 构建体系使用;而当前推荐的构建方式则是 CMake(见下文第五节)。
官方示例支持三种组网形态:
- Matter over Wi-Fi
- Matter over OpenThread(Thread)
- Matter over Wi-Fi 且带 OpenThread Border Router 支持(即 Wi-Fi + Thread BR 双接口)
目前 RT1170 上同时支持 Wi-Fi 与 Thread 的硬件组合是RT1170 + IW612(Wi-Fi + BLE + 15.4 三合一)。需要注意的一点:在 CMake 构建中,若未通过CONF_FILE_NAME指定prj_<flavour>.conf配置文件,默认配置就是Matter over Wi-Fi。这一点与 Kconfig 默认值一致——在 config/nxp/chip-cmake-freertos/Kconfig.defaults 中,CHIP_WIFI对CHIP_NXP_PLATFORM_RT1170平台默认y,这就是“不指定配置文件即得到 Wi-Fi 应用”的根源。
二、硬件准备:RT1170 + IW612 接线与跳线设置
2.1 物料清单
主机侧需要 1 块 MIMXRT1170-EVK-B;射频侧需要:
- 1 个 NXP2EL M2 A1 IW612 Secure Module(2.4/5GHz 双频 1x1 Wi-Fi 6 + Bluetooth 5.2 + 802.15.4 三射频模组)
- 1 个 MuratauSD to M2 适配器(revC),用于承载 IW612 的 M.2 金手指
- 若干 Male to Female 杜邦线
2.2 SPI 支持的硬件飞线(Rework)
由于 MIMXRT1170-EVK-B 出厂默认未全部引出 SPI 信号,要支持 Spinel over SPI 通信,必须拆除 0Ω 电阻 R404、R406、R2015。这是使用 IW612 模组前必做的一步,否则 SPI 链路不通。
2.3 接线拓扑
物理连接顺序:IW612 模组插到 Murata uSD-to-M2 适配器的 M.2 插槽,再将该适配器通过SD-IO接口插到 RT1170 开发板上。适配器与 RT1170 之间的信号包括:Spinel over SPI(控制 15.4 射频)、I2C(编程 IW612 上的 IO_Expander)、UART(BLE 协议栈通道与复位信号)。
Murata uSD-to-M2 适配器跳线位置(使用 USB-C 供电):
| 跳线 | 位置 |
|---|---|
| J1 | 1-2 |
| J12 | 1-2 |
| J13 | 1-2 |
| J14 | 1-2 |
| JP1.1(背面) | ON |
MIMXRT1170-EVK-B 跳线位置:
| 跳线 | 位置 |
|---|---|
J56 | 2-3 |
I2C 连接(用于编程 IW612 上的 IO_Expander):
| MIMXRT1170-EVK-B | uSD-M2 适配器 |
|---|---|
I2C_SDA (J10.18) | J5.2 |
I2C_SCL (J10.20) | J5.4 |
SPI 连接(RT1170 ↔ uSD-M2 适配器):
| MIMXRT1170-EVK-B | uSD-M2 适配器 |
|---|---|
SPI_MOSI (J10.8) | J5.10 |
SPI_MISO (J10.10) | J9.7 |
SPI_CLK (J10.12) | J9.8 |
SPI_CS (J10.6) | J5.8 |
SPI_INT (J26.4) | J5.6 |
GND (J10.14) | J5.15 |
UART(BLE)与 Reset 连接(RT1170 ↔ uSD-M2 适配器):
| MIMXRT1170-EVK-B | uSD-M2 适配器 |
|---|---|
RESET (J26.2) | J9.3 |
UART_RXD (J25.13) | J9.1 |
UART_TXD (J25.15) | J9.2 |
UART_CTS (J25.9) | J8.4 |
UART_RTS (J25.11) | J8.3 |
GND (J26.1) | J7.6 |
说明:Spinel over SPI 承载 OpenThread 对 IW612 15.4 射频的驱动,I2C 用于初始化模组上的 IO 扩展器,UART 则承载 BLE 协议栈(BLE 用于 Matter 配网)并提供硬件复位通路。三者缺一不可。
三、构建环境准备(FreeRTOS 平台通用)
RT1170 属于 NXP FreeRTOS 系列平台之一,环境准备遵循通用的 Matter NXP Examples Guide for FreeRTOS platforms。摘要如下(在 connectedhomeip 仓库根目录执行):
- 仅检出 NXP 相关子模块:
scripts/checkout_submodules.py --shallow --platform nxp --recursive- 激活 Matter 环境(首次或环境过期时用 bootstrap,否则用 activate):
source scripts/bootstrap.sh -p all,nxp # 或 source scripts/activate.sh- 安装 NXP MCUX SDK:
third_party/nxp/nxp_matter_support/scripts/update_nxp_sdk.py --platform common- 加载 SDK 环境变量:
source <path to mcux sdk>/mcux-env.sh- 导出 ARMGCC_DIR(CMake 构建必需,指向 ARM GCC 工具链根目录,可使用 Matter 环境自带的工具链):
export ARMGCC_DIR=/path/to/connectedhomeip/.environment/cipd/packages/arm注意:步骤 2、4、5 需要在每个新的终端会话中重复执行。
四、构建系统现状:RT1170 当前支持 CMake
原指南明确 RT1170 平台当前支持CMake构建系统(基于 west + MCUX SDK 的 CMake/Kconfig 体系)。构建流程要点在 examples/all-clusters-app/nxp/CMakeLists.txt 中体现:
- 若提供了
CONF_FILE_NAME变量,构建系统会把examples/platform/nxp/config/${CONF_FILE_NAME}拼入CONF_FILE列表; - 应用自身的
prj.conf始终排在CONF_FILE最前面参与 Kconfig 合并; - 通过
find_package(McuxSDK 3.0.0)加载 MCUX SDK 包,并引入chip-cmake-freertos模块与 SE05x 安全元件库(third_party/simw-top-mini/repo/matter); - 通过
chip_configure_data_model()加载数据模型(all-clusters 使用all-clusters-app.zap)。
一个值得注意的实现细节:该 CMakeLists 中对CONFIG_CHIP_WIFI AND CONFIG_NET_L2_OPENTHREAD的组合会直接FATAL_ERROR,即all-clusters-app 本身不支持“Wi-Fi + Thread BR”组合;该组合面向 thermostat 等支持次级网络接口的示例(GN 通用参数表中也注明次级网络配网接口目前仅 thermostat 支持)。选择配置时需按“示例 × 平台”的兼容表核对,不能只看平台能力。
五、CMake 构建命令详解
构建命令格式(以 All-Clusters 应用为例):
west build -d build_matter -b evkbmimxrt1170 examples/all-clusters-app/nxp \ -DCONF_FILE_NAME=prj_wifi.conf -Dcore_id=cm7 \ -DCONFIG_MCUX_COMPONENT_component.wifi_bt_module.IW61X=y参数说明:
-d build_matter:构建输出目录(build_dir)。-b evkbmimxrt1170:目标板名,对应 MIMXRT1170-EVK-B。-Dcore_id=cm7:RT1170 为双核(Cortex-M7 + Cortex-M4),Matter 应用运行在 M7 核上。-DCONFIG_MCUX_COMPONENT_component.wifi_bt_module.IW61X=y:Kconfig 开关,启用 IW612 收发器组件。-DCONF_FILE_NAME=prj_wifi.conf:选择examples/platform/nxp/config/下的配置风味文件。
可用的 RT1170 配置文件(摘自 NXP FreeRTOS 平台指南的配置兼容表):
| 配置文件 | 能力 |
|---|---|
prj_wifi.conf | Wi-Fi |
prj_wifi_fdata.conf | Wi-Fi + 工厂数据 |
prj_wifi_ota.conf/prj_wifi_ota_v2.conf | Wi-Fi + OTA(v2 软件版本) |
prj_wifi_ota_fdata.conf/prj_wifi_ota_fdata_v2.conf | Wi-Fi + 工厂数据 + OTA |
prj_wifi_onnetwork.conf | Wi-Fi on-network 配网(无 BLE) |
prj_thread_ftd.conf | Thread FTD |
prj_thread_ftd_fdata.conf | Thread FTD + 工厂数据 |
prj_thread_ftd_ota.conf/prj_thread_ftd_ota_fdata.conf | Thread FTD + OTA(+ 工厂数据) |
prj_thread_ftd_wifi_br_ota*.conf | Wi-Fi + Thread BR + OTA(v2 变体见表) |
配置文件内容示例(仓库中的 prj_wifi.conf 实际只有一行核心配置CONFIG_CHIP_WIFI=y)。以 Wi-Fi + Thread BR + OTA 的 prj_thread_ftd_wifi_br_ota.conf 为例,它同时打开了CONFIG_NET_L2_OPENTHREAD、CONFIG_CHIP_OPENTHREAD_FTD、CONFIG_CHIP_WIFI、CONFIG_CHIP_SECONDARY_NETWORK_IF、CONFIG_CHIP_THREAD_NETWORK_ENDPOINT_ID=2以及CONFIG_CHIP_OTA_REQUESTOR——这正是 TBR 应用“双网络接口 + OTA”的 Kconfig 表达。
提示:BLE 与 Matter-CLI 在 CMake 构建的 Matter 应用中默认启用,如需关闭请参考 如何定制 CMake 构建(可用
-DCONFIG_<symbol>=<value>直接覆盖,或用-DCONF_FILE=<绝对路径1>;<绝对路径2>追加多个自定义 prj.conf)。
构建产物位于build_dir/app.elf。
六、制造数据(Manufacturing Data)
NXP 平台的制造数据写入流程见 NXP 设备制造数据写入指南。RT1170 示例的补充要点:all-clusters 应用演示了加密的 Matter 制造数据存储——制造数据(证书、密钥、Spake2 验证器等)在烧录进设备 Flash 之前,需要用 AES-128 软件密钥加密。
Kconfig 侧对应CHIP_FACTORY_DATA相关选项(见 prj_wifi_ota_fdata.conf 中CONFIG_CHIP_FACTORY_DATA=y、CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED=y、CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER=y)。RT1170 平台在 Kconfig.defaults 中的默认出厂信息包括:Vendor ID4151(0x1037)、产品 ID41511、设备鉴别器0xA00、Spake2 口令14014、旋转设备 UID 与序列号默认值等,生产替换时应通过工厂数据或 Kconfig 覆盖这些值。
七、烧录与调试(J-Link)
官方推荐使用 Segger J-Link 烧录。连接与擦除步骤:
$ JLink J-Link > connect Device> ? # 弹出对话框,选择 MIMXRT1176xxxA_M7 Please specify target interface: J) JTAG (Default) S) SWD T) cJTAG TIF> S Specify target interface speed [kHz]. <Default>: 4000 kHz Speed> # 直接回车 J-Link > exec EnableEraseAllFlashBanks J-Link > erase 0x30000000, 0x34000000其中0x30000000–0x34000000是 RT1170 外部 Flash 的完整范围(128 MB 地址窗口)。然后写入应用可执行文件:
J-Link > loadfile <application_binary>若使用裸二进制格式,可改为指定加载基址0x30000000:
J-Link > loadbin <application_binary>.bin 0x30000000该基址与 OTA 分区布局一致:MCUBoot 位于 Flash 底部,主应用分区自
0x30040000起(见下节)。未启用 OTA 时直接loadbin到0x30000000即可覆盖整个外部 Flash 起始区域。
八、测试示例:配网验证与 UART 细节
测试流程复用 FreeRTOS 平台通用指南的 Testing the example 章节:使用 CHIP Tool 控制器完成配网——Wi-Fi 配置用ble-wifi配对方式,Thread 配置用ble-thread,Wi-Fi + OTBR 配置先用ble-wifi配网设备、再通过 TBR 管理簇或 Matter CLI 的otcli命令创建/加入 Thread 网络。
RT1170 平台的UART 接线细节(原文档“Testing the example / UART details”一节):
- UART1:命令输入口(Matter-CLI),可直接插入 USB 线(板载 USB-UART 通道)查看;
- UART2:日志输出口,需要将J9 连接器的 pin 4接至 USB-UART 适配器查看。
串口参数统一为:115200 波特率、8 数据位、1 停止位、无校验、无流控。开启 CLI 的完整测试还需连接 UART1 与 UART2 两路串口,并在 CLI 中可用 NXP 扩展命令mattercommissioning [on|off]、matterfactoryreset(彻底擦除文件系统)、matterreset(不擦设置重启)等。
九、OTA 软件更新
RT1170 示例支持 OTA 空中软件更新,完整流程见专项指南 Matter Over-The-Air Software Update with NXP RT example applications。核心机制概述:
- Flash 布局:MCUBoot 位于 Flash 底部;主应用分区与副应用分区各预留 4.4 MB(可通过修改应用链接脚本中的
m_app_max_sectors调整)。 - 升级模式:RTs 平台默认使用 MCUBootDIRECT-XIP(Flash remapping)模式完成镜像切换。
- 流程:OTA Requestor 从 OTA Provider 拉取镜像 → 分块存至外部 Flash → 通知 Bootloader 重启进入测试模式 → 成功则永久生效,失败则回滚主分区。
- RT1170 相关地址:擦除外部 Flash 用
J-Link > erase 0x30000000, 0x34000000;带签名的应用镜像烧写地址为0x30040000(loadbin <app>_SIGNED.bin 0x30040000)。 - CMake 自动化:启用 OTA 后,MCUBoot 二进制、签名应用镜像与
.ota文件由third_party/nxp/nxp_matter_support/cmake/build_helpers.cmake自动生成;软件版本默认 1,构建 v2 版本可选带v2后缀的prj_*_v2.conf,或传-DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 -DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING="2.0"。 - OTA 加密(可选):镜像可用 AES-128 加密,CMake 侧对应
-DCONFIG_CHIP_OTA_ENCRYPTION=y与-DCONFIG_CHIP_OTA_ENCRYPTION_KEY=<aes_128_key>,密钥须与应用构建端一致。
Kconfig 层面,Kconfig.defaults 显示 RT1170 平台在启用CHIP_OTA_REQUESTOR时默认CHIP_OTA_IMAGE_BUILD=y,即构建时自动生成 OTA 更新镜像;软件版本默认值为1/"1.5"(L78–L82)。
十、Thread Border Router(OTBR)
Wi-Fi + OpenThread BR 组合的使能入口就是第五节的构建配置(选择prj_thread_ftd_wifi_br_ota*.conf一类文件并指定-Dcore_id=cm7等参数)。完整 BR 使用手册(TBR 管理簇的 set/get active dataset、set pending dataset 流程、次级网络配网接口、Thread 凭据共享机制)见 Thread Border Router usage 指南。
典型工作流:设备经 Wi-Fi 配网后,先用generalcommissioning arm-fail-safe启动失效保护定时器,再向 endpoint 2 的threadborderroutermanagement簇下发set-active-dataset-request,Thread 接口即被激活并创建/加入 PAN,最后commissioning-complete提交配置。对于已持有活跃 dataset 的设备,需改用set-pending-dataset-request。
十一、关键文件索引
| 内容 | 路径 |
|---|---|
| 本指南原文 | docs/platforms/nxp/nxp_rt1170_guide.md |
| FreeRTOS 平台通用构建/测试指南 | docs/platforms/nxp/nxp_examples_freertos_platforms.md |
| 平台配置风味文件(prj_*.conf) | examples/platform/nxp/config |
| All-clusters 应用 CMake 入口 | examples/all-clusters-app/nxp/CMakeLists.txt |
| Kconfig 默认值(Wi-Fi 默认开、产品 ID 等) | config/nxp/chip-cmake-freertos/Kconfig.defaults |
| RT1170 平台 GN 构建配置 | examples/platform/nxp/rt/rt1170/BUILD.gn |
| 制造数据写入指南 | docs/platforms/nxp/nxp_manufacturing_flow.md |
| OTA 更新指南 | docs/platforms/nxp/nxp_RTs_ota_software_update.md |
| Thread BR 指南 | docs/platforms/nxp/nxp_otbr_guide.md |
适用前提与限制:本文适用于当前仓库版本中 NXP FreeRTOS 构建体系(CMake + west,要求 CMake ≥ 3.30 与 MCUX SDK ≥ 3.0.0);RT1170 平台的无线能力依赖 IW612 模组与前述硬件 rework;all-clusters-app 不支持 Wi-Fi + Thread BR 组合(构建时会被显式拦截),该组合请选用支持次级网络接口的示例(如 thermostat)。
【免费下载链接】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),仅供参考