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. В примере используется конфигурация « Generic Switch Node ». Убедитесь, что перемычки JP4/JP7 находятся в крайнем левом положении (LPC-JN UART0):
    изображение

  1. Загрузите и установите JLink на свой компьютер.
  2. На плате убедитесь, что на перемычке BOOT рядом с портом USB выбран 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 обратно в положение NORMAL . Теперь ваша плата перенастроена для использования JLink для прошивки образа.
    изображение

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

  1. Подготовьте репо:
    source ./scripts/activate.sh
  2. Установить зависимости:
    pip3 install pycrypto pycryptodome
  3. Обновите VENDOR_ID в конфигурации вашего примерного проекта ( CHIPProjectConfig.h ). Это должен быть ваш VID в соответствии со Matter specification, or a VID allocated for testing purposes . The value you provide for VENDOR_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
  4. Проверьте 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
  5. Создайте приложение освещения:
    1. Если плата расширения 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
    2. Если плата расширения 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 , который представляет собой модуль 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. Запустите командную строку 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 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 будет успешно построен, создайте проект разработчика .