Доброго времени суток!
Использую порт scmRTOS для кортексов.
Большое спасибо авторам ОС и порта, люди сделали большую работу и дали воспользоваться ей другим.
Респект!
Вот захотелось сделать прибамбас - индикацию бездействия контроллера.
Ведь весьма полезная фича при отладке приложения.
Пока идея такова:
1. в одном из процессов запускаем таймер (1) на 1 сек (к примеру).
2. как только попадаем в IdleProcessHook() - запускаем другой таймер (2) и взводим флаг IDLE.
Делаем это в критич. секции (?).
Если IDLE уже взведён - ничего не трогаем.
3. как только попадаем в ContextSwitchUserHook() - проверяем, взведён ли флаг IDLE. Если да - останавливаем таймер (2) и сбрасываем IDLE.
4. как только таймер (1) досчитывает до порогового значения периода измерения - сопоставляем натикавшее время (1) и (2) таймеров и вычисляем загрузку.
Если (2) таймер в нуле - 100% загрузка, если близок по значению к (1) - 0%.
Затем сбрасываем оба таймера и всё повторяется сначала.
Вроде для грубого вычисления подойдёт.
Что плохо - таймер простоя (2) будет считать время выполнения любых прерываний как бездействие системы.
Это внесёт погрешность.
ЗЫ:Если я правильно понял, IdleProcess выполняется также, как и все остальные процессы - то есть продолжает выполняться с того места, откуда был прерван?