Пакет підтримки плати
Пакет підтримки плати (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 з вихідного коду |
| Який коміт вихідного коду відповідає кожному випуску платформи | Сумісність випусків |
| Контейнер збирання Modalix | Dockerfile.modalix |
| Вихідний код ядра Linux | simaai-linux |
| Вихідний код U-Boot | sima-ai-uboot |
| Шар Yocto з вихідними файлами оверлеїв для конкретних плат | meta-simaai |
У цьому розділі
- Збирання BSP з вихідного коду — середовище збирання, ядро, U-Boot, дерева пристроїв і встановлення артефактів.
- Дерева пристроїв та оверлеї — вибір або написання оверлея та перевірка прив’язки драйвера.
- Сумісність випусків — коміти ядра та U-Boot, що відповідають кожному випуску платформи.
- Додавання пакетів і служб в eLxr — установлення пакета, пакування власної служби та що оновлення робить із вашими змінами.
- Збирання повного образу за допомогою Yocto — збирання всього образу з вихідного коду за допомогою загальнодоступного шару Yocto.
- Прошивання образу на eMMC — запис власної збірки на eMMC плати.
- Збирання та застосування пакета оновлення — пакування оновлення для образу Yocto та повернення плати до попереднього стану.
- Заводське збирання та тестування — програмування та тестування плат на виробництві.
Апаратні теми, пов’язані з роботою над BSP, див. у розділах Запуск плати-носія і Низькошвидкісний ввід-вивід.
Почніть із розділу Збирання BSP з вихідного коду: у ньому описано середовище збирання Docker, отримання та налаштування ядра й U-Boot, їх збирання, встановлення результатів на плату, а також роботу з деревами пристроїв, оверлеями та модулями ядра, що збираються поза деревом ядра.