RTOS for Arduino UNO R3
  • C++ 65%
  • C 32%
  • Assembly 2.1%
  • Makefile 0.5%
  • Shell 0.4%
Find a file
2026-08-29 03:41:22 +03:00
kernel Add files via upload 2026-08-29 02:21:12 +03:00
lib Create none 2026-08-29 02:50:53 +03:00
pins/standard Create pins_arduino.h 2026-08-29 03:37:20 +03:00
src Create main.cpp 2026-08-29 03:36:13 +03:00
flash.sh Add files via upload 2026-08-29 02:25:06 +03:00
LICENSE Initial commit 2026-08-29 01:48:23 +03:00
Makefile Add files via upload 2026-08-29 02:25:06 +03:00
monitor.sh Add files via upload 2026-08-29 02:25:06 +03:00
README.md Update README.md 2026-08-29 03:41:22 +03:00

Moon-OS-Arduino

RTOS for Arduino UNO R3

MoonOS - Це ОС на Arduino UNO R3 з витісняльною багатозадачністью, квантуванням і статичним виділенням пам'яті.

ОС створена для того, щоб розумно розподіляти процесорний час між різними задачами, керувати пам'ятью і створювати на її основі певні системи де треба робити декілька задач одночасно.

Вона складається з двох частин, простої та складної: Проста частина ОС це модифікований Arduino-core, який забезпечує базовий функціонал по типу digitalWrite(). А складна частина ОС це та сама частина яка додає асинхронність, queue, м'ютекси і так далі. Ці дві частини можна гарно побачити якщо подивитись директорію kernel, там вони дость чітко розділені.

В комплекті з системою ідуть скрипти компіляції написані під Linux а також деякі програми та драйвери які написані для цієї системи. (програми та драйвери можна знайти в директорії lib)

Система ще досить не стабільна і крива через фізичні обмеженні самої ардуїнки та через те що це найперша версія системи. Наприклад якщо її залишити працювати на 6-8 годин то система видасть критичну помилку і почне панікувати через збій в роботі з оперативною пам'ятью.

Але тим не менш вона гарно працює навіть під великим навантаженням і якщо виправити в системі всі помилки то вона буде досить таки гарною, особливо якщо враховувати що на Аруїно всього 2кб оперативної пам'яті, з яких чиста система без встановлених програм споживає лише 800-1000 байт. (Для кращого розуміння: Цей текст важить займає більше місця ніж потребує ця система оперативної пам'яті для запуску)

В цій системі немає поняття "процес". Тобто якщо в звичайних ОС(Linux/Windows) є процес та потік як різні поняття то тут процес один - це сама система, а програми для цієї системи це по факту окремі потоки. У API цієї системи немає навіть функції, яка б містила слово "process" в назві, зате є createThread().

Якщо є ще питання до того як система працює то в коді залишено дуже багато коментарів і можна почитати як все працює