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 ตามข้อกําหนด Matter ของ CSA หรือ 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
  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 ในอุปกรณ์เคลื่อนที่ คุณระบุได้ว่าระยะหมดเวลาเกิดขึ้นโดยใช้ adb logcat จากคอมพิวเตอร์ที่แนบอยู่กับโทรศัพท์ เมื่อหมดเวลา คุณจะเห็นข้อความบันทึก เช่น

    Device connection failed. Error third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:275: CHIP Error 0x00000032: Timeout

    โปรดดูการแก้ปัญหาเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและการใช้ adb

ขั้นตอนถัดไป

เมื่อสร้างตัวอย่าง Matter เรียบร้อยแล้ว ให้สร้างโปรเจ็กต์นักพัฒนาซอฟต์แวร์