Перейти до основного вмісту

Заводське збирання та тестування

Це рекомендований процес збирання та тестування плат на основі Modalix на заводі. Адаптуйте його до своєї плати, тестового оснащення та складальної лінії.

  1. Фізичне складання
  2. Електрична перевірка
  3. Програмування ідентифікатора плати та MAC-адреси
  4. Налаштування тестової станції
  5. Завантаження тестового образу
  6. Запуск діагностики
  7. Програмування виробничого образу
  8. Тестування застосунків, маркування та пакування

Послідовні консолі​

Плата Modalix має дві послідовні консолі. Обидві працюють на швидкості 115200 бод із вимкненим апаратним керуванням потоком.

КонсольПризначення
UART tRoot (безпечне завантаження)Програмування ідентифікатора плати та MAC-адреси, повідомлення про оновлення tRoot
UART U-Boot/LinuxКоманди U-Boot, вхід у Linux і всі тести на цій сторінці

Роз’єм для кожної консолі залежить від плати. Для еталонної плати-носія див. ролі UART у розділі Запуск плати-носія. Під’єднайтеся до кожної консолі з хоста, наприклад:

sima-user@sima-user-machine:~$ minicom -b 115200 -D /dev/ttyUSB0

Назва пристрою (/dev/ttyUSB0, /dev/ttyUSB1) залежить від того, як кабелі визначаються на хості.

Фізичне складання​

Цей етап залежить від вашої плати та виробничого процесу: встановлення радіаторів, монтаж плати в корпус або тестове оснащення тощо.

Електрична перевірка​

  1. Складіть перелік точок доступу до кожної основної шини живлення та перевірте імпеданс кожної шини на обриви й короткі замикання.
  2. Складіть перелік напруг, які можна виміряти, і записуйте їх для кожної плати або для вибірки плат із кожної партії.
  3. Перевірте тактові сигнали, які можна виміряти, і запишіть їх для кожного серійного номера.

Програмування ідентифікатора плати та MAC-адреси​

Ідентифікатор плати (також званий ідентифікатором пристрою) і MAC-адреси записуються в одноразово програмовану (OTP) пам’ять MLSoC за допомогою спеціальної прошивки tRoot.

Значення OTP незмінні

OTP-пам’ять можна записати лише один раз. Перевіряйте кожне значення, перш ніж підтвердити його.

  1. Під’єднайте хост до UART tRoot.

  2. Під’єднайте програматор SPI-флеш-пам’яті, а потім подайте живлення.

  3. Завантажте прошивку tRoot для програмування OTP у SPI-флеш-пам’ять, як описано в розділі Програмування SPI-флеш-пам’яті tRoot.

  4. Вимкніть живлення, від’єднайте програматор SPI-флеш-пам’яті та знову подайте живлення.

  5. У консолі tRoot введіть ідентифікатор плати в шістнадцятковому форматі, підтвердьте його, а потім введіть MAC-адресу:

    enter hwid in hex format(ex:0x00010012)
    hwid entered is 0x123
    Press (Y/N)
    burning hwid
    Configured HWID :: 0x123
    Activated ID Selector :: 1
    Enter mac addr in format (A0:B1:C2:D3:E4:F5)

    Після введення MAC-адреси плата одразу виконує послідовність завантаження.

  6. Вимкніть і знову ввімкніть живлення плати та переконайтеся, що вона завантажується й повідомляє, що ідентифікатор плати вже запрограмовано.

  7. Завантажте свою виробничу прошивку tRoot у SPI-флеш-пам’ять, як описано в розділі Програмування SPI-флеш-пам’яті tRoot.

Програмування SPI-флеш-пам’яті tRoot​

Прошивка tRoot — це один двійковий файл, troot_blob.be. Ви записуєте одну з двох версій: прошивку для програмування OTP, яку використано вище, або вашу виробничу прошивку. SiMa.ai рекомендує хост-адаптер Total Phase Aardvark I2C/SPI із програмним забезпеченням Total Phase Flash Center.

  1. Установіть Flash Center на хості.
  2. Під’єднайте програматор до роз’єму SPI-флеш-пам’яті на платі. Цей роз’єм залежить від плати й зазвичай є дворядним.
  3. Запустіть Flash Center. Він також має інструменти командного рядка, якщо ви хочете автоматизувати цей крок.
  4. Додайте адаптер.
  5. Виберіть цільовий пристрій: оберіть SPI Flash, а потім мікросхему, встановлену на вашій платі, наприклад Winbond W25Q16 (2 МБ).
  6. Завантажте troot_blob.be.
  7. Запрограмуйте флеш-пам’ять.

Налаштування тестової станції​

  1. Якщо тестованій платі потрібна плата-носій або інтерфейсна плата, під’єднайте її.
  2. Під’єднайте хост до UART tRoot і до UART U-Boot/Linux.
  3. Якщо плата має порти Ethernet, під’єднайте кожен із них до хоста.
  4. Якщо плата має входи для камер MIPI, під’єднайте тестові камери.
  5. Якщо плата є PCIe-картою, встановіть її в слот PCIe Gen5 хоста шириною щонайменше x8.

Завантаження тестового образу​

Завантажте останню випущену тестову прошивку з SD-карти або з мережі, як описано в розділі Прошивання образу на eMMC. Краще використовувати SD-карту, оскільки тоді порти Ethernet залишаються вільними для навантажувального тесту мережі.

Запуск діагностики​

Послідовність така: зафіксуйте температуру в режимі простою, запустіть навантажувальні тести, перевірте кінцеву температуру, а потім перевірте кожен інтерфейс вводу-виводу.

Запускайте всі тести в консолі U-Boot/Linux. Увімкніть живлення плати, дочекайтеся запрошення Linux, увійдіть як sima з паролем edgeai, а потім перейдіть у режим root:

sima@modalix:~$ sudo su

Якщо плата має Ethernet, призначте хосту по одній адресі для кожного порту плати. Наприклад, для інтерфейсу хоста eno1:

sima-user@sima-user-machine:~$ sudo ifconfig eno1:1 192.168.1.10 up
sima-user@sima-user-machine:~$ sudo ifconfig eno1:2 192.168.2.10 up
sima-user@sima-user-machine:~$ sudo ifconfig eno1:3 192.168.3.10 up
sima-user@sima-user-machine:~$ sudo ifconfig eno1:4 192.168.4.10 up

Для PCIe-карти від’єднайте від неї будь-яке зовнішнє живлення, перш ніж увімкнути хост. Карта живиться від слота.

1. Температура в режимі простою​

Знайдіть пристрій hwmon з назвою simaai_modalix_thermal_sensor:

root@modalix:~# grep -l simaai_modalix_thermal_sensor /sys/class/hwmon/hwmon*/name

Зчитайте його temp1_input десять разів і усередніть показники. Значення наведено в тисячних частках градуса Цельсія. Замініть X на знайдений номер:

root@modalix:~# for i in $(seq 10); do cat /sys/class/hwmon/hwmonX/temp1_input; done | awk '{s+=$1} END {print s/NR/1000 " C"}'

2. Ethernet​

Запустіть сервер iperf3 на хості:

sima-user@sima-user-machine:~$ iperf3 -s

На платі запустіть клієнт для кожного порту Ethernet:

root@modalix:~# iperf3 -c 192.168.1.10 -t 60 --logfile /tmp/iperf1 # end0
root@modalix:~# iperf3 -c 192.168.2.10 -t 60 --logfile /tmp/iperf2 # end1
root@modalix:~# iperf3 -c 192.168.3.10 -t 60 --logfile /tmp/iperf3 # end2
root@modalix:~# iperf3 -c 192.168.4.10 -t 60 --logfile /tmp/iperf4 # end3

3. Пам’ять​

root@modalix:~# stress-ng --class memory --all -1 --log-file /tmp/memorytest --log-brief --verify --abort -x atomic,heapsort,judy,mergesort,radixsort,tree,wcs,zlib -t 370s

4. Кеш CPU​

root@modalix:~# stress-ng --class cpu-cache --seq 2 -t 8s --log-brief --log-file /tmp/cpucache

5. CPU​

root@modalix:~# stress-ng --cpu 0 --verify -t 1m --log-brief --log-file /tmp/cpu0

--cpu 0 виконує тест на всіх CPU. Результат має показати 16 CPU.

6. Кінцева температура​

Знову зчитайте температуру, як описано в розділі Температура в режимі простою, і порівняйте її з тепловими обмеженнями вашої плати.

7. Петльовий тест PCIe​

  1. На хості встановіть sima_pcie_hostpkg.sh, а потім завантажте плату з відповідними двійковими файлами.

  2. Після завантаження плати виконайте в її консолі:

    root@modalix:~# sima_pep_test
  3. На хості створіть тестовий файл розміром 1 МБ і запустіть петльовий тест:

    sima-user@sima-user-machine:~$ dd if=/dev/urandom of=~/data1MB.bin bs=1M count=1
    sima-user@sima-user-machine:~$ sima_mla_test -Q 1 -q 0 -e 32 -i 8 -d ~/data1MB.bin

Хост виводить повідомлення про успішне виконання з кількістю переданих і отриманих кадрів.

8. Камери MIPI​

  1. Завантажте оверлеї камер для тестованих портів. Перезавантажте плату, перервіть автоматичне завантаження та встановіть dtbos. Назви оверлеїв мають форму modalix-som-<carrier>-<camera>-<port>.dtbo. Для Arducam IMX477 на першому порту камери Modalix DevKit:

    sima$ env set dtbos modalix-som-waveshare-ARDU-IMX477-1CAM.dtbo
    sima$ saveenv

    Оверлеї залежать від камери, порту та плати. Див. Інтерфейси камер MIPI.

  2. Під’єднайте камеру IMX477 до кожного тестованого порту, вимкніть і знову ввімкніть живлення, увійдіть у систему та виконайте sudo su.

  3. Захопіть необроблені кадри, а потім запустіть вивід ISP. Змініть video0raw і video0out відповідно до тестованого порту:

    root@modalix:~# gst-launch-1.0 v4l2src device=/dev/video0raw ! 'video/x-bayer,format=rggb12le,width=2048,height=1080,framerate=30/1' ! queue ! multifilesink location=/tmp/mipi_in_%d.raw12 &
    root@modalix:~# gst-launch-1.0 v4l2src device=/dev/video0out ! 'video/x-raw,format=RGB,width=2048,height=1080,framerate=30/1' ! fakesink

    Перший конвеєр записує 30 файлів на секунду в /tmp, де обмежений обсяг місця. Зупиніть тест приблизно через 10 секунд: натисніть Ctrl+C, щоб зупинити другий конвеєр, потім виконайте fg і натисніть Ctrl+C, щоб зупинити перший.

9. SD-карта​

Пропустіть цей тест, якщо плату завантажено з SD-карти. В іншому разі вставте SD-карту та запустіть сценарій тестування накопичувачів. Виберіть 1 для SD-карти, а потім 2 для швидкого тесту пропускної здатності або 3 для повного читання та запису карти:

root@modalix:~# /usr/bin/simaai_pt/emmc_sd_test.sh
Enter 0 - /dev/mmcblk0 (eMMC) or 1 /dev/mmcblk1 (SD card)
Choice: 1
1) Test 1: Memory Operations
2) Test 2: Throughput Measurement
3) Test 3: Whole memory read and write
4) Test 4: sd_card insertion and connection back
Enter your choice (1 or 2 or 3 or 4): 2
Throughput: 11.3099 MB/s

10. eMMC​

попередження

Цей тест перезаписує eMMC. Запускайте його лише тоді, коли плату завантажено з мережі або з SD-карти, а після нього прошийте виробничий образ.

Запустіть той самий сценарій і виберіть 0 для eMMC, а потім 2 або 3.

11. Дисплей і USB​

Якщо плата має вихід для дисплея, завантажте образ eLxr із мережі або з SD-карти. Під’єднайте USB-клавіатуру та мишу й переконайтеся, що робочий стіл відображається з роздільною здатністю 1920×1080. Увійдіть у систему за допомогою клавіатури та миші, використовуючи ті самі облікові дані, що й для консолі.

12. NVMe​

Установивши накопичувач NVMe, переконайтеся, що його виявлено, а потім виміряйте швидкість прямого читання:

root@modalix:~# nvme list
root@modalix:~# hdparm -tT --direct /dev/nvme0n1

Щоб відформатувати та змонтувати накопичувач, див. Налаштування накопичувача NVMe.

13. Самооновлення tRoot​

Цей тест встановлює пакет оновлення tRoot за допомогою swupdate.

  1. Скопіюйте виробничий файл troot-upgrade-simaai-ev.swu до /tmp на платі.

  2. Тримайте під’єднаними обидві консолі — tRoot і U-Boot/Linux.

  3. У консолі U-Boot/Linux від імені root виконайте:

    root@modalix:~# swupdate -v -H simaai-image-troot:1.0 -i /tmp/troot-upgrade-simaai-ev.swu
  4. Переконайтеся, що вивід у консолі tRoot припиняється протягом 5 хвилин.

Програмування виробничого образу​

Запишіть останній випущений виробничий образ на eMMC, як описано в розділі Прошивання образу на eMMC, а потім переконайтеся, що плата завантажується з eMMC.

Тестування застосунків, маркування та пакування​

Ці кроки залежать від вашого продукту.