请注意!新的开发者预览版计划即将推出。点击此处申请,抢先试用新工具并提供反馈。

NXP

K32W

此示例用作灯泡设备类型(具有开启/关闭功能)。 这些步骤已在 NXP K32W 开发板 (IOTZTB-DK006 开发套件) 上完成验证。

初始设置

  1. 确保您已安装 Python3 和这些软件包。本文档中的步骤已使用 Python 3.8 进行了验证。
  2. 下载并安装 K32W061 MCUXpresso SDK 2.6.9
  3. 构建 SDK 后,下载 SDK 软件包并将其解压缩到主目录中。将环境变量 NXP_K32W0_SDK_ROOT 设置为您解压缩 SDK 的位置。我们还建议您将此命令添加到您使用的 shell 的 .*rc 文件中,例如 .zshrc
    export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
  4. 克隆并初始化 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
    

  5. 该示例使用“通用切换节点”配置。请确保跳线 JP4/JP7 位于最左边的位置 (LPC-JN UART0):
    映像

  1. 在计算机上下载并安装 JLink
  2. 在开发板上,务必在 USB 端口上的 BOOT 插孔上选择 DFU,并使用一根迷你 USB 线将开发板连接到计算机。
    映像
  3. 在计算机上下载并安装 LPCScrypt
    1. 对于 MacOS,请双击已下载的软件包进行安装。
    2. 对于 Linux,转到下载软件包的文件夹:
      chmod +x lpcscrypt-2.1.2_57.x86_64.deb.bin
      ./lpcscrypt-2.1.2_57.x86_64.deb.bin
  4. 安装 LPCScrypt 后,执行此脚本以重新设置开发板(将 <LPCScrypt_InstallDir> 替换为 LPCScrypt 的实际安装路径):
    <LPCScrypt_InstallDir>/scripts/program_JLINK
  5. 您应该会看到类似如下的消息。按空格键开始编程。完成后,按 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)
  6. 拔下开发板,然后将 BOOT 跳线切换回正常。您的开发板现已重新配置为使用 JLink 刷写映像。
    映像

构建映像

  1. 准备代码库:
    source ./scripts/activate.sh
  2. 安装依赖项:
    pip3 install pycrypto pycryptodome
  3. 更新示例项目配置中的 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
  4. 检查示例项目配置中的 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
  5. 构建照明应用:
    1. 如果 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
    2. 如果未附加 OM15082 扩展板,请忽略 chip_with_OM15082 build 参数:
      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
      请注意,Pigweed Tokenizer 是一个 pigweed 模块,它可对字符串进行哈希处理,从而显著减少日志所需的闪存,通过将 chip_pw_tokenizer_logging 设为 true 即可启用。解析经过哈希处理的脚本需要使用去标记器脚本。如需了解详情,请参阅此处
  6. 对于 MacOS 用户(如果您不在 MacOS 上构建,请跳过此步骤):

    在文本编辑器中打开 sign_images.sh 脚本(位于 $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh),并进行以下更改:

    1. 注释掉或移除以下几行代码,以解决 MacOS 上的“软件包未安装”错误:
      is_linux_package_installed "python3"
      is_linux_package_installed "python3-pip"
    2. 修正 file 实用程序的参数(“-ib”应为“-Ib”),否则签名脚本会以静默方式无法生成 .bin 文件:
      MIME_SET="$(file -ib $FILENAME)"
      更改为:
      MIME_SET="$(file -Ib $FILENAME)"
  7. 为映像签名:

    chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
    $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/

刷写开发板

  1. 使用迷你 USB 线将开发板的 JLink 命令行连接起来:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  2. 在 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.
  3. 然后使用 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.
  4. 输入 exit 以退出 JLink CLI。
  5. 重新启动 JLink:
    JLinkExe -device K32W061 -if SWD -speed 4000 -autoconnect 1
  6. 再次刷写映像,这次跳过 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.
  7. loadbin 命令完成后,按展开板上的 SW2 按钮可恢复出厂设置,然后按主板上的 SW4 重置按钮开始运行映像。

验证示例

  1. 设备应在计算机上以 USB 串行设备的形式显示。您可以在 /dev/ 中查找该文件:
    ls -la /dev/tty*
    您可以使用 python3 脚本 detokenizer.py 打开串行控制台,python 脚本是一个从串行端口解码 Pigweed 令牌化日志的脚本。例如,如果设备处于 /dev/ttyACM0 状态:
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. 如需将该板恢复出厂设置,请按 SW2 按钮。LED2LED3 会闪烁一段时间。您应该会在串行控制台中看到如下所示的消息:
    [Info]Factory Reset Triggered. Push the RESET button within 6000 ms to cancel!
    [Info]Device will factory reset...
    [Info]Performing factory reset
  3. 如需切换灯泡状态(开启/关闭),请点击 SW3 按钮。系统应切换 LED D3 模式。

调试前提条件

调试 NXP K32W 开发板之前,请注意以下事项:

  1. 您需要先启用 BLE 广告,然后才能在 Google Home 生态系统中发现并调试该设备。如需暂时启用广告(15 分钟,按照 Matter 规范),请按 USERINTERFACE 按钮。
  2. 如果没有加密硬件加速器模块,K32 开发板可能无法在流程从 Android 移动设备端超时之前完成调试。您可以在手机连接的计算机上使用 adb logcat 识别是否发生了超时。发生超时时,您会看到如下日志消息:

    Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout

    如需详细了解如何设置和使用 adb,请参阅问题排查

后续步骤

成功构建 Matter 示例后,创建开发者项目