آزمایش OTA در Nordic

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

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

این دستورالعمل‌ها براساس نصب زنجیره ابزار nRF Connect مبتنی بر Docker است. اگر ترجیح می‌دهید از 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 استفاده کنید.

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

در Linux، یکی از کارهای زیر را انجام دهید:

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

یا

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

بااستفاده از اطلاعات جمع‌آوری‌شده در فرمان قبلی، محفظه‌ای را اجرا کنید. پرچم‌ها را برای سوار کردن پوشه کیت توسعه نرم‌افزار Matter میزبان و میانای سریال 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

مقداردهی اولیه کیت توسعه نرم‌افزار

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

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) را در قالب عدد صحیح مبنای ۱۰ وارد کنید.

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

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

راه‌اندازی گواهی‌های آزمایشی

مراحل ایجاد گواهی‌های آزمایشی دستگاه Matter را دنبال کنید تا گواهی‌های CD،‏ DAC، و PAI را ایجاد کنید.

دستگاهتان را بسازید

west build -b nrf52840dk_nrf52840

فلش کردن دستگاه

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

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

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

اتصال پایانه به دستگاهتان را در میزبان یا در محفظه باز کنید. از ابزار پایانه دلخواهتان مثل minicom یا GNU screen استفاده کنید.

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

ایجاد و بارگذاری تصویر OTA

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

راه‌اندازی Zephyr menuconfig:

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 را فشار دهید، سپس برای خروج از menuconfig، کلید q را فشار دهید.

فایل بسته OTA جدید Matter را بسازید. برونداد در 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

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

/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 از میزبان محفظه شما نصب شده است، «تصویر OTA» نیز در میزبان محفظه شما دردسترس است. با دنبال کردن دستورالعمل‌های بارگذاری OTA، تصویر OTA را در Google Home Developer Console بارگذاری کنید.

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

اتصال پایانه به دستگاه را در میزبان یا در محفظه باز کنید. از پایانه دلخواهتان مثل minicom یا GNU screen استفاده کنید:

minicom -c on -D /dev/ttyACM0 115200

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

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

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) راه‌اندازی کنید.

پس‌از راه‌اندازی، اجازه دهید دستگاه فعالیت‌هایش را ثبت کند.

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

/* 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 بارگذاری شده است مطابقت داشته باشد.

اعتبارسنجی به‌روزرسانی نرم‌افزار ازطریق هوا

نسخه نرم‌افزار دستگاه را می‌توان بااستفاده از برنامه Google Home بررسی کرد. وقتی دستگاهی راه‌اندازی شد، این رویه‌ها را دنبال کنید:

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

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