NXP

К32В

Этот пример функционирует как тип устройства с лампочкой с возможностью включения/выключения. Действия были проверены на плате разработки NXP K32W (комплект разработки IOTZTB-DK006).

Начальная настройка

  1. Убедитесь, что у вас установлен Python3 и эти пакеты. Шаги, описанные в этом документе, были проверены на Python 3.8.
  2. Загрузите и установите K32W061 MCUXpresso SDK 2.6.9 .
  3. После сборки SDK загрузите пакет SDK и распакуйте его в свой домашний каталог. Установите переменную среды NXP_K32W0_SDK_ROOT туда, где вы извлекли SDK. Мы также рекомендуем добавить эту команду в файл .*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. На плате убедитесь, что на перемычке BOOT рядом с портом USB выбран DFU , и подключите плату к компьютеру с помощью кабеля mini 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 обратно в положение NORMAL . Ваша плата теперь переконфигурирована для использования JLink для прошивки образа.
    изображение

Создайте образ

  1. Подготовьте репозиторий:
    source ./scripts/activate.sh
  2. Установите зависимости:

    pip3 install pycrypto pycryptodome

  3. Обновите 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-VID
1. Проверьте 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 0x4B4C
1. Создайте приложение освещения: 1. **Если к вашей плате K32W подключена плата расширения OM15082**, обязательно установите для аргумента сборки `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
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_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:
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/

Прошить плату

  1. Запустите командную строку JLink, подключив плату с помощью кабеля mini USB:
    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. Выйдите из интерфейса командной строки JLink, набрав команду exit .
  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 RESET на основной плате, чтобы запустить образ.

Подтвердить пример

  1. Устройство должно представить себя как последовательное USB-устройство на вашем компьютере. Вы можете посмотреть его в /dev/ :
    ls -la /dev/tty*
    Вы можете открыть последовательную консоль с помощью сценария python3 detokenizer.py, который представляет собой сценарий, который декодирует токенизированные журналы Pigweed из последовательного порта. Например, если устройство находится по адресу /dev/ttyACM0 :
    python3 ./scripts/detokenizer.py serial -i /dev/ttyACM0 -d out/debug/chip-k32w061-light-example-database.bin
  2. Для сброса платы к заводским настройкам нажмите кнопку 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
  3. Чтобы переключить состояние лампочки (вкл/выкл), нажмите кнопку SW3 . Он должен переключить светодиод D3 .

Предпосылки для ввода в эксплуатацию

Перед вводом в эксплуатацию платы разработки NXP K32W обратите внимание на следующее:

  1. Рекламу BLE необходимо включить, прежде чем устройство можно будет обнаружить и ввести в эксплуатацию в экосистеме Google Home. Чтобы временно включить рекламу (на 15 минут, согласно спецификации Matter ), нажмите кнопку ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС .
  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 будет успешно построен, создайте проект разработчика .