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

 
 
 

Contributors