Стек, используемый обработчиком прерываний в VxWorks (PowerPC)

Использует ли обработчик прерывания стек прерванной задачи или отдельный стек в качестве своего стека? (PowerPC, VxWorks)


person xiaokaoy    schedule 07.11.2012    source источник


Ответы (3)


В VxWorks есть специальный стек для прерываний. Все обработчики прерываний используют один и тот же стек, расположенный чуть выше места загрузки образа vxWorks.

Я считаю, что размер стека по умолчанию составляет 5 КБ, но его можно легко изменить с помощью конфигуратора ядра.

Механизм ISR работает примерно следующим образом:
Вы можете думать о VxWorks как об обычно устанавливаемой оболочке ассемблерного кода вокруг вашего ISR-кода.

При входе он автоматически сохраняет регистры общего назначения (в стеке ISR), поэтому состояние исполняемого контекста (другого ISR или задачи) сохраняется.

При выходе регистры восстанавливаются, но дополнительно вызывается планировщик ОС, чтобы посмотреть, не изменила ли только что завершившаяся ISR состояние задачи с более высоким приоритетом. Если это произошло, то возобновляется задача с более высоким приоритетом. Если нет доступных задач с более высоким приоритетом, восстанавливается исходная задача.

person Benoit    schedule 07.11.2012
comment
Спасибо. Не подскажете, как ISR переключается со стека прерванной задачи на конкретный стек? - person xiaokaoy; 12.11.2012

Это зависит от архитектуры. Из Руководства программиста ядра VxWorks (v6.8):

Все ISR используют один и тот же стек прерываний. [...]

ВНИМАНИЕ: Некоторые архитектуры не позволяют использовать отдельный стек прерываний, а ISR используют стек прерванной задачи. [...] См. справочник VxWorks для вашего BSP, чтобы определить, поддерживает ли ваша архитектура отдельный стек прерываний.

В вашем случае PowerPC поддерживает отдельный общий стек прерываний (для каждого ядра).

person pmb    schedule 13.12.2012

xiaokaoy, Довольно хорошее описание работы прерываний есть в Руководстве программиста VxWorks, раздел 2.6. Если у вас нет копии, она доступна в Интернете из многих источников.

person gjcamann    schedule 20.11.2012
comment
Спасибо. Я постараюсь найти его. - person xiaokaoy; 29.11.2012