NXP

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

K32W

ตัวอย่างนี้เป็นอุปกรณ์ประเภทหลอดไฟที่มีความสามารถในการเปิด/ปิด ขั้นตอนได้รับการยืนยันในกระดานการพัฒนา 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 สําหรับ Shell ที่คุณใช้ เช่น .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. ตัวอย่างนี้ใช้การกําหนดค่า "General Switch Node" ตรวจสอบว่าเครื่องเล่น JP4/JP7 อยู่ในตําแหน่งซ้ายสุด (LPC-JN UART0)
    รูปภาพ

  1. ดาวน์โหลดและติดตั้ง JLink ในคอมพิวเตอร์
  2. ในกระดาน ให้เลือก DFU บนสวิตช์บูลีนข้างพอร์ต USB และเชื่อมต่อบอร์ดเข้ากับคอมพิวเตอร์ด้วยสาย 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. ติดตั้งทรัพยากร Dependency:
    pip3 install pycrypto pycryptodome
  3. อัปเดต VENDOR_ID ในการกําหนดค่าโปรเจ็กต์ตัวอย่าง (CHIPProjectConfig.h) ซึ่งควรเป็น VID ตาม CSA 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 tokenizer ซึ่งเป็นโมดูล 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 ด้วยกระดานที่เชื่อมต่อด้วยสาย 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 CLI โดยพิมพ์ 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 บนกระดานหลักเพื่อเริ่มเรียกใช้รูปภาพ

ตรวจสอบตัวอย่าง

  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 ที่ปุ่ม ซึ่งควรเปลี่ยนเป็นไฟ LED 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 เรียบร้อยแล้ว โปรดสร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์