تست OTA در Nordic

دستورالعمل‌های زیر از نمونه برنامه نورپردازی Matter SDK به همراه یک برد توسعه Nordic nRF52840 استفاده می‌کنند.

راه اندازی محیط

این دستورالعمل ها بر اساس نصب مبتنی بر Docker از زنجیره ابزار nRF Connect است. اگر ترجیح می‌دهید از Docker استفاده نکنید، دستورالعمل‌های نصب nRF Connect به صورت بومی در رایانه میزبان در سایت Nordic موجود است.

Matter SDK را بررسی کنید
user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD

تصویر Docker صحیح را برای استفاده بررسی کنید. از یکی از تصاویر ایجاد شده برای ادغام پیوسته Matter SDK استفاده کنید.

user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
            image: connectedhomeip/chip-build-nrf-platform:0.5.99

برد Nordic را به کامپیوتر وصل کنید. شماره USB رابط سریال آن را بررسی کنید:

در MacOS:

user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000

در لینوکس، یا:

user@host> ls /dev/tty*AC*
/dev/ttyACM0

یا

user@host> ls /dev/tty*USB*
/dev/ttyUSB0

یک کانتینر را با استفاده از اطلاعات جمع آوری شده در دستور قبلی اجرا کنید. پرچم ها را برای سوار کردن پوشه Host Matter SDK و رابط سریال usb در ظرف قرار دهید.

user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash
کانتینر Matter Docker را متوقف و راه اندازی کنید

هر زمان که دستور docker run را اجرا می کنید، یک ظرف جدید با تصویر مشخص شده ایجاد می کنید. هنگامی که این کار را انجام می دهید، داده های قدیمی شما که در یک نمونه کانتینر قبلی ذخیره شده بود، از بین می رود. گاهی اوقات این چیزی است که شما می خواهید اتفاق بیفتد، زیرا به شما امکان می دهد با یک نصب جدید شروع کنید. اما در این مثال به احتمال زیاد می خواهید پیکربندی کار و محیط خود را بین جلسات ذخیره کنید.

user@host> docker stop container_name

وقتی دوباره آماده اجرا شدید، کانتینر را راه اندازی کنید و یک پنجره ترمینال را باز کنید:

user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash

می‌توانید جلسات ترمینال دیگری را به کانتینر خود باز کنید:

user@host> docker exec -it container_name /bin/bash

یا یک جلسه روت با استفاده از:

user@host> docker exec -u 0 -it container_name /bin/bash
SDK را راه اندازی کنید

در ظرف، Matter SDK و متغیرهای محیطی را برای زنجیره ابزار Nordic nRF52 مقداردهی اولیه کنید. مقداردهی اولیه Matter SDK اغلب چند دقیقه طول می کشد.

$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"
$ scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"
$ source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.sh
ساخت و فلش

VID و PID دستگاه را پیکربندی کنید:

$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig

در گزینه های منوی تعاملی:

  1. Modules --->

  2. connectedhomeip --->

  3. [*] Connected Home over IP protocol stack --->

  4. Device vendor ID (VID) و Device product ID (PID) را در قالب عدد صحیح پایه 10 وارد کنید.

  5. مطمئن شوید که پرچم [*] Enable OTA requestor انتخاب شده است.

  6. s را برای ذخیره پیکربندی فشار دهید، Enter را برای تأیید فشار دهید، سپس q را برای خروج از menuconfig فشار دهید.

گواهینامه های آزمون را تنظیم کنید

برای ایجاد گواهینامه های CD، DAC و PAI مراحل موجود در گواهینامه های تست دستگاه Create Matter را دنبال کنید.

دستگاه خود را بسازید
$ west build -b nrf52840dk_nrf52840
دستگاه خود را فلش کنید

این کار در رایانه میزبان انجام می شود، نه در ظرف Docker.

اگر از قبل ابزارهای خط فرمان nRFConnect را ندارید، آنها را دانلود و نصب کنید .

user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52

یک اتصال ترمینال را به دستگاه خود در میزبان یا کانتینر باز کنید. از ابزار ترمینال مورد علاقه خود مانند minicom یا screen گنو استفاده کنید.

user@host> minicom -c on -D /dev/ttyACM0 115200

user@host> screen /dev/ttyACM0 115200
تصویر OTA را ایجاد و آپلود کنید

هنگامی که دستگاه خود را فلش کردید، یک بار دیگر تنظیمات ساخت را تغییر دهید تا یک تصویر OTA با نسخه نرم افزار دستگاه افزایش یافته ایجاد کنید.

menuconfig Zephyr را اجرا کنید:

$ west build -b nrf52840dk_nrf52840 -t menuconfig

در گزینه های منوی تعاملی:

  1. Modules -->

  2. connectedhomeip -->

  3. Connected Home over IP protocol stack -->

  4. Device Software Version را به 2 تغییر دهید.

  5. Device Software Version String به prerelease-2 تغییر دهید.

  6. s را برای ذخیره پیکربندی فشار دهید، Enter را برای تأیید فشار دهید، سپس q را برای خروج از menuconfig فشار دهید.

فایل جدید Matter OTA را بسازید. خروجی در build/zephyr/zephyr.bin قرار می گیرد.

$ /workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_file

ویژگی های فایل بسته Matter OTA تولید شده خود را تأیید کنید:

/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
  [0] Vendor Id: XXXXX (0xXXXX)
  [1] Product Id: 32768 (0x8000)
  [2] Version: 2 (0x2)
  [3] Version String: prerelease-2
  [4] Payload Size: 951696 (0xe8590)
  [8] Digest Type: 1 (0x1)
  [9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930

از آنجایی که Matter SDK از میزبان کانتینر شما نصب شده است، تصویر OTA نیز در میزبان کانتینر شما موجود است. با دنبال کردن دستورالعمل‌های آپلود OTA، تصویر OTA را در Google Home Developer Console آپلود کنید.

دستگاه را راه اندازی کنید و فرآیند OTA را مشاهده کنید.

یک اتصال ترمینال به دستگاه یا در میزبان یا روی ظرف باز کنید. از ترمینال مورد علاقه خود مانند screen minicom یا گنو استفاده کنید:

$ minicom -c on -D /dev/ttyACM0 115200

دکمه ریست دستگاه را فشار دهید تا گزارش های مربوط به بوت را مشاهده کنید.

در خروجی دستگاه، باید VID و PID را که تنظیم کرده‌اید، و همچنین نشانی اینترنتی کد QR راه‌اندازی را ببینید:

I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes

(...)

I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL]  Serial Number: 11223344556677889900
I: 692 [DL]  Vendor Id: XXXXX (0xXXXX)
I: 695 [DL]  Product Id: XXXXX (0xXXXX)
I: 699 [DL]  Hardware Version: 0
I: 702 [DL]  Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL]  Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL]  Manufacturing Date: (not set)
I: 718 [DL]  Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started

مطمئن شوید که هاب شما آنلاین است و دستگاه را با Google Home app (GHA) با استفاده از کد QR از پیوند موجود در گزارش راه اندازی کنید.

پس از راه اندازی دستگاه را رها کنید تا فعالیت های خود را ثبت کند.

شما باید متن زیر را در گزارش دستگاه مشاهده کنید:

/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU]  FabricIndex: 1
D: 69649 [SWU]  ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU]  VendorID: 0x6006
D: 69657 [SWU]  AnnouncementReason: 0
D: 69660 [SWU]  Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU]  status: 0
D: 262271 [SWU]  imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU]  softwareVersion: 2
D: 262281 [SWU]  softwareVersionString: 2
D: 262285 [SWU]  updateToken: 36
D: 262288 [SWU]  userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage

پس از اعمال تصویر، دستگاه راه اندازی مجدد می شود. پس از راه اندازی مجدد، زمان کامپایل تصویر باید با زمان آپلود شده در Developer Console مطابقت داشته باشد.

به‌روزرسانی نرم‌افزار OTA را تأیید اعتبار کنید

نسخه نرم افزار دستگاه را می توان با استفاده از برنامه Google Home (GHA) بررسی کرد. پس از راه اندازی دستگاه، مراحل زیر را دنبال کنید:

  1. کاشی دستگاه را روی صفحه اصلی GHA فشار دهید
  2. روی نماد در بالا سمت راست ضربه بزنید
  3. روی اطلاعات فنی ضربه بزنید
  4. قسمت Software version را بررسی کنید

صفحه برنامه Google Home فیلد نسخه نرم افزار را نشان می دهد