Операционные системы для
микроконтроллеров
- что это такое
- зачем это
- как это сделано
- какие бывают
Операционная система

Операционная система, сокр. ОС (англ. operating system) —
комплекс управляющих и обрабатывающих программ, которые, с
одной стороны, выступают как интерфейс между устройствами
вычислительной системы и прикладными программами, а с
другой — предназначены для управления устройствами,
управления вычислительными процессами, эффективного
распределения вычислительных ресурсов между
вычислительными процессами и организации надёжных
вычислений. [ru.wiki]
Задачи (теория):

- запустить несколько вычислительных процессов параллельно,

- абстрагироваться от оборудования
На практике
ОС привлекательны из-за наличия дополнительные сервисов
(интерфейсы прикладного программирования)
 - драйвер MAC-интерфейса Ethernet и стек TCP/IP
 - драйвер USB
 - видеодрайвер
 - библиотеки для организации пользовательского
интерфейса
 - драйвера к стандартным устройствам ввода (клавиатура,
сенсорная панель, мышка)
 - виртуальные машины (запуск Java)
Необходимость:
 - если функционал программы превышает какой-то
фиксированный уровень -- имеет смысл использовать
операционную систему
 - сохранение производительности за счет параллельности -- в
реальности не все задачи выполняются параллельно
Параллелизм
Одновременное выполнение нескольких вычислительных процессов
(aka программ, aka задач)
Разделение ресурсов (у нас один процессор и одна память)

- разделение процессорного времени -- переключение между
задачами

- разделение памяти -- назначить каждой задачи диапазон адресов

- контроль доступа -- не допустить, чтобы одна задача
несанкционированно писала в область памяти другой
Взаимодействие между процессами

- как передать данные из одной задач в другу (проблема "писательчитатель")

- задачи синхронизации и проблемы взаимоблокировки
Задача «читатели-писатели»
Теория?

Существует "теория операционных систем" (я серьезно!)

Использует сведения из параллельного
программирования и теории массового обслуживания
Характеристики и RTOS

- все те же характеристики что и обычные программы
(минимальные системные требования)

- требование наличия MMU в процессоре (аппаратная
поддержка управления памятью в многозадачных системах)
Операционные системы реального времени (RTOS)

- способность операционной системы обеспечить требуемый
уровень сервиса в определенный промежуток времени

- не только логическая корректность выполнения программ,
но гарантированное максимальное время реакции на события

- жесткое реальное время

- мягкое реальное время
ОС общего назначения

- Основная задача: оптимально распределить ресурсы
компьютера между пользователями и задачами

- На что ориентирована: обработка действий
пользователя

- Как позиционируется: воспринимается пользователем
как набор приложений, готовых к использованию

- Кому предназначена: пользователь средней
квалификации
ОС реального времени (RTOS)

- Основная задача: Успеть среагировать на события,
происходящие на оборудовании

- На что ориентирована: Обработка внешних событий

- Как позиционируется: Инструмент для создания
конкретного аппаратно-программного комплекса
реального времени

- Кому предназначена: Квалифицированный
разработчик
Как это сделано

- есть код, которые выполняется в т.н. привилегированном
режиме (privileged mode) -- вы можете обратиться к любой
ячейке памяти

- этот код вызывается либо по прерываниям, либо как вызов из
других функций, которые вызывают прикладные задачи (API)

- этот код называется ядро

- все прикладные задачи -- выполняются в пользовательском
режиме (user mode) -- четкое разграничение ресурсов

- разделение памяти и ограничение доступа к памяти
выполняется аппаратно (в частности в микропроцессорах
Cortex M3)
Монолитная архитектура

- все процедуры ядра работают в привилегированном
режиме, пользователь не может обратиться к оборудованию

- требуется перекомпиляция кода при изменении
оборудования
Многоуровневая архитектура

- обработка разных действия разнесена в разные
программные компоненты (они все также
выполняются в привилегированном режиме)
Архитектура «клиент-сервер»

- некоторые вещи вынесены в пользовательский
режим (т.н. сервисы, или демоны)
Диаграмма состояний задачи
Режим реального времени
Обеспечение режима реального времени -- за счет механизма
планирования выполнения параллельных задач:
1. Неприоритетные (кооперативные) ОС

- нужна явная передача управления из одной задачи в другую
2. Приоритетные (вытесняющие) ОС

- если готова к выполнению более приоритетная задача -прервать текущую и передать управление ей (планирование,
выполняемое по событиям -- event-driven)
3. ОС с разделением по времени

- каждой задаче давать квант времени, по истечение которого
переключаться на другую (round robin)
Обзор различных RTOS
Функционал операционных систем реального времени
включает наличие следующих компонентов:

- ядро для организации параллельного выполнения
программ,

- библиотеки функций (стек) для поддержки
интерфейсов USB/Ethernet/etc и

- поддержка файловой системы

- организация пользовательского интерфейса (GUI)
Кроме того, RTOS бывают свободно-распространяемыми и
коммерческими
Примеры RTOS

Производитель: CMX

Операционная система: CMX-RTX

Функционал: ядро

ROM: <10 K

RAM: <1 K

Производитель: eCosCentric

Операционная система: eCosPro

Функционал: ядро

ROM: 2 K

RAM: <1 K
Примеры RTOS

Производитель: Express Logic

Операционная система: ThreadX

Функционал: ядро

ROM: 2 K

RAM: –

Производитель: FreeRTOS.org

Операционная система: freeRTOS

Функционал: ядро

ROM: 4.2 K

RAM: 1K
Примеры RTOS

Производитель: IAR

Операционная система: PowerPac

Функционал: ядро, файловая система, поддержка USB

ROM: 2-4 K

RAM: 51 bytes

Производитель: Keil

Операционная система: ARTX-ARM

Функционал: ядро, файловая система, поддержка TCP/IP

ROM: 6 K

RAM: 0.5 K
Примеры RTOS

Производитель: Micrium

Операционная система: µC/OS-II

Функционал: ядро, файловая система

ROM: 16 K

RAM: 2 K

Производитель: Micrium

Операционная система: µC/GUI

Функционал: пользовательский интерфейс

ROM: 10-60 K

RAM: 0.6-7.2 K
Графический интерфейс
пользователя (GUI)
- графические дисплеи
- как сделать это малой кровью
TFT
OLED
Что внутри TFT
Сигналы
Управление

Картинка формируется в оперативной памяти -видеобуфер

Необходимо постоянно считывать данные из
видеобуфера и выводить в модуль вместе с сигналами
вертикальной и горизонтальной синхронизации
Варианты

- TFT-модуль с контроллером

- внешний контроллер на FPGA или специализированной
микросхеме

- микроконтроллер с TFT контроллером (есть у очень
многих, например LPC2478 /ARM7TDMI/ от LPC)
Худший случай: внешний
контроллер
Разработка интерфейса в
uC/GUI
Как это программно (uC/GUI)
Скачать