Embedded HandbookПриложения
Все разделы › 0. О справочнике
STM32F407, ESP32 · уровень средний · 5 мин чтения
Открыть в интерактивном справочнике

0г. Маршруты по темам: прибор на RTOS — архитектура и наблюдение

Маршрут Б (0.4) учит FreeRTOS по кирпичам: кучи, задачи, очереди, прерывания, гонки и мьютексы. Когда кирпичи в руках, встаёт следующий вопрос — как из них сложить прибор, который не разваливается через месяц: как задачи узнают о событиях, кто отмеряет время, как устроить программу, чтобы её можно было читать, и как увидеть, что внутри происходит на самом деле.

Маршрут Ж: прибор на RTOS отвечает на это за девять шагов — от автомата без ОС до планировщика на двух ядрах. Правила те же, что у маршрута новичка (0а.1): один шаг — один раздел, из раздела выносится столбец «Что вынести».

Опоры: маршрут Б, шаги 4–8 — разделы 25, 26, 27, 28 и 30. Без них маршрут Ж читается с трудом: он пользуется задачами, очередями и мьютексами как готовыми словами.

Как это называется в документации

Оригинал Перевод
firmware architecture архитектура прошивки: из каких частей она сложена и как они говорят друг с другом
event-driven design построение на событиях: части ждут событий, а не опрашивают друг друга
deadline miss пропущенный срок: задача не успела к назначенному моменту

0г.1 Как идти по маршруту Ж

Маршрут идёт тремя блоками. Шаги 1–4 — чем задачи говорят и как отмеряют время: автомат и очередь событий, события и уведомления, программные таймеры, буферы потоков. Шаг 5 — архитектура: активные объекты собирают всё это в прибор. Шаги 6–9 — наблюдение и надёжность: конфигурация ядра, сторож задач, трассировка и два ядра.

Уровень маршрута — средний → продвинутый: продвинутый шаг один — трассировка (33б), остальные восемь — средние.


0г.2 Маршрут Ж: прибор на RTOS

Уровень маршрута: средний → продвинутый. Девять шагов: связь задач и время, архитектура на событиях, наблюдение за работающей системой.

Шаг Раздел Что вынести Что пока пропустить
1 23а автомат: сначала таблица переходов, потом код; очередь событий из прерывания в цикл; когда всё же нужна ОС 23а.5 неблокирующий драйвер
2 31 группа событий, точка синхронизации, уведомление задачи — и что из них выбрать 31.5 входы и выходы по маске
3 29 программный таймер и задача-демон; что можно в обратном вызове и чего нельзя; сторож связи на таймере 29.8 демон как исполнитель по запросу
4 32 потоковый буфер и буфер сообщений; правило одного писателя и одного читателя 32.6 связь между ядрами — к шагу 9
5 32а активный объект: задача, своя очередь и автомат; прибор из трёх объектов; длина очереди и переполнение 32а.4 сравнение со старым способом
6 33 базовые параметры ядра, память и статистика, режим без тика 33.4 расширенное
7 33а сторож для нескольких задач: задача-сторож и два аппаратных сторожа; ложные срабатывания и долгая законная работа 33а.6 слепок перед сбросом
8 33б трассировка: макросы ядра, запись в кольцо, диаграмма на компьютере; инверсия, дрожание и голодание на трассе 33б.6 цена трассировщика
9 152 FreeRTOS на двух ядрах: тик и закрепление задач, гонка на двух ядрах и три способа её лечить 152.4 esp_timer

Маршрут Ж: девять шагов змейкой — автомат и очередь событий, события и уведомления, программные таймеры, буферы, активные объекты, конфигурация, сторож задач, трассировка, два ядра — и четыре развилки; цвет блока — уровень самого сложного раздела в нём

Порядок держится на одном: активный объект (5) — это автомат (1) в своей задаче, который ждёт событий (2), отмеряет время таймерами (3) и получает данные через очередь или буфер (4). Наблюдение идёт после архитектуры: сторожу задач (7) и трассе (8) есть что показать, когда задачи устроены одинаково.


0г.3 Что нужно на столе


0г.4 Куда дальше: развилки после маршрута Ж


0г.5 Грабли

Взять ОС ради одной задачи. Сначала честное сравнение с прибором без ОС (23а.7): автомат и очередь событий решают многое без планировщика.

Двое пишут в один потоковый буфер. У потокового буфера и буфера сообщений правило одного писателя и одного читателя (32.3).

Ждать в обратном вызове таймера. Обратные вызовы выполняет одна задача-демон; что в них можно и чего нельзя — 29.4.

Сторож, которого кормит одна задача. Живая задача кормит сторожа, пока соседняя висит; сторож для нескольких задач проверяет отметку каждой (33а.1–33а.2).

Искать инверсию приоритетов на глаз. Инверсия, дрожание и голодание видны на трассе (33б.5), а не в выводе в терминал.


0г.6 Итоги


Дальше: раздел 1 «Микроконтроллер как таковой» — что лежит внутри кристалла: ядро, память, периферия — и почему без этого всё дальнейшее придётся принимать на веру.

Открыть в интерактивном справочнике