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

Прошивання образу на eMMC

Використовуйте цю сторінку, щоб записати повний образ на eMMC плати, наприклад на виробничій лінії, на платі власної розробки або з образом, який не є опублікованим випуском. Усі кроки ви виконуєте самостійно, тож процедура працює з будь-яким наявним у вас файлом образу.

Щоб оновити DevKit до опублікованого випуску SiMa.ai, натомість скористайтеся розділом Оновлення прошивки. Щоб замінити лише ядро, дерева пристроїв або U-Boot на платі, яка вже завантажується, див. Встановлення артефактів.

Перед початком роботи​

  • Плата, яка доходить до запрошення U-Boot.

  • Послідовне з’єднання з UART U-Boot/Linux плати на швидкості 115200 бод із вимкненим апаратним керуванням потоком. Див. Налаштування послідовного з’єднання.

  • Образ для прошивання:

    ОбразФайли
    eLxrelxr-palette-modalix-<version>-arm64.img
    Yoctosimaai-image-minimal-modalix.rootfs.wic.gz і simaai-image-minimal-modalix.rootfs.wic.bmap

    Назви файлів Yocto — це ті, які створює Збирання повного образу за допомогою Yocto. Інший рецепт образу дає інші назви.

  • Хост з Ethernet і сервером TFTP або SD-карта.

Як плата вибирає джерело завантаження​

Плата не може перезаписати eMMC, поки працює з неї, тому спершу вона завантажується з мережі або з SD-карти. U-Boot перебирає джерела зі змінної boot_targets у заданому порядку:

ЦільЗавантаження з
mmc1SD-карти
mmc0eMMC
dhcpсервера TFTP, знайденого через DHCP
netсервера TFTP зі статичною IP-адресою

Порядок за замовчуванням — mmc1 mmc0 dhcp net. Щоб змінити його, перервіть автоматичне завантаження в послідовній консолі, а потім задайте й збережіть порядок:

sima$ env set boot_targets mmc1 mmc0 net dhcp; saveenv
Saving Environment to FAT... OK
sima$ printenv boot_targets
boot_targets=mmc1 mmc0 net dhcp
sima$ boot

Крок 1. Завантаження з мережі або з SD-карти​

На тестовій станції краще завантажуватися з SD-карти, оскільки тоді порти Ethernet залишаються вільними для навантажувальних тестів мережі.

Завантаження з мережі

У цьому варіанті використовується ваш власний сервер TFTP, тож ви самі обираєте, що він надає. Відновлення за допомогою мережевого завантаження робить те саме за допомогою sima-cli, який завантажує та надає опублікований випуск за вас.

  1. Скопіюйте файли завантаження до кореневого каталогу сервера TFTP:

    • netboot.scr.uimg
    • Image
    • двійкові файли дерев пристроїв (*.dtb)
    • архів кореневої файлової системи: elxr-palette-modalix-arm64.cpio.gz для eLxr або simaai-image-palette-modalix.cpio.gz для Yocto
  2. Під’єднайте хост до першого порту Ethernet плати (eth0). Плата використовує 192.168.1.20, тож призначте хосту адресу в мережі 192.168.1.0/24:

    sima-user@sima-user-machine:~$ sudo ifconfig <interface_name> 192.168.1.10 up
  3. Увімкніть живлення плати, перервіть автоматичне завантаження та зробіть net першим джерелом завантаження:

    sima$ env set boot_targets net mmc0 mmc1 dhcp; saveenv
    sima$ boot
  4. Після завантаження Linux перевірте збірку та те, що коренева файлова система розміщена в RAM (root=/dev/ram0):

    root@modalix:~# cat /etc/buildinfo
    root@modalix:~# cat /proc/cmdline
Завантаження з SD-карти
  1. Запишіть образ на SD-карту. Це можна зробити з хоста за допомогою Створення завантажувального образу або з плати, завантаженої з мережі, зі вставленою SD-картою (/dev/mmcblk1):

    Для eLxr:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk1 bs=4M status=progress conv=fsync

    Для Yocto скопіюйте обидва файли .wic.gz і .wic.bmap, а потім виконайте:

    root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk1

    Потім виправте таблицю розділів. Образ менший за карту, тому резервний заголовок GPT не розташований у кінці пристрою, доки parted його не перемістить:

    root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk1 print
  2. Перезавантажте плату, перервіть автоматичне завантаження та переконайтеся, що mmc1 стоїть першим. За замовчуванням так і є:

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv
    sima$ boot
  3. Після завантаження Linux перевірте /etc/buildinfo, а також переконайтеся, що /proc/cmdline містить root=/dev/mmcblk1p*.

Крок 2. Запис образу на eMMC​

Виконайте ці кроки на платі від імені root, поки вона завантажена з мережі або з SD-карти.

  1. Скопіюйте образ із хоста до /tmp на платі.

    Для eLxr:

    sima-user@sima-user-machine:~$ scp elxr-palette-modalix-<version>-arm64.img root@192.168.1.20:/tmp/

    Для Yocto скопіюйте обидва файли, .wic.gz і .wic.bmap:

    sima-user@sima-user-machine:~$ scp simaai-image-minimal-modalix.rootfs.wic.* root@192.168.1.20:/tmp/
  2. Запишіть образ на eMMC (/dev/mmcblk0).

    Для eLxr:

    root@modalix:~# dd if=/tmp/elxr-palette-modalix-<version>-arm64.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync

    Для Yocto:

    root@modalix:~# bmaptool copy /tmp/simaai-image-minimal-modalix.rootfs.wic.gz /dev/mmcblk0
  3. Виправте таблицю розділів:

    root@modalix:~# printf "fix\n" | parted ---pretend-input-tty /dev/mmcblk0 print

Крок 3. Завантаження з eMMC​

  1. Якщо ви завантажувалися з мережі, відновіть порядок завантаження за замовчуванням:

    sima$ env set boot_targets mmc1 mmc0 dhcp net; saveenv

    Якщо ви завантажувалися з SD-карти, вийміть її.

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

Наступні кроки​