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

Пакет підтримки плати

Пакет підтримки плати (BSP) — це низькорівневе програмне забезпечення, яке проводить плату SiMa.ai від увімкнення живлення до робочого простору користувача Linux. Робочі навантаження вищого рівня, зокрема конвеєри сприйняття, вузли ROS 2 і власні застосунки C/C++, працюють поверх нього.

BSP від SiMa.ai містить:

  • Завантажувач (U-Boot) — ініціалізує DRAM, зчитує завантажувальний носій і завантажує ядро.
  • Ядро — ядро Linux із драйверами SiMa.ai для MLA, CVU, ISP, PCIe, мережевих блоків і блоків зберігання даних на SoC.
  • Дерева пристроїв — описують периферійні пристрої конкретної плати (камери MIPI, десеріалізатори GMSL2, роз’єми GPIO, слоти M.2), щоб ядро могло виявити їх під час завантаження.
  • Коренева файлова система — інструменти простору користувача, системні служби та бібліотеки середовища виконання SiMa.ai, які взаємодіють із вбудованими прискорювачами.
  • Двійкові файли прошивки — для процесора безпеки (tRoot) та інших співпроцесорів.

Modalix BSP​

Modalix BSP призначений для Modalix DevKit, комплектів Modalix Early Access і PCIe-карти Modalix. Він побудований на eLxr — дистрибутиві, похідному від Debian. Простір користувача керується за допомогою apt, тож налаштування образів Modalix більше схоже на пакування програмного забезпечення для Debian, ніж на написання рецептів Yocto. Щоб перевести наявний Yocto DevKit на eLxr, див. Перехід на eLxr.

Вихідний код: simaai-linux (ядро та дерева пристроїв), sima-ai-uboot (U-Boot) і meta-simaai (шар Yocto).

eLxr чи Yocto​

Для запуску плати рекомендовано використовувати eLxr. Плату також можна запустити з Yocto за допомогою шару meta-simaai і його посібника зі збирання образу. Обидва шляхи збирають ті самі вихідні коди ядра та U-Boot з тією самою конфігурацією ядра, тому напрацювання щодо драйверів і дерева пристроїв переносяться без змін.

ЗавданняeLxr (рекомендовано)Yocto
Збирання ядра, U-Boot, дерев пристроїв, оверлеїв і модулів ядраЗбирання BSP з вихідного кодуПосібник зі збирання образу
Додавання програмного забезпечення простору користувачаДодавання пакетів і служб в eLxrНаписання рецептів
Збирання повного образу з вихідного кодуЩе не задокументованоЗбирання повного образу за допомогою Yocto
Збирання пакета оновленняЩе не задокументованоЗбирання та застосування пакета оновлення
Безпечне завантаження та ініціалізаціяЩе не задокументованоЩе не задокументовано

Якщо вам уже зараз потрібно зібрати повний образ із вихідного коду, оберіть Yocto. В іншому разі використовуйте eLxr.

Що можна зробити з вихідним кодом BSP​

Вихідний код стане в пригоді, коли потрібно:

  • Додати власний периферійний пристрій — написати оверлей дерева пристроїв для нової камери MIPI, сенсора GMSL2 або плати розширення HAT.
  • Увімкнути функції ядра — активувати параметр ядра (наприклад, файлову систему, мережевий протокол або драйвер USB gadget), якого немає у стандартному образі.
  • Замінити або розширити rootfs — вбудувати власний застосунок, бібліотеку чи системну службу.
  • Відтворити випуск локально — перезібрати саме той образ, який постачається на DevKit, для аудиту чи модифікації.

Щоб перенести власну збірку на плати, див. Розгортання власної збірки. Оновлення прошивки встановлює стандартний образ SiMa.ai, а не вашу власну збірку.

Вихідний код і посібники​

Усе наведене нижче є загальнодоступним. Для збирання образу, прошивання плати та додавання власних драйверів не потрібні ні NDA, ні звернення до відділу продажів.

ЩоДе
Кроки збирання — середовище збирання, збирання ядра та U-Boot, дерева пристроїв, модулі ядраЗбирання BSP з вихідного коду
Який коміт вихідного коду відповідає кожному випуску платформиСумісність випусків
Контейнер збирання ModalixDockerfile.modalix
Вихідний код ядра Linuxsimaai-linux
Вихідний код U-Bootsima-ai-uboot
Шар Yocto з вихідними файлами оверлеїв для конкретних платmeta-simaai

У цьому розділі​

Апаратні теми, пов’язані з роботою над BSP, див. у розділах Запуск плати-носія і Низькошвидкісний ввід-вивід.

Почніть із розділу Збирання BSP з вихідного коду: у ньому описано середовище збирання Docker, отримання та налаштування ядра й U-Boot, їх збирання, встановлення результатів на плату, а також роботу з деревами пристроїв, оверлеями та модулями ядра, що збираються поза деревом ядра.