contact@jetteam.dev
Компетенции и кейсы/Встраиваемые системы и техника
NDALinux на своём железе

Бортовой компьютер для строительной и сельхозтехники

Бортовой компьютер для строительной и сельскохозяйственной техники: собственный Linux-дистрибутив, драйверы периферии, диагностика по CAN, 3D-визуализация рабочей зоны и обновление парка машин по воздуху.

37моделей машин в парке держатся на одной кодовой базе
~550систем координат в базе прямо на борту – пересчёт работает без связи

Контекст

Машина работает в поле, вдали от сервиса, при вибрации и перепадах температур. Обновление, которое «не встало», означает выезд специалиста за сотни километров – отсюда A/B-слоты и автоматический откат.

Стандартного дистрибутива под такую задачу нет: сборка на Yocto позволяет включить только нужное и держать под контролем и ядро, и загрузчик.

схема

Агрегатор состояния машины

CAN-ШИНАJ1939 · UDS · DTCGNSS / RTKположение и курсДАТЧИКИ IMUкрен, тангаж, вибрацияАГРЕГАТОРСОСТОЯНИЯ МАШИНЫasyncio · WebSocketодин источник правды о машинедля всех потребителей на бортуЭКРАН КАБИНЫприборы и рабочая зонаКАМЕРЫ ONVIFобзор вокруг машиныТЕЛЕМАТИКАвыгрузка в облако паркаБез общего агрегатора каждый потребитель опрашивал бы шину сам: экран, камеры и телематика конкурировали бы за одни и те же данные и расходилисьв показаниях.
Шина, навигация и датчики опрашиваются один раз, а дальше состояние расходится по потребителям. Экран, камеры и телематика всегда показывают одну и ту же машину.
схема

Цепочка загрузки

BOOT ROMпервый кодна кристаллеПЗУ → SPLSPLLPDDR4,автодетект2 или 4 ГБпамятиDDR готоваATF · OP-TEEBL31,довереннаясредаисполненияBL31 · OP-TEEU-BOOT 2025.04деревоустройствиз фрагментовядроLINUX 6.12systemd исервисы бортаЗагрузка возможна с SD, eMMC и SSD. Наружу выведены SPI, I2C, UART, CAN-FD, PCIe NVMe, USB и 1GbE – каждый интерфейс нужно поднять и проверитьотдельно.
Оранжевым отмечены два звена, которые мы написали сами. SPL определяет объём памяти на лету, поэтому одна прошивка работает и на двух, и на четырёх гигабайтах, а дерево устройств собирается из фрагментов под конкретную модель машины.
схема

Периферия вокруг процессора

i.MX8M PLUS4 × Cortex-A53драйверы перифериипишем и сопровождаем самиWI-FIAIC8800КАМЕРАMIPIТАЧ-ПАНЕЛЬILI2511CAN / CAN-FDшина машиныLTEмодем связиEMMC И ДИСПЛЕЙхранение и выводРАДИОSI4705АУДИОSSM3582Ни одна из этих микросхем не поддерживается «из коробки»: под каждую нужен драйвер и место в дереве устройств, иначе плата просто не видитпериферию.
Каждая микросхема на плате требует своего драйвера и записи в дереве устройств. Здесь чаще всего и застревают проекты, где железо делает один подрядчик, а систему поднимает другой.
схема

Сборка системы на Yocto

ОРАНЖЕВЫМ – СЛОЙ, КОТОРЫЙ ПОДДЕРЖИВАЕМ МЫ13 ОБРАЗОВptz-grader · clover · rubin и другие сборки под конкретные машиныMETA-PMнаш слой: около 25 компонентов и 60 доработанных рецептовMETA-IMX · META-FREESCALEBSP от NXP, версии зафиксированы по SHAPOKY / OPENEMBEDDEDбазовая сборочная система, ветка walnascar37 моделей машин обслуживаются 13 образами системы из одной кодовой базы: различия между моделями живут в рецептах нашего слоя, отдельных ветокпод модель нет.
Версии BSP закреплены по SHA. Без этого сборка перестаёт повторяться уже через полгода.
схема

Прошивка и обновление

ПРОШИВКА НА ПРОИЗВОДСТВЕСТЕНДутилита uuuSDP → fastbootПАНЕЛЬ i.MX8M PLUSeMMC · imx-bootВ ПОЛЕобновление по воздухуРАЗМЕТКА ПАМЯТИ: ДВА СЛОТА СИСТЕМЫbootrootfs A · активныйrootfs B · резервныйdataобновление пишется в неактивный слот; U-Boot переключает слоты и откатывается при сбое загрузкиТак обновляется парк машин, работающих в полях: неудачное обновление не превращается в выезд специалиста, потому что предыдущая система остаётсяна месте.
Один и тот же образ ставится на конвейере через uuu и прилетает в поле по воздуху. Два слота системы означают, что неудачное обновление откатывается само.
схема

Геоданные и системы координат

МЕСТНЫЕ СИСТЕМЫ КООРДИНАТМСК-66, зона 2 – одна из зон, в которой работает машина~550государственных проекций поддерживается~70местных систем координат регионов1 МБзанимает вся база проекций на бортуКаждая клетка – отдельная зона со своими параметрами пересчёта. Ошибка в выборе зоны смещает весь проект на метры, поэтому зона определяетсяавтоматически по координатам.
Проект приходит в LandXML, а работать машина должна в местной системе координат своего региона. Вся база проекций занимает мегабайт и лежит на самой машине – пересчёт работает и без связи.
из проекта

Экраны бортового компьютера

Основной экран оператора: приборы, положение рабочего органа и состояние машины.
Основной экран оператора: приборы, положение рабочего органа и состояние машины.
Экран неисправностей: состояние узлов машины, считанное по CAN – двигатель, коробка передач, тормоза, рулевое управление
Экран неисправностей: состояние узлов машины, считанное по CAN – двигатель, коробка передач, тормоза, рулевое управление, гидравлика.
Калибровка датчика хребтовой балки: продольное и поперечное положение сверяются с фактическими значениями прямо на машин
Калибровка датчика хребтовой балки: продольное и поперечное положение сверяются с фактическими значениями прямо на машине.
Трёхмерная визуализация рабочей зоны: проходы, текущая линия движения и положение агрегата отрисовываются в реальном вре
Трёхмерная визуализация рабочей зоны: проходы, текущая линия движения и положение агрегата отрисовываются в реальном времени.
Обработанная часть участка закрашивается по мере прохода – оператор видит покрытие, а не только линию.
Обработанная часть участка закрашивается по мере прохода – оператор видит покрытие, а не только линию.
Экран мониторинга связи: оператор и состояние соединения, качество сигнала и данные GPS в одном месте.
Экран мониторинга связи: оператор и состояние соединения, качество сигнала и данные GPS в одном месте.
Мультимедиа борта: радио, Bluetooth и USB работают на том же железе, что и рабочие функции машины.
Мультимедиа борта: радио, Bluetooth и USB работают на том же железе, что и рабочие функции машины.

Что входило в задачи

Железо и система

  • Board bring-upзагрузчик и оживление платы на NXP i.MX8M Plus
  • Свой Linux на Yoctoядро и драйверы периферии, ничего лишнего в образе
  • Низкоуровневые драйверыобработка данных датчиков на C и C++

Данные машины

  • Диагностика по CANJ1939, UDS, DTC и агрегатор состояния машины
  • ПозиционированиеRTK и координатор каналов связи Wi-Fi, LTE, GNSS
  • ГеоданныеLandXML и системы координат РФ прямо на борту

Жизнь в парке

  • OTA-обновленияA/B-слоты и безопасный откат – без выезда специалиста в поле
  • 3D-визуализациярабочая зона машины и мультимедиа борта
  • Производствопрошивка на конвейере и эксплуатация устройств в парке

Стек проекта

C / C++YoctoLinux kernelNXP i.MX8M PlusCAN J1939 / UDSOTA A/BOpenGLRTK

Есть похожая задача?

contact@jetteam.dev