Протоколи і телеметрія: бінарні фрейми, CRC, MAVLink-подібні повідомлення
Бінарні кадри, контрольні суми CRC, байт-стафінг і декодер наземної станції для MAVLink-подібного формату.
MilTech · за підпискою
Не «швидко», а «вчасно»: планування задач, яке можна довести
Отримати доступ до курсу
Курс за підпискою · Навчання у власному темпі
Про курс
Контур стабілізації дрона мусить відпрацювати кожні 2.5 мс, навігація — кожні 20 мс, а телеметрія може трохи почекати. Система реального часу — це не найшвидша система, а та, про яку можна заздалегідь довести, що кожна задача встигне до свого дедлайну, і яка передбачувано поводиться, коли щось пішло не так: задача перевищила свій час, черга переповнилась, модуль перестав відповідати.
Такі системи стоять у польотних контролерах, у платах керування наземних роботів, у радіомодемах і камерах — скрізь, де пізня відповідь так само погана, як неправильна. Зазвичай ними керує RTOS (real-time operating system, операційна система реального часу): вона вирішує, яку з багатьох задач виконувати на одному процесорі в кожен момент.
У курсі ви рахуєте й симулюєте: скільки процесора забирають задачі, чи гарантовано вони встигнуть (тест Ліу–Лейленда і точний аналіз часу відгуку), як працюють планувальники RM (Rate Monotonic — пріоритет за періодом), DM (Deadline Monotonic — за дедлайном) і EDF (Earliest Deadline First — найраніший дедлайн першим), що таке інверсія пріоритетів і як її лікують, як виміряти джитер із логів, побудувати статичний розклад, контролювати пропуски дедлайнів, черги з обмеженням потоку (backpressure) і бюджети WCET (worst-case execution time — найгірший час виконання). Фінал — власний симулятор планувальника і звіт за трасою виконання.
Аудиторія
Embedded-розробник на C++
Навчитеся доводити, що задачі встигнуть до дедлайну: тест Ліу–Лейленда, аналіз часу відгуку, RM і EDF.
Знаєте Python і C++, але не RTOS
Задачу, планувальник, пріоритет і витіснення пояснюємо з нуля, а у фіналі пишете власний симулятор планувальника.
Шлях «MilTech Software Engineer»
Розберете інверсію пріоритетів, джитер, черги з backpressure і бюджети WCET у сценаріях дрона й робота.
Курс спирається на знання, позначені нижче як обов’язкові.
Потрібно знати
Python на рівні безкоштовного курсу «Основи програмування на Python» (включно з уроками про списки, словники, sorted з ключем і класи) і C++ на рівні «Основи програмування на C++» (включно зі структурами, посиланнями і uint32_t) та курсу «C++ Advanced»: у C++-задачах трапляються масив, переданий покажчиком, вихідні структури через ->, ініціалізація = {}, рекурсія і std::sort з лямбдою — короткий приклад є в першому уроці
Варто знати
Ділення, НСК/НСД і округлення вгору; усе інше пояснюємо.
Не потрібно знати заздалегідь
Що таке задача, планувальник, пріоритет, витіснення, дедлайн, RTOS.
Якщо цих знань ще немає — пройдіть курси за порядком:
Результат
описувати задачі періодом, WCET і дедлайном, рахувати гіперперіод і утилізацію
перевіряти планованість достатніми тестами і точним аналізом часу відгуку з блокуваннями й джитером
симулювати витісняльні планувальники RM, DM, EDF і пояснювати, де і чому вони відрізняються
розпізнавати інверсію пріоритетів і реалізовувати протокол успадкування пріоритету
вимірювати джитер і пропуски активацій з логів, будувати циклічний розклад і контролювати перевищення
детектувати пропуски дедлайнів, втрату серцебиття, керувати чергами і бюджетами часу
Формат
12 модулів: модель задач і швидкі тести → планувальники і точний аналіз → ефекти реальних систем (спільні ресурси, джитер) → інженерні засоби (статичний розклад, контроль дедлайнів, черги, бюджети) → фінальний симулятор. У кожному модулі — теорія з розібраним прикладом і дві практичні задачі з автоматичною перевіркою на прихованих наборах задач: інші періоди, фази, рівні дедлайни, перевантаження. Задачі приблизно порівну на Python і C++17. Частина — «знайдіть помилку» в правдоподібному коді. П'ять тестів з поясненнями і дві практичні форми.
13 уроків з прикладами
25+ завдань з автоматичною перевіркою
5 тестів для самоперевірки
Онлайн на my.prog.academy, без встановлення програм
AI-помічник
На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.
Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.
Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.
Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.
Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.
Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.
Програма
12 модулів, 25+ практичних завдань з автоматичною перевіркою і 5 тестів. Відкрийте модуль, щоб побачити всі теми.
Модель періодичної задачі: C, T, D, фаза; гіперперіод і перелік робіт
Достатні тести планованості для RM: межа n(2^(1/n) − 1) і гіперболічна межа
Витісняльний планувальник з фіксованими пріоритетами крок за кроком: випуск, вибір, витіснення, пропуск
Динамічні пріоритети, оптимальність EDF на одному процесорі, порівняння з RM
Точний тест для фіксованих пріоритетів: ітерація R = C + Σ⌈R/Tj⌉Cj, блокування і джитер
Як спільний м'ютекс змушує найважливішу задачу чекати на середню і як це лікує протокол успадкування
Ідеальна сітка активацій, відхилення, пропущені запуски; знакова різниця беззнакових часів
Статичний розклад без RTOS: вибір розміру рамки, таблиця рамок, перевищення часу в рамці
(m, k)-firm контроль, серцебиття модулів, межі тайм-аутів і відновлення
Фіксовані черги між задачами: політики переповнення, затримка, XON/XOFF з гістерезисом
Від вимірювань до бюджету: максимум, перцентиль, запас; контроль бюджету під час роботи
Власний симулятор RM/DM/EDF з фазами і пропусками, звіт за трасою виконання
Стек
Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.
Застосування
Доступ
Заповніть коротку форму на цій сторінці.
Після заявки оберіть Telegram або Viber — бот надішле подальші інструкції щодо доступу.
Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.
Контакт
Залиште контакти — надішлемо деталі доступу до курсу «Системи реального часу».
Бінарні кадри, контрольні суми CRC, байт-стафінг і декодер наземної станції для MAVLink-подібного формату.
Від сирих показів гіроскопа й акселерометра до фільтра Калмана і злиття GPS та IMU.
Прошивка мікроконтролерів на C++17: регістри, драйвери, переривання, CRC, ШІМ і watchdog на віртуальних платах.
Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.