AVR. Учебный курс. Операционная система. Введение.
Рано или поздно наступает момент когда сложность алгоритма становится
такой, что дальнейшее развитие и усложнение программы превращается в
нетривиальную задачу. Очень легко запутаться и тяжело отлаживать эту
портянку. Многие бегут от этих сложностей в языки высокого уровня,
впрочем это не особо спасает — разница минимальна на самом деле и проще
не становится.
Самое верное решение в данном случае — внедрение в проект операционной
системы. Которая бы предоставляла API для решения задач, а также
обеспечивала порядок работы всей системы.
В результате было написано микроядро. Камрад Serg2×2 подглядел
концепцию в прошивке сотового телефона Motorola и портировал на
микроконтроллер АТ89С2051, после ее перенесли на AVR, а я привел все в
библиотечный и структурированный вид, обвязал все удобными макросами, а
также подробно описал и задокументировал. Так что теперь интеграция ядра
операционки в проект под микроконтроллер AVR занимает буквально пару
минут работы Copy-Paste.
Ядро обеспечивает очередь задач (пока без приоритетов, но это в планах) и
службу таймеров. Многозадачность кооперативная, что накладывает
соответствующие ограничения на стиль написания. Фактически, каждую
процедуру мы пишем как прерывание, максимально коротко и быстро, все
задержки вешая на службу таймеров.
Параметры и системные требования микроядра:
•
Занимаемый обьем в Flash - 500 байт, при желании можно ужать до
400 байт, выкинув ненужные функции.
•
Рекомендуемый объем RAM - не менее 20 байт+стек, впрочем, можно
еще ужать если нагрузка небольшая.