Контрактное производство и проектные поставки для российских производителей электроники
РадиоЛоцман - Все об электронике

Сборка специализированного Linux-дистрибутива для Lichee RV Dock с поддержкой SDR при помощи Buildroot

- Санкт-Петербург

В последние годы развитие встраиваемых систем приобретает всё более стратегическое значение в промышленной автоматизации, беспроводных коммуникациях, научных исследованиях, образовании и других областях. Эту тенденцию поддерживает и активное внедрение архитектуры RISC-V – свободной, открытой и быстро развивающейся платформы для построения аппаратного обеспечения самого разного назначения. Использование решений на базе RISC-V позволяет проектировать электронные устройства, не ограниченные лицензиями крупных производителей, а значит, легче интегрируемые в национальные, корпоративные или исследовательские технологические цепочки.

Эффективные решения на базе SiC: новые возможности для российской электроники

Сборка специализированного Linux-дистрибутива для Lichee RV Dock с поддержкой SDR при помощи Buildroot

Одноплатные компьютеры с открытой архитектурой занимают особое место в этой экосистеме. На их основе строятся как прототипы будущих коммерческих продуктов, так и уникальные лабораторные комплексы, промышленные контроллеры, приборы мониторинга и измерений, а также устройства IoT. При этом одним из самых востребованных и одновременно сложных сценариев становится интеграция с радиотехническими системами – от мониторинга частот до приёма телеметрии с датчиков и радионавигационного обмена.

Одной из самых функциональных и при этом бюджетных моделей, ориентированных на широкое внедрение, выделяется Lichee RV Dock (Рисунок 1). Она построена на процессоре Allwinner D1 с ядром T-Head C906 и поддерживает работу под управлением Linux, что существенно облегчает интеграцию с программно-определяемыми радиоприёмниками (SDR). Платформа отличается богатым набором интерфейсов: здесь есть и USB 2.0 с полноценной поддержкой режима host, и Ethernet, и гибко настраиваемые GPIO, UART, а также возможность загрузки как с microSD, так и из внутренней флеш-памяти. Такой комплект делает плату универсальной как для разработки и тестирования, так и для развёртывания автономных решений на удалённых объектах.

Плата Lichee RV Dock на процессоре Allwinner с архитектурой RISC-V.
Рисунок 1. Плата Lichee RV Dock на процессоре Allwinner с архитектурой RISC-V.

В контексте SDR-применения основным достоинством Lichee RV Dock становится сочетание производительности и открытости. Прямой доступ к шине USB и поддержка ядром Linux современных драйверов позволяют подключать распространённые SDR-модули, прежде всего, популярные RTL-SDR USB-приёмники. Это обеспечивает обработку сигналов на частотах от десятков до полутора тысяч мегагерц, включая авиационные, радиолюбительские и промышленные диапазоны, сигналы мониторинга транспорта, навигации и другие протоколы.

Создание кастомного Linux-дистрибутива под такие задачи требует гибкого инструмента сборки. Наиболее рациональным решением становится Buildroot – кроссплатформенная система, позволяющая за минимальное время подготовить специализированный дистрибутив с нужными пакетами, библиотеками и настройками. С помощью Buildroot можно получить компактный и быстрый в работе rootfs, интегрировать актуальное ядро Linux и современные SDR-утилиты, а также исключить из системы всё лишнее, что важно при развёртывании в условиях ограниченных ресурсов или требований к быстрому старту устройства.

Технология SDR: диапазоны, роль в науке и промышленности

SDR, или программно-определяемое радио, фундаментально отличается от традиционных радиоприёмников: оцифровка сигнала происходит на максимально раннем этапе, и всё дальнейшее – от фильтрации и демодуляции до декодирования протоколов и обработки ошибок – реализуется программно с использованием процессора общего назначения. В рамках архитектуры Linux на Lichee RV Dock это позволяет не только реализовать классические функции радионаблюдения (сканирование эфирных частот, мониторинг авиации, приём радиолюбительских трансмиссий), но и внедрять новые алгоритмы на лету – с помощью таких библиотек, как GNU Radio или SoapySDR.

Современные USB SDR-приёмники (наиболее распространён – RTL-SDR на чипе RTL2832U с тюнером Rafael R820T2) обеспечивают приём в диапазоне примерно от 24 МГц до 1766 МГц, покрывая почти всю гражданскую и промышленную радиосферу. Среди основных частотных применений:

  • Вещательные FM-радиостанции (87.5–108 МГц)
  • Авиационный диапазон (118–137 МГц)
  • Цифровые каналы ACARS (131.550/136.700/136.975 МГц)
  • Системы CPDLC и SATCOM (136–154 МГц, 1.5 ГГц)
  • ADS-B (1090 МГц, авиационные транспондеры)
  • AIS (161.975/162.025 МГц, морской транспорт)
  • Радиолюбительские диапазоны (28, 50, 144, 430, 1200 МГц и выше)
  • ISM-частоты для IoT и автоматизации (433, 868, 915 МГц)

SDR широко применяется в космических исследованиях: для приёма научных данных с низкоорбитальных спутников, CubeSat и марсианских аппаратов, когда необходимо быстрое разворачивание инфраструктуры. Он позволяет принимать телеметрию, декодировать сигналы и участвовать в глобальных распределённых проектах мониторинга атмосферы или радиационной обстановки.

Современные тенденции SATCOM всё чаще требуют поддержки протоколов передачи данных в S-диапазоне (2–4 ГГц), однако даже бюджетные SDR позволяют наблюдать downlink спутниковых сервисов L-диапазона (1–2 ГГц), мониторить каналы навигации и анализировать загруженность трансляционных каналов.

SDR-платформа на базе Lichee RV Dock – это не только средство для радионаблюдения или радиолюбительских экспериментов. Она может быть интегрирована в автоматизированные системы промышленного мониторинга, проекты по анализу спутникового трафика или системы пассивного радиолокационного наблюдения за воздушной обстановкой.

Совокупность этих возможностей, гибкая архитектура и продуманная поддержка периферии в связке с Linux и Buildroot формируют уникальный инструмент для инженеров, разработчиков, исследователей и энтузиастов, стремящихся максимально использовать потенциал современных SDR-технологий.

Подготовка среды

Первым делом необходимо скачать инструменты сборки и подготовить пользователя для её проведения (в случае использования общего сервера/компьютера или CI это имеет более яркий смысл).

Создаем пользователя с указанием домашней директории и доступа к sudo:

$sudo useradd -m -s /bin/bash build
$sudo usermod -aG sudo build

Добавляем правило для доступа к sudo без пароля (в проде лучше так не делать):

$echo "build ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/build

Размещать инструменты сборки будем в /opt/buildroot:

$sudo mkdir -p /opt/buildroot
$sudo chown build:build /opt/buildroot


Получение и настройка Buildroot

Переключаемся на пользователя build:

$su - build

Скачиваем Buildroot и переключаемся на актуальную ветку:

$cd /opt/buildroot
$git clone https://github.com/buildroot/buildroot.git.
$git checkout 2025.02.x
$git pull

Находим конфигурационный файл по умолчанию для нашей платы:

$find. -name "*lichee*" -o -name "*nezha*" -o -name "*d1*"

Для Lichee RV Dock используем конфигурационный файл 'configs/sipeed_lichee_rv_defconfig' который включает оптимальные настройки для процессора Allwinner D1.

Создаем директорию для нашей SDR системы:

$mkdir -p board/sdr-bridge/

Создаем ‘post-build.sh’ – ключевой скрипт для пост-обработки rootfs:

$nano board/sdr-bridge/post-build.sh

Post-build скрипт – крайне важный механизм в Buildroot. Он позволяет модифицировать целевую файловую систему после основной сборки, но до упаковки в образ. Хотя стоит отметить, что это не единственный способ для тонкой настройки дистрибутива (например, можно использовать overlay-директории, конфигурационные фрагменты или прямую правку.config), именно post-build скрипт предоставляет максимальную гибкость для применения кастомных настроек, генерации конфигурационных файлов и установки специфических прав доступа.

Основные альтернативы и их применение:

  • Overlay-директории – идеальны для добавления статических файлов
  • Config fragments – лучший выбор для модификации ядра Linux
  • Custom packages – подходят для сложного ПО с зависимостями
  • Post-build скрипты – универсальное решение для динамической генерации конфигов

Создаем наш конфиг на основе sipeed_lichee_rv_defconfig:

$cp configs/sipeed_lichee_rv_defconfig configs/sdr_bridge_defconfig

Добавляем указание на наш post-build скрипт и базовые пакеты:

$echo 'BR2_ROOTFS_POST_BUILD_SCRIPT="board/sdr-bridge/post-build.sh"' >> configs/sdr_bridge_defconfig
$echo 'BR2_ROOTFS_POST_FAKEROOT_SCRIPT="board/sdr-bridge/post-build.sh"' >> configs/sdr_bridge_defconfig
$echo 'BR2_PACKAGE_DHCPCD=y' >> configs/sdr_bridge_defconfig
$echo 'BR2_PACKAGE_OPENSSH=y' >> configs/sdr_bridge_defconfig

Добавляем в config кастомный u-boot с поддержкой Allwinner D1:

$echo 'BR2_TARGET_UBOOT=y' >> configs/sdr_bridge_defconfig
$echo 'BR2_TARGET_UBOOT_BOARD_DEFCONFIG="lichee_rv_dock"' >> configs/sdr_bridge_defconfig
$echo 'BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,u-boot,528ae9bc6c55edd3ffe642734b4132a8246ea777)/uboot-528ae9bc6c55edd3ffe642734b4132a8246ea777.tar.gz"' >> configs/sdr_bridge_defconfig
$echo 'BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"' >> configs/sdr_bridge_defconfig
$echo 'BR2_TARGET_UBOOT_NEEDS_OPENSSL=y' >> configs/sdr_bridge_defconfig
$echo 'BR2_TARGET_UBOOT_NEEDS_UTILITIES=y' >> configs/sdr_bridge_defconfig
"

Загружаем наш конфиг и проводим тонкую настройку:

$make sdr_bridge_defconfig
$make menuconfig

В TUI-интерфейсе проверяем и корректируем следующие параметры:

  • Toolchain → GCC compiler version и выбираем 12 (для использования 13 необходим патч)

System configuration:

  • /dev management: Dynamic using devtmpfs + mdev

Target packages:

  • Networking applications: dhcpcd, openssh
  • Libraries → Hardware handling: rtl-sdr, librtlsdr
  • Text editors and viewers: mc (Midnight Commander)

Далее можно приступать непосредственно к сборке. В идеальных условиях сборку имеет смысл вести итеративно, как минимум используя следующие шаги:

  • Базовая система
  • Интеграция дополнительного ПО
  • Настройки сетевой подсистемы с DHCP и SSH
  • Настройка поддержки RTL-SDR

Но чтобы не растягивать статью, мы соберем все сразу:

$make -j$(nproc)

Все артефакты сборки будут находиться в output/images/

  1.  `fw_dynamic.bin` & `fw_dynamic.elf` – OpenSBI (Supervisor Binary Interface)
  • RISC-V аналог ARM Trusted Firmware
  • Обеспечивает безопасное выполнение в S- и M-режимах
    • `bin` – бинарный образ, `elf` – отладочная информация
  1.  `Image` – несжатый образ ядра; при наличии также формируется Image.gz (сжатый)
  2. `rootfs.ext2` & `rootfs.ext4` – корневая файловая система
  • `ext2` – для отладки
  • `ext4` – для production
  1.  `sdcard.img` – Полный образ SD-карты
  2. `sun20i-d1-lichee-rv.dtb` – Device Tree Blob – описание аппаратной части платы
  3.  `u-boot-sunxi-with-spl.bin` – загрузчик U-Boot с SPL (Secondary Program Loader)

Теперь можно записать наш Linux на карту:

$sudo dd if=output/images/sdcard.img of=/dev/sd? bs=4M status=progress
$sync

Подключаем к плате UART, отдельное питание через пины (GND лучше связать с GND UART), SDR Dongle и Usb-ethernet (распиновка изображена на Рисунке 2) и наблюдаем начало загрузки.

Распиновка UART интерфейса на Lichee RV Dock.
Рисунок 2. Распиновка UART интерфейса на Lichee RV Dock.

До полной загрузки системы проходит всего около 7 секунд; на экране появится информация о прохождении загрузки SPL и u-boot, как на Рисунке 3. 

Вывод загрузчика U-Boot и OpenSBI при старте системы.
Рисунок 3. Вывод загрузчика U-Boot и OpenSBI при старте системы.

Используя UART консоль, логинимся в системе и смотрим полученный IP адрес:

$ip a

Пример отображения IP адреса представлен на Рисунке 4. 

Результат выполнения команды ip a для проверки сетевых интерфейсов.
Рисунок 4. Результат выполнения команды ip a для проверки сетевых интерфейсов.

Проверяем запустился ли SDR TCP сервер:

$top

Отображение процесса rtl_tcp утилитой top показано на Рисунке 5. 

Вывод команды top, показывающий работу процесса rtl_tcp.
Рисунок 5. Вывод команды top, показывающий работу процесса rtl_tcp.

Убедившись, что все ок, можно добавить наше устройство как источник в SDR SHARP и проверить возможность обработки сигнала.

Выбираем source RTL-SDR TCP. Выбор осуществляется в выпадающем меню как изображено на Рисунке 6.

Выбор RTL-SDR TCP в качестве источника сигнала в SDR Sharp.
Рисунок 6. Выбор RTL-SDR TCP в качестве источника сигнала в SDR Sharp.

Вводим IP адрес нашего устройства и жмем "play". Данные радиоэфира на водопаде, аналогично приставленному на Рисунке 7.

Данные радиоэфира на водопаде с удаленного SDR-устройства.
Рисунок 7. Данные радиоэфира на водопаде с удаленного SDR-устройства.

В UART так же будет выведена информация о том, что к серверу подсоединился клиент.

В принципе никто не мешает добавить в проект логопериодическую антенну, шаговые двигатели и управлять углом места, азимутом и возвышением при помощи GPIO, что сделает получившуюся систему еще более автономной и гибкой, а взаимодействие осуществлять только внутри VPN сети через tcp, ssh или web и интерфейс.

Таким образом, представленный метод сборки специализированного Linux-дистрибутива для платформы Lichee RV Dock с использованием Buildroot демонстрирует исключительную эффективность и гибкость подхода. Нами был создан компактный, но полностью функциональный образ системы, оптимизированный для задач SDR-мониторинга и обработки радиосигналов.

Ключевые достижения реализации:

  • Минимальный образ системы с минимальным временем запуска
  • Полноценная сетевая инфраструктура с SSH-доступом
  • Полная поддержка RTL-SDR оборудования

Особую ценность представляет модульность подхода. Созданная кодовая база служит идеальной основой для дальнейшего расширения функциональности. Архитектура системы допускает лёгкую интеграцию дополнительных компонентов: web-интерфейсов для управления, алгоритмов цифровой обработки сигналов на базе GNU Radio, поддержки дополнительных SDR-устройств или развёртывания распределённых сетей мониторинга.

Важно отметить, что использованная методология не ограничивается SDR-задачами. Аналогичным образом могут быть созданы дистрибутивы для промышленных контроллеров, IoT-шлюзов, навигационных систем или образовательных комплексов – везде, где требуются минимальное энергопотребление, быстрый старт и специализированная функциональность.

Открытая природа всех компонентов стека – от RISC-V аппаратной платформы до Buildroot и Linux – обеспечивает не только технологическую независимость, но и долгосрочную поддержку решения. Разработчики и исследователи получают в своё распоряжение гибкий инструмент, способный адаптироваться под быстроменяющиеся требования без необходимости лицензионных отчислений или ограничений.

Собранный дистрибутив представляет собой не просто готовое решение, а скорее конструктор для построения специализированных embedded-систем следующего поколения, где гибкость программной настройки превосходит аппаратные ограничения, а открытость платформы становится ключевым конкурентным преимуществом.

Загрузки

  1. Скрипт модификации файловой системы
ТМ Электроникс. Электронные компоненты и приборы. Скидки, кэшбэк и бесплатная доставка
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя