Skip to content

dffdgdg/RTOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Операционная система на платформе Arduino

Этот проект представляет собой операционную систему для платформы Arduino, включающую планировщик задач, файловую систему в оперативной памяти, управление GPIO, системный таймер, логгер и системные вызовы. Система предназначена для микроконтроллеров AVR (например, Arduino Uno) и предоставляет базовые функции для многозадачности и управления ресурсами.

Структура проекта

Проект организован в несколько модулей, каждый из которых отвечает за определённую функциональность:

  • driver/: Драйверы для работы с аппаратным обеспечением (GPIO, таймер).
  • fs/: Файловая система в оперативной памяти и логгер.
  • kernel/: Планировщик задач и ядро системы.
  • syscalls/: Интерфейс системных вызовов для взаимодействия с ядром и файловой системой.
  • system/: Мониторинг системных ресурсов (память, напряжение).
  • main.cpp: Основной файл, инициализирующий систему и пример задач.

Зависимости

  • Arduino.h: Библиотека Arduino для работы с аппаратным обеспечением.

Установка

  1. Установите совместимую среду разработки.
  2. Скопируйте файлы проекта в папку проекта Arduino.
  3. Загрузите скетч на плату.

Использование

Система автоматически инициализируется при запуске. Основные функции:

  • Планировщик задач: Управляет выполнением задач с заданным периодом и приоритетом.
  • Файловая система: Хранит до 5 файлов (максимум 512 байт каждый) в оперативной памяти.
  • Логгер: Записывает сообщения с временными метками в файл log.txt.
  • GPIO: Управление пинами (ввод/вывод, PWM, прерывания).
  • Таймер: Системный таймер с точностью 1 мс.
  • Мониторинг: Отслеживание свободной памяти и напряжения питания.

Пример задач

  • blinkTask: Переключает состояние светодиода на пине 13.
  • counterTask: Увеличивает счётчик и сохраняет его в файл counter.txt.
  • fsTask: Проверяет целостность файловой системы и читает конфигурацию.
  • systemMonitorTask: Выводит статистику системы (задачи, файлы, память).
  • ledStatusTask: Выводит значение счётчика в Serial.
  • lcdTask: Обновляет информацию на LCD-дисплее (свободная память, счётчик).

Модули

gpio

  • Описание: Управление пинами ввода-вывода Arduino.
  • Функции:
    • Установка режима пина (GPIO_INPUT, GPIO_OUTPUT, GPIO_INPUT_PULLUP, GPIO_PWM).
    • Чтение/запись состояния пина.
    • Переключение состояния пина (toggle).
    • Управление PWM (0–255).
    • Подключение обработчиков прерываний.
  • Ограничения: Поддерживаются пины 0–13. Прерывания доступны для пинов 2–13.

timer

  • Описание: Системный таймер на базе Timer1 с частотой 1 кГц (1 мс).
  • Функции:
    • Инициализация таймера (begin).
    • Получение текущего времени (millis).
    • Задержка с выполнением задач (delay).
    • Обновление счётчика времени (update).
  • Ограничения: Использует прерывания Timer1, что может конфликтовать с другими библиотеками.

fs

  • Описание: Файловая система в оперативной памяти.
  • Функции:
    • Создание/чтение/запись/удаление текстовых и бинарных файлов.
    • Проверка существования файлов и их списка.
    • Валидация имени файла (макс. 16 символов) и размера (макс. 512 байт).
    • Поддержка до 5 файлов одновременно.
  • Ограничения: Ограниченный объём памяти для хранения файлов.

logger

  • Описание: Логгер для записи сообщений с временными метками.
  • Функции:
    • Инициализация (begin) с созданием файла log.txt.
    • Запись сообщений в лог и Serial (log).
  • Ограничения: Лог обрезается при превышении 1024 байт.

scheduler

  • Описание: Планировщик задач с поддержкой приоритетов и семафоров.
  • Функции:
    • Добавление/удаление задач.
    • Установка периода и приоритета задач.
    • Управление семафорами.
    • Аварийный дамп системы при сбоях.
    • Поддержка сторожевого таймера.
  • Ограничения: Задачи выполняются кооперативно, без вытеснения.

syscalls

  • Описание: Интерфейс системных вызовов для упрощения взаимодействия с ядром и ФС.
  • Функции:
    • Создание/удаление задач.
    • Задержка выполнения.
    • Работа с файлами (чтение, запись, удаление, проверка существования).
    • Получение системной информации.
    • Управление семафорами.

monitor

  • Описание: Мониторинг системных ресурсов (только для AVR).
  • Функции:
    • Измерение свободной памяти (freeMemory, freeMemoryPercent).
    • Проверка критического уровня памяти.
    • Измерение напряжения питания (getVccVoltage).
    • Проверка низкого напряжения.

Ограничения и рекомендации

  • Память: Система рассчитана на микроконтроллеры с ограниченной памятью (например, 2 КБ SRAM на Arduino Uno). Используйте SystemMonitor для контроля памяти.
  • Сторожевой таймер: Включён с таймаутом 8 секунд. Отключайте при отладке, если необходимо.
  • Конфликты: Timer1 используется системным таймером, что может конфликтовать с библиотеками, использующими тот же таймер.
  • Файловая система: Хранит данные в SRAM, что ограничивает размер и количество файлов.

Отладка

  • Логи выводятся в Serial и сохраняются в log.txt.
  • Используйте systemMonitorTask для получения статистики системы.
  • Аварийный дамп активируется при превышении времени выполнения задачи или таймауте Watchdog.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published