Исследование / 13.09.2026

Временная база: подтверждённые номинальные периоды

Проверен C:\dump\fw_128k.bin, дизассемблерный листинг Untitled-1.txt и локальный SDK FM33LG0xx из E:\FM33LG0XXbooload软件V4.4(22.07.22). Это расчёт по программной конфигурации, не измерение осциллографом и не гарантия фактического времени реакции прибора.

От тактовой частоты до планировщика

В SDK проверены fm33lg0xx.h (начальная частота и карта CMU), fm33lg0xx_fl_cmu.h (поля PLL и кодирование источников/делителей), fm33lg0xx_fl_cmu.c (FL_CMU_GetRCHFClockFreq, FL_CMU_GetPLLClockFreq). Заводские значения подстройки из системной области и реальная частота конкретного экземпляра здесь не считывались.

Задания

Регистрация через 0xDAB4 в 0x1050C–0x1053C. Периоды хранятся по 0x20002094, обратные счётчики — 0x20002084, адреса заданий — 0x20002074.

АдресРольАргумент периодаНоминальный период готовности
0x1056CГлавная машина состояний и измерительная обработка10100 мс
0x1534Управление сигнализацией10100 мс
0xFFF8Обработка кнопок220 мс
0xD898Обработчик очереди/кадров550 мс

При нулевом начальном обратном счётчике готовность появляется уже на первом 10-миллисекундном шаге. После срабатывания 0xE590 перезагружает счётчик значением периода и сразу уменьшает его на один: последующие интервалы равны именно period × 10 мс, без дополнительного шага.

Для кооперативных заданий прерывание увеличивает байтовый счётчик готовности 0x20000EF4; 0xDC28 исполняет обработчики последовательно и уменьшает этот счётчик. Период готовности не равен гарантированному времени начала/окончания обработчика. Долгий вызов, запрет прерываний, переполнение очереди готовности и пропущенные аппаратные тики этим расчётом не исключены.

Газовый слот и медленные измерения

В нормальных состояниях state >= 10 основной обработчик 0x1056C вызывает 0xAEC4 один раз. Обработка использует индекс 0x200000F8; путь продвижения 0xC6BC увеличивает его с циклическим возвратом после 3. Для обычного прохода четырёх включённых каналов получаются 100 мс между соседними газовыми слотами и 400 мс между обработками одного канала — номинально 2,5 обновления/с на канал. Это не частота всех внутренних преобразований АЦП: одна обработка может включать несколько чтений/усреднение. Отключённые каналы и особые ветви требуют отдельного анализа расписания и в эту оценку не включены.

В тех же нормальных состояниях 0x1A8C выполняет батарейное измерение после 10 своих вызовов (номинально 1 с), а 0x11478 температурное после 20 (номинально 2 с). Применять эти цифры к зарядному, выключенному или начальному состоянию без проверки вызовов нельзя.

Что перенести в требования

Для новой прошивки явно разделить аппаратную частоту АЦП, время газового слота, период обработанного значения и задержку сигнализации. Использовать монотонные временные метки и контроль возраста значения, диагностировать пропуски сроков/переполнение очереди. Не переносить UI-счётчики как секунды без перевода через период задания. Установленные 100/400 мс — характеристика старого программного расписания, а не обоснование подходящего быстродействия нового прибора.