K32W
此示例用作灯泡设备类型(具有开启/关闭功能)。 这些步骤已在 NXP K32W 开发板 (IOTZTB-DK006 开发套件) 上完成验证。
初始设置
- 确保您已安装 Python3 和这些软件包。本文档中的步骤已使用 Python 3.8 进行了验证。
- 下载并安装 K32W061 MCUXpresso SDK 2.6.9。
- 构建 SDK 后,下载 SDK 软件包并将其解压缩到主目录中。将环境变量
NXP_K32W0_SDK_ROOT
设置为您解压缩 SDK 的位置。我们还建议您将此命令添加到您使用的 shell 的.*rc
文件中,例如.zshrc
:export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
克隆并初始化 NXP/Micro 代码库:
git clone https://github.com/NXPmicro/matter.git
cd matter
git fetch origin v1.0-branch-nxp
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
该示例使用“通用切换节点”配置。请确保跳线 JP4/JP7 位于最左边的位置 (LPC-JN UART0):
为 JLink 重新配置开发板
- 在计算机上下载并安装 JLink。
- 在开发板上,务必在 USB 端口上的 BOOT 插孔上选择 DFU,并使用一根迷你 USB 线将开发板连接到计算机。
- 在计算机上下载并安装 LPCScrypt。
- 对于 MacOS,请双击已下载的软件包进行安装。
- 对于 Linux,转到下载软件包的文件夹:
chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
./lpcscrypt-2.1.2_57.x86_64.deb.bin
- 安装 LPCScrypt 后,执行此脚本以重新设置开发板(将
<LPCScrypt_InstallDir>
替换为 LPCScrypt 的实际安装路径):<LPCScrypt_InstallDir>/scripts/program_JLINK
- 您应该会看到类似如下的消息。按空格键开始编程。完成后,按 Enter 退出。
LPCScrypt - J-Link firmware programming script v2.1.2 Nov 2020.
Connect an LPC-Link2 or LPCXpresso V2/V3 Board via USB then press Space. Booting LPCScrypt . LPCXpresso V2/V3 programmed with Firmware_JLink_LPCXpressoV2_20190404.bin -To use: remove DFU link and reboot the board
Connect next board then press Space (or <return> to Quit)
- 拔下开发板,然后将 BOOT 跳线切换回正常。您的开发板现已重新配置为使用 JLink 刷写映像。
构建映像
- 准备代码库:
source ./scripts/activate.sh
- 安装依赖项:
pip3 install pycrypto pycryptodome
- 更新示例项目配置中的
VENDOR_ID
(CHIPProjectConfig.h
)。此 ID 必须是符合 CSA Matter 规范的 VID,或者是出于测试目的而分配的 VID。您为VENDOR_ID
提供的值必须与在 Google Home Developer Console 中创建 Matter 集成时使用的值一致。grep VENDOR_ID ./examples/lighting-app/nxp/k32w/k32w0/include/CHIPProjectConfig.h
* CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID #define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID your-hex-VID
- 检查示例项目配置中的
PRODUCT_ID
(CHIPProjectConfig.h
)。PRODUCT_ID
值可以与示例的默认值保持不变,也可以根据需要进行更改,但必须遵循当前前提条件中所述的产品 ID 限制。另请注意,您为PRODUCT_ID
提供的值必须与您在 Developer Console 中创建 Matter 集成时使用的值一致。grep PRODUCT_ID ./examples/lighting-app/nxp/k32w/k32w0/include/CHIPProjectConfig.h
* CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x4B4C
- 构建照明应用:
- 如果 OM15082 扩展板已附加到 K32W 开发板,请务必将
chip_with_OM15082
build 参数设置为1
:cd examples/lighting-app/nxp/k32w/k32w0/
gn gen out/debug --args="k32w0_sdk_root="${NXP_K32W0_SDK_ROOT}" chip_with_OM15082=1 chip_with_ot_cli=0 is_debug=false chip_crypto="platform" chip_with_se05x=0 chip_pw_tokenizer_logging=true chip_enable_ota_requestor=false"
ninja -C out/debug
- 如果未附加 OM15082 扩展板,请忽略
chip_with_OM15082
build 参数:
请注意,Pigweed Tokenizer 是一个 pigweed 模块,它可对字符串进行哈希处理,从而显著减少日志所需的闪存,通过将cd examples/lighting-app/nxp/k32w/k32w0/
gn gen out/debug --args="k32w0_sdk_root="${NXP_K32W0_SDK_ROOT}" chip_with_ot_cli=0 is_debug=false chip_crypto="platform" chip_with_se05x=0 chip_pw_tokenizer_logging=true chip_enable_ota_requestor=false"
ninja -C out/debug
chip_pw_tokenizer_logging
设为true
即可启用。解析经过哈希处理的脚本需要使用去标记器脚本。如需了解详情,请参阅此处。
- 如果 OM15082 扩展板已附加到 K32W 开发板,请务必将
对于 MacOS 用户(如果您不在 MacOS 上构建,请跳过此步骤):
在文本编辑器中打开
sign_images.sh
脚本(位于$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
),并进行以下更改:- 注释掉或移除以下几行代码,以解决 MacOS 上的“软件包未安装”错误:
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"
- 修正
file
实用程序的参数(“-ib
”应为“-Ib
”),否则签名脚本会以静默方式无法生成.bin
文件:MIME_SET="$(file -ib $FILENAME)"
更改为:MIME_SET="$(file -Ib $FILENAME)"
- 注释掉或移除以下几行代码,以解决 MacOS 上的“软件包未安装”错误:
为映像签名:
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
刷写开发板
- 使用迷你 USB 线将开发板的 JLink 命令行连接起来:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- 在 JLink 命令行中,输入
erase
命令以擦除板上的现有映像。如果您之前刷写过开发板,则需要此组件。erase
Without any give address range, Erase Chip will be executed Erasing device... J-Link: Flash download: Total time needed: 2.878s (Prepare: 0.051s, Compare: 0.000s, Erase: 2.789s, Program: 0.000s, Verify: 0.000s, Restore: 0.037s) Erasing done. - 然后使用
loadbin
命令刷写映像:loadbin out/debug/chip-k32w061-light-example.bin, 0
Downloading file [out/debug/chip-k32w061-light-example.bin]... J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (586752 bytes) J-Link: Flash download: Total: 7.492s (Prepare: 0.054s, Erase: 2.738s, Program & Verify: 4.661s, Restore: 0.037s) J-Link: Flash download: Program & Verify speed: 122 KB/s O.K. - 输入
exit
以退出 JLink CLI。 - 重新启动 JLink:
JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
- 再次刷写映像,这次跳过
erase
命令:loadbin out/debug/chip-k32w061-light-example.bin, 0
Downloading file [out/debug/chip-k32w061-light-example.bin]... J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (586752 bytes) J-Link: Flash download: Total: 7.492s (Prepare: 0.054s, Erase: 2.738s, Program & Verify: 4.661s, Restore: 0.037s) J-Link: Flash download: Program & Verify speed: 122 KB/s O.K. loadbin
命令完成后,按展开板上的 SW2 按钮可恢复出厂设置,然后按主板上的 SW4 重置按钮开始运行映像。
验证示例
- 设备应在计算机上以 USB 串行设备的形式显示。您可以在
/dev/
中查找该文件:
您可以使用 python3 脚本 detokenizer.py 打开串行控制台,python 脚本是一个从串行端口解码 Pigweed 令牌化日志的脚本。例如,如果设备处于ls -la /dev/tty*
/dev/ttyACM0
状态:python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
- 如需将该板恢复出厂设置,请按 SW2 按钮。LED2 和 LED3 会闪烁一段时间。您应该会在串行控制台中看到如下所示的消息:
[Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel! [Info]Device will factory reset... [Info]Performing factory reset
- 如需切换灯泡状态(开启/关闭),请点击 SW3 按钮。系统应切换 LED D3 模式。
调试前提条件
调试 NXP K32W 开发板之前,请注意以下事项:
- 您需要先启用 BLE 广告,然后才能在 Google Home 生态系统中发现并调试该设备。如需暂时启用广告(15 分钟,按照 Matter 规范),请按 USERINTERFACE 按钮。
如果没有加密硬件加速器模块,K32 开发板可能无法在流程从 Android 移动设备端超时之前完成调试。您可以在手机连接的计算机上使用
adb logcat
识别是否发生了超时。发生超时时,您会看到如下日志消息:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
如需详细了解如何设置和使用
adb
,请参阅问题排查。
后续步骤
成功构建 Matter 示例后,创建开发者项目。