Делаю встраиваемый Linux для приборов и промышленных шлюзов — от первого запуска платы до стабильной прошивки, которую можно ставить в серию. Беру на себя всё, что лежит между процессором и вашим приложением: настраиваю сборочную систему на Yocto или Buildroot, поднимаю новое железо, пишу и адаптирую драйверы, правлю ядро и дерево устройств, чтобы любая нетиповая периферия заработала корректно. Если устройству нужны безопасная загрузка, механизм обновлений и корневая файловая система, устойчивая к внезапному пропаданию питания, — эту основу я закладываю в самом начале, до того как появится продуктовая логика.
Обычно проект приходит в одном из двух видов. Либо есть свежая плата, на которой пока не грузится ничего, либо есть готовый вендорский BSP, прекрасно живущий на отладочном ките и ломающийся на вашем реальном железе. Работаю с обоими случаями. При запуске платы разбираюсь с загрузчиком, тактовыми частотами, разводкой выводов и деревом устройств, довожу до чистой загрузки ядра и рабочих шин к датчикам, радиомодулям и памяти. С чужим BSP навожу порядок в слоях, делаю сборку повторяемой и превращаю капризный единичный образ в то, что ваша команда пересоберёт и выпустит в любой момент без моего участия.
Поверх платформы собираю прикладную часть: запуск и контроль сервисов, сеть и каналы связи, обновление по воздуху, логи и сторожевой таймер, чтобы устройство в поле поднималось само и не требовало выезда специалиста. Я специально вожусь с неприметными вещами вроде восстановления после сбоя — именно они определяют, будет ли парк приборов годами работать без нареканий или засыпать поддержку заявками. На выходе — документация, повторяемая сборка и прошивка, которую не стыдно отдать в продакшн.
— Сборочные образы Yocto и Buildroot, свои слои и повторяемая сборка
— Запуск плат: загрузчик, дерево устройств, тактирование, разводка пинов
— Ядро и драйверы для I2C, SPI, USB, MTD и прочих интерфейсов
— Обновления по воздуху, безопасная загрузка, watchdog, надёжный rootfs
Обычно проект приходит в одном из двух видов. Либо есть свежая плата, на которой пока не грузится ничего, либо есть готовый вендорский BSP, прекрасно живущий на отладочном ките и ломающийся на вашем реальном железе. Работаю с обоими случаями. При запуске платы разбираюсь с загрузчиком, тактовыми частотами, разводкой выводов и деревом устройств, довожу до чистой загрузки ядра и рабочих шин к датчикам, радиомодулям и памяти. С чужим BSP навожу порядок в слоях, делаю сборку повторяемой и превращаю капризный единичный образ в то, что ваша команда пересоберёт и выпустит в любой момент без моего участия.
Поверх платформы собираю прикладную часть: запуск и контроль сервисов, сеть и каналы связи, обновление по воздуху, логи и сторожевой таймер, чтобы устройство в поле поднималось само и не требовало выезда специалиста. Я специально вожусь с неприметными вещами вроде восстановления после сбоя — именно они определяют, будет ли парк приборов годами работать без нареканий или засыпать поддержку заявками. На выходе — документация, повторяемая сборка и прошивка, которую не стыдно отдать в продакшн.
— Сборочные образы Yocto и Buildroot, свои слои и повторяемая сборка
— Запуск плат: загрузчик, дерево устройств, тактирование, разводка пинов
— Ядро и драйверы для I2C, SPI, USB, MTD и прочих интерфейсов
— Обновления по воздуху, безопасная загрузка, watchdog, надёжный rootfs