К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
В примере используется конфигурация « Общий коммутаторный узел ». Убедитесь, что перемычки JP4/JP7 находятся в крайнем левом положении (LPC-JN UART0):
Переконфигурируйте плату для JLink
- Загрузите и установите JLink на свой компьютер.
- На плате убедитесь, что на перемычке BOOT рядом с портом USB выбран DFU , и подключите плату к компьютеру с помощью кабеля mini 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 или VID, выделенный для целей тестирования . Значение, которое вы указываете дляVENDOR_ID
должно совпадать со значением, которое вы используете при создании интеграции Matter в 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-VID1. Проверьте PRODUCT_ID в конфигурации вашего примера проекта (CHIPProjectConfig.h). Значение `PRODUCT_ID` может оставаться таким же, как значение по умолчанию в примере, или изменяться по желанию, но оно должно соответствовать текущим [ограничениям идентификатора продукта, описанным в разделе «Предварительные условия](/matter/get-started#product_id). Также обратите внимание, что значение, которое вы указываете для `PRODUCT_ID`, **должно совпадать** со значением, которое вы используете при [создании интеграции Matter ](/matter/integration/create) в 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 0x4B4C1. Создайте приложение освещения: 1. **Если к вашей плате K32W подключена плата расширения OM15082**, обязательно установите для аргумента сборки `chip_with_OM15082` значение `1`:
1 **Если плата расширения OM15082 не подключена**, опустите аргумент сборки `chip_with_OM15082`: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
Обратите внимание, что [Pigweed tokenizer](https://pigweed.dev/pw_tokenizer){:target="_blank" .external}, который представляет собой модуль pigweed, который позволяет хэшировать строки, чтобы значительно уменьшить объем флэш-памяти, необходимой для журналов, включается выше, устанавливая для `chip_pw_tokenizer_logging` значение `true`. Скрипт детокенизатора понадобится для анализа хешированных скриптов. См. [здесь](https://github.com/project-chip/connectedhomeip/tree/v1.0-branch/examples/lighting-app/nxp/k32w/k32w0#pigweed-tokenizer){:target="_blank" .external} для получения дополнительной информации. 1. **Для пользователей MacOS** (пропустите этот шаг, если вы НЕ работаете на MacOS): откройте сценарий `sign_images.sh` (находится по адресу `$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh`) в текстовом редакторе. и внесите следующие изменения: 1. Закомментируйте или удалите эти строки, чтобы устранить ошибку «пакет не установлен» в MacOS: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
is_linux_package_installed "python3" is_linux_package_installed "python3-pip"1. Исправьте аргумент утилиты `file` ("`-ib`" должен быть " `-Ib`"), иначе сценарий подписи не сможет автоматически создать файл `.bin`:
MIME_SET="$(file -ib $FILENAME)"Измените на:
MIME_SET="$(file -Ib $FILENAME)"1. Подпишите изображение:
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 . Вы можете определить, что произошел тайм-аут, используя
adb logcat
с компьютера, подключенного к вашему телефону. Когда произойдет тайм-аут, вы увидите сообщение журнала, например:Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout
Дополнительную информацию о настройке и использовании
adb
см. в разделе «Устранение неполадок» .
Следующие шаги
Когда ваш пример Matter будет успешно построен, создайте проект разработчика .