RTX isr_evt_set служба задерживается

Я работаю над крошечным Gecko HW от Silicon Labs EFM, использую RTX, используя цепочку инструментов с 4,22 кронштейнами. У меня есть следующая конфигурация для RTX: - Группировка NVIC 7.1 - Системный тик и ожидание Приоритет прерывания системной службы 224. - Оба прерывания включены и никогда не отключаются моим потоком кода. - Регистры PRIMASK и BASEPRI оба равны 0.

Код RTX в моем проекте уже несколько лет, и я не уверен, какая это версия.

Я заметил следующую проблему: при использовании isr_evt_set для запуска задачи из прерывания RTC выполнение задачи задерживается. Я обнаружил, что прерывание "Pend System service" не вызывается, когда заканчивается прерывание RTC.

Isr_evt_set переводит "Системная служба ожидания" в состояние ожидания при вызове из прерывания RTC. После окончания прерывания RTC прерывание "Ожидание системной службы" не становится активным. Вместо этого процессор возобновляет режим потока и выполняет задачу с низким приоритетом (управление питанием).

Я установил бит SLEEPONEXIT регистра SCB равным 0 в прерывании RTC. Прерывание "Pend system service" в конечном итоге выполняется ~4-10 циклов RTC позже.

Я ожидаю, что прерывание "Pend system service" будет запущено после прерывания RTC. Можете ли вы объяснить, почему кортекс возвращается в режим Thread после прерывания RTC?

1 ответ

  1. В руководстве Cortex M3 говорится, что "Pend System Service" является исключением, и процессор должен вернуться в режим Thread для его обслуживания.

  2. Я обнаружил, что до того, как произойдет прерывание RTC, задача, отвечающая за перевод системы в спящий режим, использует tsk_lock(). Когда isr_evt_set вызывается из прерывания RTC, его запрос на активацию "Pend System Service" буферизуется и обслуживается только после того, как процессор возобновляет режим Thread и использует tsk_unlock(), который немедленно устанавливает флаг ожидания NVIC для "Pend System Service". Используя отладчик, я вижу, что PendSV_Handler() вызывается вскоре после вызова tsk_unlock ().

Другие вопросы по тегам