K32W
이 예는 사용/사용 중지 기능이 있는 전구 기기 유형의 역할을 합니다. 단계는 NXP K32W 개발 보드 (IOTZTB-DK006 개발 키트)에서 검증되었습니다.
초기 설정
- Python3 및 이러한 패키지가 설치되었는지 확인합니다. 이 문서의 단계는 Python 3.8에서 검증되었습니다.
- K32W061 MCUXpresso SDK 2.6.9를 다운로드하여 설치합니다.
- SDK가 빌드되면 SDK 패키지를 다운로드하고 홈 디렉터리에 추출합니다.
NXP_K32W0_SDK_ROOT
환경 변수를 SDK의 압축을 푼 위치로 설정합니다. 또한.zshrc
와 같이 사용 중인 셸의.*rc
파일에 다음 명령어를 추가하는 것이 좋습니다.export NXP_K32W0_SDK_ROOT=$HOME/SDK_2_6_9_K32W061DK6/
NXP/Micro Repository를 클론하고 초기화합니다.
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
이 예에서는 '일반 스위치 노드' 구성을 사용합니다. Jupyter JP4/JP7이 가장 왼쪽 (LPC-JN UART0)에 있는지 확인합니다.
JLink용 보드 재구성
- 컴퓨터에 JLink를 다운로드하여 설치합니다.
- 보드에서 USB 포트 옆의 BOOT 점퍼에 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
- 예시 프로젝트 구성(
CHIPProjectConfig.h
)에서VENDOR_ID
를 업데이트합니다. CSA 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
에 따른 VID여야 합니다. - 프로젝트 예시 구성(
CHIPProjectConfig.h
)에서PRODUCT_ID
를 확인합니다.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
- 조명 앱을 빌드합니다.
- 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 tokenizer는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
로 설정하여 사용 설정합니다. detokenizer 스크립트는 해싱된 스크립트를 파싱하는 데 필요합니다. 자세한 내용은 여기를 참고하세요.
- OM15082 확장 보드가 K32W 보드에 연결되어 있는 경우
MacOS 사용자 (MacOS에서 빌드하지 않는 경우 이 단계를 건너뜀):
텍스트 편집기에서
sign_images.sh
스크립트 ($NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
에 있음)를 열고 다음과 같이 변경합니다.- MacOS에서 '패키지 not installed' 오류를 해결하려면 주석 처리하거나 다음 줄을 삭제합니다.
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에서 '패키지 not installed' 오류를 해결하려면 주석 처리하거나 다음 줄을 삭제합니다.
이미지에 서명합니다.
chmod +x $NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh
$NXP_K32W0_SDK_ROOT/tools/imagetool/sign_images.sh out/debug/
보드 플래시
- 미니 USB 케이블로 연결된 보드로 JLink 명령줄을 실행합니다.
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. exit
를 입력하여 JLink CLI를 종료합니다.- 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로 직렬 콘솔을 열 수 있습니다. 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 버튼을 클릭합니다. LED D3을 전환해야 합니다.
사전 준비 요구사항
NXP K32W 개발 보드를 의뢰하기 전에 다음 사항에 유의하세요.
- 기기를 Google Home 생태계 내에서 발견하여 사용하려면 BLE 광고를 사용 설정해야 합니다. 광고를 일시적으로 사용 설정하려면 (Matter 사양에 따라 15분) 사용자 인터페이스 버튼을 누릅니다.
암호화 하드웨어 가속기 모듈이 없으면 흐름이 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
에서 타임아웃되기 전에 K32 개발 보드가 커밋을 완료하지 못할 수 있습니다.adb
설정 및 사용에 관한 자세한 내용은 문제 해결을 참고하세요.
다음 단계
Matter 예가 성공적으로 빌드되면 개발자 프로젝트를 만듭니다.