Параллельные прерывания в ARM
Я новичок в процессорах ARM. Atmel ATSAMD20e реализует процессор ARM cortex M0+ на основе архитектуры ARMv6. Он допускает до 32 внешних прерываний, причем сигналы прерываний подключаются к вложенной таблице векторных прерываний (NVIC). Возможно ли одновременное прерывание с использованием NVIC? если так, как мы можем определить максимальное количество прерываний, которые могут выполняться одновременно? Может ли кто-нибудь указать на любую документацию, которая объясняет обработку одновременных прерываний. Спасибо
1 ответ
Максимальное количество прерываний, которые могут выполняться "одновременно", ограничено пространством стека, количеством уровней приоритетов и количеством источников прерываний, имеющихся в системе. Вы говорите, что у вас 32 прерывания, у M0+ 192 уровня, и я понятия не имею, сколько стека вы готовы пожертвовать, чтобы получить такое поведение. (И "одновременный" действительно неправильный. Они вытесняют друг друга, а не работают одновременно)
На практике, однако, на самом деле ничего не стоит, чтобы поддерживать несколько уровней приоритета, даже если это так. Это необходимо только в том случае, если у вас есть прерывание, требования к срокам которого короче самого длинного периода выполнения прерывания.
Смотрите здесь ( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/Cihcbadd.html) описание того, что происходит в стеке, когда прерывания вытесняются другими прерываниями.