آزمایش OTA در Nordic

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

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

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

با «کیت توسعه نرم‌افزار Matter» آشنا شوید

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 container

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

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

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

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

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

ساختن دستگاه

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

ویژگی‌های فایل بسته 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 از میزبان محتوی شما نصب شده است، «تصویر ازطریق هوا» نیز در میزبان محتوی شما دردسترس است. تصویر 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» (GHA) بررسی کرد. پس‌از راه‌اندازی دستگاه، این رویه‌ها را دنبال کنید:

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

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