Search
Write a publication
Pull to refresh

Гайд на сборку OpenVela для STM32 из-под WSL от 16-летнего отрока

Level of difficultyMedium
Reading time4 min
Views1.9K
Сгенерировано c помощью GigaChat
Сгенерировано c помощью GigaChat

Моя первая статья, поэтому попрошу судить не слишком строго.

ДИСКЛЕЙМЕР: Данная статья предполагает, что у Вас уже есть 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

  1. Обновим список пакетов:

  2. Установим TextUI-реализацию инструмента конфигурации KConfig.

  3. Установим python-библиотеку KConfigLib.
    sudo apt install python3-kconfiglib

  4. Если у Вас не работает команда из шага 3, попробуйте установить библиотеку через pip
    pip3 install kconfiglib

  5. Если возникает ошибка наподобие pip: команда не найдена, попробуйте выполнить следующее, а затем повторите команду выше.
    sudo apt install python3 python3-pip python-is-python3

  6. Теперь откройте Командную строку Windows, и введите
    pip install windows-curses

  7. Если возникает ошибка наподобие pip: команда не найдена, попробуйте установить Python, а затем повторите команду выше.

  8. Вернитесь в консоль 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

  9. Скачиваем и устанавливаем repo
    $ curl https://storage.googleapis.com/git-repo-downloads/repo > repo
    $chmod +x repo
    $sudo mv repo /usr/local/bin/

  10. Теперь скачаем исходники "Велы".
    $ 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

  1. Идём в 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-канале я пишу посты редко, но метко. Заходите, если будет желание!

Tags:
Hubs:
+9
Comments6

Articles