Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (Сергей Старолетов, OSDAY-2025) — различия между версиями

Материал из 0x1.tv

('вывожу из Draft')
 
(не показана одна промежуточная версия этого же участника)
Для портирования подобных систем на ARM (в частности, STM32) рекомендуем использовать открытую экосистему ST: код BSP, HAL-библиотеки (GPIO, UART, CAN и др.), драйверы NVIC, MPU, а также FreeRTOS из STM32Cube. Это снижает барьер входа, несмотря на зависимость от вендора и закрытость некоторых решений. В работе демонстрируется практическая реализация многопоточного приложения с периферией на основе POK, включая применение подхода Model-Driven Development (MDD) в STM32CubeIDE для генерации кода.

Недостаточность эмуляторов типа QEMU для отладки, предлагается решить аппаратной связкой ST-Link/GDB. 
</blockquote>

{{VideoSection}}
{{vimeoembed|1096505342|800|450}}
<!-- 
{{youtubelink|}} -->|9mtclv_OQQI}}


== Thesis ==
=== Заключение ===
В итоге предполагаемый доклад может быть полезен программистам и исследователям, прежде всего с практической точки зрения и как старт для обучения.


{{SlidesSection}}
[[File:Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf|left|page=-|300px]]

{{----}}
[[File:{{#setmainimage:Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025)!.jpg}}|center|640px]]
{{LinksSection}}

* 
<!-- <blockquote>[©]</blockquote> -->

<references/>

<!-- topub -->

[[Категория:OSDAY-2025]]
[[Категория:Операционные системы]]
[[Категория:Информационная безопасностьARM]]
[[Категория:Draft]]

Текущая версия на 09:30, 2 марта 2026

Докладчик
Сергей Старолетов.jpg
Сергей Старолетов

Доклад о разработке и отладке многопоточных операционных систем с раздельной архитектурой (partitioned systems) для микроконтроллеров STM32 на базе ARM. Ключевые сложности: необходимость работы с оборудованием на уровне абсолютных адресов и регистров, нехватку документации и скрытые особенности железа, что ведет к ошибкам и задержкам. В качестве решения предлагается использовать и адаптировать открытое ПО, например, концепт ОС POK (ARINC653-совместимый), разделяющий процессорное время и адресное пространство между изолированными разделами.

Для портирования подобных систем на ARM (в частности, STM32) рекомендуем использовать открытую экосистему ST: код BSP, HAL-библиотеки (GPIO, UART, CAN и др.), драйверы NVIC, MPU, а также FreeRTOS из STM32Cube. Это снижает барьер входа, несмотря на зависимость от вендора и закрытость некоторых решений. В работе демонстрируется практическая реализация многопоточного приложения с периферией на основе POK, включая применение подхода Model-Driven Development (MDD) в STM32CubeIDE для генерации кода.

Недостаточность эмуляторов типа QEMU для отладки, предлагается решить аппаратной связкой ST-Link/GDB.

Видео

on youtube


Thesis

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

Многораздельные ОС как перспективное направление

Перспективным направлением операционных систем являются так называемые многораздельные (системы с разделами — партициями), которые разделяют процессорное время и адресное пространство между системными программами, которые к тому же могут быть отдельно настроены для выполнения только специфицированных заранее системных вызовов, выполняя какую-то специфическую работу внутри разделов в своих потоках исполнения. Примером концепта такой ОС является РОК, представленный в диссертации Жюльеном Деланжем [1].

При наличии работающего прототипа системы, который исправно планирует разделы и потоки в них, а также системных вызовов через программное прерывание (software interrupt) можно навесить клиентский интерфейс и сделать такую системы POSIX- или ARINC-совместимой для применения в какой-либо ответственной области.

Портирование проекта для ARM

Изучая исходные коды оригинального проекта [2], было установлено, что в целом он является ориентированным на х86-архитектуру (имеются также архитектурные части и для ррс и spark) и работает с устройствами, доступными в эмуляторе QEMU. Портирование для ARM такого проекта с учебными целями сопряжено с трудностями прежде всего в том, что имеется бесчисленное множество устройств с различными конфигурациями ARM-ядер и архитектура доступных решений для устройств массового применения в целом закрыта).

Платформы STM32 как решение

В это же время, в среде разработчиков микроконтроллеров для сферы Интернета вещей и DIY решений популярны STM32 семейства плат, которые имеют лицензированные ARM ядра (Cortex M3 или M7 и даже их связки M7/M4), но тут главное прежде всего то, что компанией ST поставляется открытый код на C, адаптированный для каждого конкретного микроконтроллера, содержащий:

  • BSP код инициализации устройства
  • Код для работы с контроллером прерываний NVIC
  • Код конфигурации часов/таймингов для всех подсистем на плате
  • Код для работы с MPU (модуля защиты памяти Cortex M7)
  • HAL библиотеки для работы с GPIO/UART/I2C/SPI/CAN
  • Набор структур данных и функций для работы с USB Host/Device
  • Код для работы с различными LCD экранами
  • А также исходный код FreeRTOS, что снимает вопросы по коду переключений задач

Имеется также код и примеры работы с различными DSP, а также запуска моделей ИИ на такого рода устройствах.

Конечно, все это ведет к зависимости от производителя ST (в данном случае еще и иностранного и недоступного в настоящий момент набора микросхем), но прекрасно может быть использовано для обучения и взятия лучших практик по подходам разработки под ARM.

Практическая реализация и отладка

В докладе предполагается показать шаги из опыта автора по получению работающего решения многопоточных приложений, работающих с периферией и действующих в стиле РОК. Ранее была рассмотрена модель такой операционной системы [3], а теперь и ее реализация на основе указанного открытого кода. Предполагается рассмотреть также подход в стиле MDD по графической конфигурации в средстве STM32CubeIDE с генерацией кода (что популярно для многораздельных систем).

Что касается отладки приложений, имеющиеся средства виртуализации для такого рода процессоров и периферии на основе QEMU [4] не являются достаточными, поэтому отладку целесообразнее производить на связке аппаратного отладчика ST-Link и GDB.

Заключение

В итоге предполагаемый доклад может быть полезен программистам и исследователям, прежде всего с практической точки зрения и как старт для обучения.


Презентация

Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025).pdf
Вопросы разработки и отладки многораздельных операционных систем для ARM архитектуры микроконтроллеров STM32 (OSDAY-2025)!.jpg

Примечания и ссылки

  1. Delange J., Lee L. POK, an ARINC653-compliant operating system released under the BSD license //13th Real-Time Linux Workshop. – 2011. – Т. 10. – С. 181-192.
  2. https://github.com/pok-kernel/pok
  3. Staroletov S. M. A formal model of a partitioned real-time operating system in Promela (OSDAY 2020) //Труды Института системного программирования РАН. – 2020. – Т. 32. – №. 6. – С. 49-66.
  4. https://github.com/beckus/qemu_stm32