
Моя первая статья, поэтому попрошу судить не слишком строго.
ДИСКЛЕЙМЕР: Данная статья предполагает, что у Вас уже есть Windows 10/11 с установленным WSL-дистрибутивом Ubuntu 20.04 или выше.
ВТОРОЙ ДИСКЛЕЙМЕР: Если Вам нужно сразу руководство,
прошу сразу к секции: Переходим к самому главному
Краткое досье (на автора)
Зовут Артём, программирую с первого класса. Со второго — ходил на паяльный кружок и печатал разные 3D‑модельки с Thingiverse на вручную папой собранном 3D принтере — отец научил с ним работать. После смерти отца (когда я был в третьем классе) интерес к «железкам» на время пропал, но вернулся летом 2024 года — прямо перед девятым классом. С тех пор почти не угасал: появились интерес к МК (в частности к AVR, но также чуть‑чуть к STM32) и сами девайсы, а также божественный CNC 3018 Pro (на котором я делал подарки учителям — в частности, классной руководительнице на свой выпускной в качестве благодарности за все хорошее — подарок гравировал на лазере, идущем в комплекте со станком), который я покупал для создания печатных плат: К сожалению, текстолита в доме не осталось, а новый пока не купил.
Интерес к Xiaomi и их продукции
На новый 2022 год попросил у мамы Redmi Note 9 Pro — выбрал модель этого бренда из‑за легкости разблокировки загрузчика, чего раньше не получалось сделать на моём Самсунге (модель A8 (2018)). В итоге 9 августа звоню своему прошаренному в IT другу‑однокласснику, говорю что разблокировал bootloader и поставил рут‑права. Тогда он посоветовал мне поставить Pixel Experience. Конечно не сразу, но мне стало интересно и я прошил свой телефон на эту прошивку.
В мае 2023 у «редмика» появились микротрещины и он окончательно сломался. Впопыхах купили Poco M5s, чтобы доучиться я смог нормально. Впоследствии поставил на новый телефон PixelOS (ещё одна реализация прошивок Google Pixel наравне с уже ранее упомянутым Pixel Experience) и те же рут‑права.
Также в 2023 мы купили Xiaomi Pad 5. На него я впоследствии накатил Windows 11 и Arch Linux с KDE.
Когда Xiaomi объявили о новых граблях для разблокировки загрузчика, я подумал: «ну всё, больше не буду их девайсы покупать». Но вскоре после этого Xiaomi выкатили OpenVela — открытую RTOS на базе Apache Nuttx — и я несколько поменял мнение об этой компании.
Переходим к самому главному.
В официальном руководстве по развёртке окружения указано, что WSL и Docker-контейнеры не будут работать. В данном руководстве в качестве ОС для WSL я буду использовать Ubuntu 20.04.
1. Обновим список пакетов:sudo apt update
2. Установим sudo apt install kconfig-frontends
Обновим список пакетов:
Установим TextUI-реализацию инструмента конфигурации KConfig.
Установим python-библиотеку KConfigLib.
sudo apt install python3-kconfiglib
Если у Вас не работает команда из шага 3, попробуйте установить библиотеку через pip
pip3 install kconfiglib
Если возникает ошибка наподобие pip: команда не найдена, попробуйте выполнить следующее, а затем повторите команду выше.
sudo apt install python3 python3-pip python-is-python3
Теперь откройте Командную строку Windows, и введите
pip install windows-curses
Если возникает ошибка наподобие pip: команда не найдена, попробуйте установить Python, а затем повторите команду выше.
Вернитесь в консоль Ubuntu, и установите следующие зависимости:
$sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi
sudo apt install
bison flex gettext texinfo libncurses5-dev libncursesw5-dev xxd
git gperf automake libtool build-essential gperf genromfs
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev
libexpat1-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux dfu-util libx11-dev libxext-dev net-tools pkgconf unionfs-fuse zlib1g-dev libusb-1.0-0-dev libv4l-dev libuv1-dev npm nodejs nasm yasm libdivsufsort dev libc++-dev libc++abi-dev libprotobuf-dev protobuf-compiler protobuf-c-compiler mtools
$sudo pip3 install pyelftools cxxfilt
$sudo apt install git-lfs
Скачиваем и устанавливаем repo
$curl
https://storage.googleapis.com/git-repo-downloads/repo
> repo
$chmod +x repo
$sudo mv repo /usr/local/bin/
Теперь скачаем исходники "Велы".
$mkdir vela-opensource && cd vela-opensource
$repo init --partial-clone -u
https://github.com/open-vela/manifests.git
-b dev -m openvela.xml --git-lfs
$repo sync -c -j8, где8– количество ядер Вашего процессора. Это значение можно узнать, запустив командуnproc.
$repo sync -c -j$(nproc)
Конфигурация Велы для STM32F411CEU6.
Запускаем меню конфигурации этой командой:
./build.sh nuttx/boards/arm/stm32/stm32f411-minimum/configs/rgbled menuconfig
Идём в Board Selection: передвигаемся по меню клавишами стрелками и нажимаем Enter на нужном пункте.

2. Нажимаем Enter на пункте Select Target Board
. Выбираем там нашу плату.

3. Возвращаемся в главное меню нажав дважды клавишу ESC0,.
Выбираем пункт Device Drivers

4. Скроллим вниз соответствующей стрелкой на клавиатуре и выбираем LED SUPPORT

5. Ставим следующие галки, нажимаем ПРОБЕЛ на нужном пункте.LED driver
Generic Lower Half LED Driver

6. Нажимаем /
для поиска и пишем EXAMPLES_LEDS
.

Нажимаем Enter. Ставим отметку пробелом на появившемся пункте.

7. Нажимаем вновь /
для поиска и пишем ARCH_LEDS
. Нажимаем Enter. Далее нажимаем пробел.

После этого нажимаем q
, затем y
. Таким образом выходим..
Сборка проекта
Вводим следующую команду:
$ ./build.sh nuttx/boards/arm/stm32/stm32f411-minimum/configs/rgbled -j$(nproc)
Итоговые файлы появились в директории vela-opensource/nuttx/, а именно nuttx.bin и nuttx.hex.
Summarius
В этой статье мы сделали все необходимое, чтоб из‑под WSL запустить сборку ОС Реального Времени OpenVela под «black pill» STM32F411CEU6.
Совсем необязательно иметь комп с минимум 16 ГБ ОЗУ, как указано в системных требованиях. Эти 16 Гигабайт пригодятся, думаю, в основном только для эмулятора. В случае же запуска на микроконтроллерах, к которым не подключен дисплей, думается мне, хватит и гигов восьми (т.к. эмулятор отображает именно картинку, а ест он много).
Пока что ко мне едет USB‑TTL конвертер, чтобы я мог взаимодействовать с NSH.
Поэтому пусть прошивка и запуск будет темой для второй части.
Благодарю всех за внимание, надеюсь, скоро увидимся!
В своём Telegram-канале я пишу посты редко, но метко. Заходите, если будет желание!