Работа КВВП при входе в исключительные ситуации и выходе из них



Если прерывание инициируется УВВ, то КВВП подключит ЦПУ Cortex к обработке прерывания. После перехода ЦПУ Cortex в режим прерывания, он помещает набор регистров в стек. Эта операция выполняется с помощью специального микрокода, что упрощает прикладной код. В процессе записи данных в стек на шине инструкций осуществляется выборка начального адреса процедуры обработки прерывания. Благодаря этому, с момента возникновения прерывания до выполнения первой инструкции его обработки проходит всего лишь 12 циклов.

КВВП реагирует на обработку прерывания с задержкой всего лишь 12 циклов. В них входит выполнение микрокода, который автоматически помещает набор регистров в стек.

К числу помещаемых в стек данных относятся регистр статуса программы, счетчик программы и регистр связи. Благодаря этому, запоминается состояние, в котором находилось ЦПУ Cortex CPU. Кроме того, также сохраняются регистры R0 - R3. Эти регистры широко используются в инструкциях для передачи параметров, поэтому, помещение в стек делает возможным их использование в процедуре обработке прерывания. Замыкает список помещаемых в стек регистров - R12. Он выступает в роли рабочего регистра внутри подпрограммы. Например, если в компиляторе активизировать проверку стека, то будет генерироваться дополнительный код, который при потребности

в регистре ЦПУ будет использовать R12. По завершении обработки прерывания


все действия выполнятся в обратном порядке: с помощью микрокода извлекается содержимое стека и, параллельно с этим, осуществляется выборка адреса возврата, таким образом, для возобновления выполнения фоновой программы потребуется 12 циклов.

 

Непрерывная обработка прерываний с исключением внутренних операций над стеком

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

Если возникает два прерывания, первым со стандартной задержкой в 12 циклов

обслуживается прерывание с более высоким приоритетом. Однако, по окончании его обработки, ЦПУ Cortex не возвращается к выполнению фоновой программы, и содержимое стека не извлекается. Вместо этого, осуществляется выборка адреса процедуры обработки следующего прерывания с учетом приоритета. Таким образом, задержка перехода к обработке следующего прерывания составит всего лишь 6 циклов. По завершении обработки последнего прерывания извлекается содержимое стека и выполняется выборка адреса возврата. Таким образом, через 12 циклов возобновляется выполнение фоновой программы. Если же во время выхода из активного прерывания возникает еще одно низкоприоритетное прерывание, то операция извлечения из стека прекращается и указатель стека вернется к своему исходному значению, а выполнение обработки нового прерывания начнется через 6 дополнительных циклов. В итоге, задержка вызова процедуры обработки нового прерывания будет в пределах 7-18 циклов.

 

Переход к обработке низкоприоритетного прерывания, которое возникает при выходе из текущего прерывания, выполняется с задержкой 7-18 циклов.


Дата добавления: 2020-01-07; просмотров: 199; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!