К32В
Этот пример работает как устройство типа лампочки с возможностью включения/выключения. Шаги были проверены на макетной плате NXP K32W (комплект для разработки IOTZTB-DK006).
Начальная настройка
- Убедитесь, что у вас установлен Python3 и эти пакеты. Шаги в этом документе были проверены с помощью Python 3.8.
- Загрузите и установите K32W061 MCUXpresso SDK 2.6.9 .
- После сборки SDK загрузите пакет SDK и извлеките его в свой домашний каталог. Установите переменную среды
NXP_K32W0_SDK_ROOT
в то место, куда вы извлекли SDK. Мы также рекомендуем добавить эту команду в файл.*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
В примере используется конфигурация « Generic Switch Node ». Убедитесь, что перемычки JP4/JP7 находятся в крайнем левом положении (LPC-JN UART0):
Переконфигурировать плату для JLink
- Загрузите и установите JLink на свой компьютер.
- На плате убедитесь, что на перемычке BOOT рядом с портом USB выбран 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 обратно в положение NORMAL . Теперь ваша плата перенастроена для использования JLink для прошивки образа.
Создайте образ
- Подготовьте репо:
source ./scripts/activate.sh
- Установить зависимости:
pip3 install pycrypto pycryptodome
- Обновите
VENDOR_ID
в конфигурации вашего примерного проекта (CHIPProjectConfig.h
). Это должен быть ваш VID в соответствии со Matter specification, or a VID allocated for testing purposes . The value you provide forVENDOR_ID
must match the one you use when creating the Matter integration in the Google Home Developer Console .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
может оставаться таким же, как значение по умолчанию в примере, или может быть изменено по желанию, но оно должно соответствовать текущим ограничениям идентификатора продукта, описанным в предварительных требованиях . Также обратите внимание, что значение, которое вы указываете дляPRODUCT_ID
должно совпадать с тем, которое вы используете при создании интеграции Matter в Developer Console .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
значение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
:
Обратите внимание, что токенизатор Pigweed , который представляет собой модуль 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/
Прошить доску
- Запустите командную строку JLink с платой, подключенной кабелем mini USB:
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. - Выйдите из интерфейса командной строки JLink, набрав
exit
. - Перезапустите 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 RESET на основной плате, чтобы запустить образ.
Проверить пример
- Устройство должно представить себя как последовательное USB-устройство на вашем компьютере. Вы можете найти его в
/dev/
:
Вы можете открыть последовательную консоль с помощью сценария python3 detokenizer.py, который представляет собой сценарий, который декодирует токенизированные журналы 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 . Он должен переключать светодиод D3 .
Предварительные условия для ввода в эксплуатацию
Перед вводом в эксплуатацию макетной платы NXP K32W обратите внимание на следующее:
- Реклама BLE должна быть включена, прежде чем устройство можно будет обнаружить и ввести в эксплуатацию в экосистеме Google Home. Для временного включения рекламы (на 15 минут согласно спецификации Matter ) нажмите кнопку ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС .
Без модуля криптографического аппаратного ускорителя плата разработки K32 не сможет завершить ввод в эксплуатацию до истечения времени ожидания потока со Android mobile device side. You can identify that a timeout occurred by using
adb logcat
from a computer attached to your phone. When a timeout occurs, you will see a log message like:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
Дополнительные сведения о настройке и использовании
adb
см. в разделе Устранение неполадок .
Следующие шаги
Когда ваш пример Matter будет успешно построен, создайте проект разработчика .