Операционные системы для микроконтроллеров - что это такое - зачем это - как это сделано - какие бывают Операционная система Операционная система, сокр. ОС (англ. 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)