Предыдущая Следующая

Векторизованные запросы прерываний имеют средний приоритет. Только 16 из 32 возможных запросов могут быть назначены контроллером в эту категорию. Любой из 32 запросов может быть назначен на любой из 16 слотов векторизованных запросов прерываний, среди которых слот 0 имеет самый высокий приоритет, а слот 15 — самый низкий.

Невекторизованные запросы прерываний имеют самый низкий приоритет.

Контроллер векторов прерываний объединяет в соответствии с логической функцией OR сигналы от всех векторизованных и невекторизованных запросов прерываний (IRQ) для их подачи на процессор ARM. Сервисная программа обслуживания запроса прерывания (IRQ) читает регистр из VIC и производит пе-

ГЛАВА 6

реход на требуемый вектор. Если поступает любой из векторизованных запросов прерывания, то VIC выделяет для него адрес с самым высоким приоритетом, соответствующий сервисной программе обслуживания запросов прерываний. В ином случае, VIC по умолчанию выделяет для запроса адрес подпрограммы, которая обслуживает все невекторизованные запросы прерываний. Эта выделяемая по умолчанию подпрограмма читает другой регистр VIC, чтобы определить, какие запросы прерываний в данный момент являются активными.

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

Блок-схема контроллера векторов прерываний приведена на Рис. 6.1.

Дополнительная информация о контроллере векторов прерываний доступна в документации по PrimeCell ™ Vectored Interrupt Controller (PL190).

6.2. Регистры VIC

Регистры VIC перечислены в Табл. 6.1. Более детальные их описания даны ниже. В этом разделе регистры VIC описываются в том порядке, в котором они используются в логике VIC, начиная от входов прерываний и заканчивая регистрами, редко используемыми программным обеспечением.

Таблица 6.1. Регистры VIC

Название

Описание

Доступ

Значение после сброса11

Адрес

VICIRQStatus

Регистр состояния IRQ. При чтении этого регистра возвращается текущее состояние тех запросов прерываний, которые разрешены и классифицируются как запросы IRQ

RO

0

OxFFFF FO00

VICFIQStatus

Регистр состояния FIQ. При чтении этого регистра возвращается текущее состояние тех запросов прерываний, которые разрешены и классифицируются как запросы FIQ

RO

0

OxFFFF F004

VICRawIntr

Регистр состояния необработанных прерываний. При чтении этого регистра возвращается текущее состояние 32 запросов прерываний/программных прерываний вне зависимости от их разрешенности или их классификации

RO

0

OxFFFF F008

VICIntSelect

Регистр выбора прерываний. Этот регистр классифицирует каждое из 32 запросов прерываний как запрос FIQ или запрос IRQ

R/W

0

OxFFFF F00C

VICIntEnable

Регистр разрешения прерываний. Этот регистр управляет разрешениями, которые даются каждому из 32 запросов прерываний и программным прерываниям как FIQ или IRQ

R/W

0

OxFFFF F010

VICIntEnClr

Регистр разрешения сброса разрешенных прерываний. Этот регистр разрешает программному обеспечению сбрасывать один или более битов в регистре разрешения прерываний

W

0

OxFFFF F014

VICSoftInt

Регистр программных прерываний. Содержимое этого регистра побитно объединяется по функции ИЛИ с сигналами 32 запросов прерываний от различных периферийных устройств и функций

R/W

0

OxFFFF F018

VICSoftlntClear

Регистр сброса программных прерываний. Этот регистр разрешает программному обеспечению сбрасывать один или более битов в регистре программных прерываний

W

0

OxFFFF F01C

VICProtection

Регистр разрешения защиты. Этот регистр позволяет ограничивать доступ к регистрам VIC для программного обеспечения, выполняющегося в пользовательском режиме

R/W

0

OxFFFF F020

VICVectAddr

Регистр адреса вектора. Когда происходит запрос IRQ, сервисная подпрограмма обслуживания запросов IRQ может прочитать этот регистр и передать управление по прочитанному значению адреса

R/W

0

OxFFFF F030

VICDefVectAddr

Заданный по умолчанию регистр адреса вектора. Этот регистр содержит адрес для сервисной подпрограммы обработки прерываний (ISR), которая обрабатывает невекторизованные запросы прерываний

R/W

0

OxFFFF F034

VICVfectAddrO

Регистр адреса вектора 0. Регистры адреса векторов 0... 15 содержат адреса для сервисных подпрограмм обработки прерываний для 16 векторных слотов IRQ

R/W

0

OxFFFF F100

VICVectAddrl

Регистр адреса вектора 1

R/W

0

OxFFFF F104

VIC\fectAddr2

Регистр адреса вектора 2

R/W

0

OxFFFF F108

Таблица 6.1. Регистры VIC (продолжение)


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz