Async Rust против RTOS на STM32: кто победит в реальном тесте?
Embedded Rust RTOS vs. C RTOS

В блоге Tweede golf сравнивают Embassy (async Rust) и FreeRTOS (C) на микроконтроллере STM32F446. Обе системы запускают одинаковые приложения: мигание светодиодом, обработка нажатия кнопки и передача сообщений через очередь. Измеряются задержки прерываний, размер программы, использование статической памяти и удобство программирования. Автор ожидает, что RTOS будет быстрее по задержкам, а Rust — компактнее по памяти, но результаты могут удивить.
В общем, планировщик вызывает функцию `poll` один раз и затем вызывает её снова только при срабатывании waker.
- Animats
Это при очень низкой нагрузке на CPU. Поэтому асинхронный подход без вытеснения может работать. Если есть какие-либо значительные вычисления, он будет работать не так хорошо.
Полезное число для измерения на осциллографе — наихудшая задержка прерывания. Это важно, если есть жесткое ограничение реального времени. Они измеряли стандартное отклонение, но не наихудший случай. Обычная тестовая установка: входной сигнал (обычно меандр) подается на входной пин, происходит прерывание, если прерывания не запрещены, запускается задача, задача включает выходной пин. Вы смотрите на задержку от входа до выхода на осциллографе и ищете выбросы.
Если вы работаете полностью до завершения, выбросы определяются самой длинной вычислительной задачей. Это проблема, если есть вычислительная задача.
Исторически здесь блистает QNX. Прерывание обрабатывается и планирует поток. Почти все, что происходит на уровне прерывания, — это активация потока. Поток включает выходной пин. Вы можете смотреть на осциллографе на выбросы планирования. Наилучшая задержка выше, чем при выполнении работы на уровне прерывания, но наихудшая задержка постоянна, даже если потоки с более низким приоритетом выполняют вычисления.
Это разница между реальным временем и планированием «почти реального времени».
- CupricTea
Название следует изменить. Async Rust != RTOS. RTOS — это вытесняющая многопоточность, а async работает кооперативно с точками уступки.
Возможно, «Встраиваемый async Rust против C RTOS»
- bfrog
Тем временем, похоже, уже ничего не имеет значения, кроме Zephyr, который стал почти как Linux по своей скорости убегания. Каждый производитель на Земле теперь его поддерживает, и эти ребята следуют за деньгами.
Rust, похоже, имеет скромную поддержку в некоторых местах.
С ИИ я не знаю, имеет ли язык вообще значение.
- joshchngs
Этой статье уже почти 5 лет, что делает её довольно древней в терминах Embedded Rust. Думаю, общий ландшафт не сильно изменился, но я бы осторожно относился к любым деталям из неё.
- aw1621107
(2022)