HeliOS — крошечная встраиваемая ОС, разработанная для плат Arduino


Мэнни Петерсон (он же FellFromTree) разработал встраиваемую операционную систему HeliOS, которая разработана специально для 8-битных и 32-битных плат Arduino и может быть легко использована из Arduino IDE.

Говорят, что HeliOS имеет только 21 вызов функции и реализует совместную и управляемую событиями многозадачность, уведомление о задачах/обмен сообщениями, таймеры и управление памятью. Это многозадачное ядро без вытеснения, поэтому вам не придется иметь дело с мьютексами.

Разработчик объясняет, как должна работать HeliOS:

HeliOS использует стратегию сбалансированного времени выполнения, которая гарантирует, что задачи с более коротким временем выполнения имеют приоритет над задачами с более длительным временем выполнения. Это гарантирует, что все запущенные задачи получат примерно одинаковое общее время выполнения без использования переключения контекста. Другой вариант многозадачности, доступный в HeliOS, — это многозадачность, управляемая событиями, при которой используются интерфейсы ожидания/уведомления и таймера. Смешивание кооперативных и событийных задач в HeliOS не проблема.

Чтобы попробовать, просто откройте Диспетчер библиотек IDE Arduino, найдите «HeliOS» и нажмите «Установить». Будет несколько примеров, включающих скетч Blink с использованием совместной многозадачности:

#include <HeliOS_Arduino.h>
 
int ledState = 0;
 
void taskBlink(int id_) {
 if(ledState) {
 digitalWrite(LED_BUILTIN, LOW);
 ledState = 0;
 } else {
 digitalWrite(LED_BUILTIN, HIGH);
 ledState = 1;
 }
}
 
void setup() {
 xHeliOSSetup();
 
 pinMode(LED_BUILTIN, OUTPUT);
 
 int id = xTaskAdd("TASKBLINK", &taskBlink);
 xTaskWait(id);
 xTaskSetTimer(id, 1000000);
}
 
void loop() {
 xHeliOSLoop();
}

Хотя HeliOS был разработан для архитектур Arduino AVR, SAM и SAMD, должно быть возможно и довольно легко перенести его на другие микроконтроллеры с поддержкой Arduino. Операционная система, которую, по словам разработчика, лучше описать как «многозадачное ядро для встраиваемых систем», должна быть максимально облегченной и, например, занимает гораздо меньше места, чем FreeRTOS.

Вы найдете исходный код и документацию на Github и Arduino Project Hub.

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

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments