Как Vector Interrupt Controller (VIC) используется для эффективной обработки внешних прерываний? - PullRequest
0 голосов
/ 05 января 2011

Я хочу знать, как VIC может эффективно обрабатывать внешние прерывания

1 Ответ

12 голосов
/ 05 января 2011

A маленький фон (вы пометили «arm7», так что, вероятно, этот вопрос не о Cortex NVIC и т. Д.)

Изначально процессоры ARM поддерживали 2 типа прерываний:обычные прерывания (IRQ) и быстрые прерывания (FIQ).Каждое периферийное устройство, которое может прервать ЦП, будет запускать IRQ или FIQ.IRQ имеет один вектор, FIQ имеет один вектор.

Иногда отображение с периферийного устройства на IRQ / FIQ выполняется аппаратно, иногда настраивается.Но дело в том, что как только у вас есть> 2 периферийных прерывания, они должны совместно использовать вектор прерывания.Другими словами, если у вас есть 3 источника прерываний, вам гарантировано, что хотя бы один из IRQ или FIQ будет использоваться несколькими устройствами.Это означает, что когда вы берете прерывание, вы должны «опросить» (обычно аппаратные регистры), чтобы выяснить, «почему я здесь? Кто прервал меня?»

Вся идея VIC заключается в том, что каждое прерываниеимеет свой собственный уникальный вектор, так что когда вы перемещаетесь в этот интервал прерывания, вы точно знаете, кто вас прерывает.Нет опроса «Хорошо, кто меня прервал?»

На сайте ARM есть намного больше информации о ARM VIC (и его многочисленных вариантах), включая информацию о конфигурации, определения регистра, вложенные / приоритетные прерывания и т. Д.но ваш вопрос задан именно о том, как VIC эффективно обрабатывает прерывания.Описание каждой детали его функций выходит за рамки этого вопроса.

(я интерпретировал «эффективно» как «с как можно меньшим количеством опросов / запросов). Обратите внимание, что прерывания с приоритетом, также поддерживаемые VIC, уменьшают задержку высокоприоритетных прерываний, и это также может рассматриваться«более эффективный», хотя я на самом деле не относил его к той же категории, что и отсутствие необходимости опрашивать «кто меня прервал?»)

Более подробную информацию о Primecell VIC можно найти здесь, в ARM.сайт .

...