DSP > САПР > Цифровой сигнальный процессор ТМS320F2812: Курс лабораторных работ

ЛР4(б) > Механизм управления обработкой прерываний DSP процессора TMS320F2812

Тема: Источники запросов прерываний, регистр флагов прерываний, маскируемые прерывания, расширенная таблица векторов прерывания

Рассмотрим более подробно механизм управления обработкой прерывания процессора TMS320F2812. На рисунке 3 показан принцип мультиплексирования запросов на прерывание с применением контроллера управления прерываниями от периферии. Все 96 источников запросов на прерывание группируются в 12 групп по 8 источников в каждой. Запросы на прерывание от каждой группы подаются на одну из двенадцати линий маскируемых запросов на прерывание процессорного ядра INT1 – INT12. Поступающие запросы на прерывание фиксируются в регистре флагов прерывания IFR (логическая «1» соответствует наличию запроса на прерывание). Структура регистра флагов прерывания показана на рисунке 4. После поступления запроса на прерывание, проверяется состояние регистра масок прерывания IER. Структура регистра масок прерывания соответствует структуре регистра флагов прерывания (см. рис. 4).


Рисунок 3. Мультиплексирование запросов на прерывание в ЦСП TMS320F2812 [1].

    Если в регистре IER для данного прерывания установлена логическая «1» (т.е., разрешена его обработка), то запрос на прерывание поступает дальше. Если обработка данного запроса на прерывание запрещена (в соответствующем бите регистра IER записан логический «0»), то поступивший запрос игнорируется. Существует еще один регистр масок прерывания – DBGIER, структура которого полностью совпадает со структурой регистра IER. Он предназначен для маскирования запросов на прерывание в том случае, когда процессор находится в состоянии останова и используется отладочный режим в реальном масштабе времени [2].


Рисунок 4. Структура регистров флагов прерывания IFR и масок прерывания IER [2].

    Последним проверяется состояние бита запрета всех маскируемых запросов на прерывание INTM (бит 0 в регистре статуса ST1 [2]). Если данный бит установлен в состояние логического «0» (разрешение обработки маскируемых запросов на прерывание), то поступивший запрос на прерывание будет обработан процессорным ядром. При установке этого бита в состояние логической «1» (запрет обработки маскируемых запросов на прерывание), все поступающие запросы на прерывание от маскируемых источников будут игнорироваться.

    Для сгруппированных в двенадцать групп источников запросов на прерывания (рисунок 5) используются свои регистры флагов прерывания PIEIFR1 – PIEIFR12 и свои регистры масок прерывания PIEIER1 – PIEIER12 (по одной паре для каждой группы). Принцип их работы аналогичен регистрам IFR и IER, только значащими у них являются восемь младших разрядов. Настройки контроллера управления прерываниями от периферии выполняются с помощью двух управляющих регистров – регистра управления PIECTRL (PIE control register) и регистра разрешения PIEACK (PIE acknowledge register).


Рисунок 5. Распределение источников запросов на прерывание процессора TMS320F2812 по группам [1].

Адреса регистров флагов прерывания, регистров масок прерывания и управляющих регистров контроллера управления прерываниями от периферии указаны в таблице 3 [5] (располагаются в области памяти данных).

Таблица 3. Адреса регистров контроллера управления прерываниями от периферии [5].

Регистр Адрес Назначение
PIECTRL 0x00 0CE0 Регистр управления PIE
PIEACK 0x00 0CE1 Регистр разрешения PIE
PIEIER1 0x00 0CE2 Регистр масок прерывания группы 1
PIEIFR1 0x00 0CE3 Регистр флагов прерывания группы 1
PIEIER2 0x00 0CE4 Регистр масок прерывания группы 2
PIEIFR2 0x00 0CE5 Регистр флагов прерывания группы 2
PIEIER3 0x00 0CE6 Регистр масок прерывания группы 3
PIEIFR3 0x00 0CE7 Регистр флагов прерывания группы 3
PIEIER4 0x00 0CE8 Регистр масок прерывания группы 4
PIEIFR4 0x00 0CE9 Регистр флагов прерывания группы 4
PIEIER5 0x00 0CEA Регистр масок прерывания группы 5
PIEIFR5 0x00 0CEB Регистр флагов прерывания группы 5
PIEIER6 0x00 0CEC Регистр масок прерывания группы 6
PIEIFR6 0x00 0CED Регистр флагов прерывания группы 6
PIEIER7 0x00 0CEE Регистр масок прерывания группы 7
PIEIFR7 0x00 0CEF Регистр флагов прерывания группы 7
PIEIER8 0x00 0CF0 Регистр масок прерывания группы 8
PIEIFR8 0x00 0CF1 Регистр флагов прерывания группы 8
PIEIER9 0x00 0CF2 Регистр масок прерывания группы 9
PIEIFR9 0x00 0CF3 Регистр флагов прерывания группы 9
PIEIER10 0x00 0CF4 Регистр масок прерывания группы 10
PIEIFR10 0x00 0CF5 Регистр флагов прерывания группы 10
PIEIER11 0x00 0CF6 Регистр масок прерывания группы 11
PIEIFR11 0x00 0CF7 Регистр флагов прерывания группы 11
PIEIER12 0x00 0CF8 Регистр масок прерывания группы 12
PIEIFR12 0x00 0CF9 Регистр флагов прерывания группы 12

    Запросы на прерывание, связанные с векторами INT13 и INT14, поступают непосредственно в процессорное ядро минуя контроллер управления прерываниями от периферии.

    Структура регистра управления PIECTRL представлена на рисунке 6. Этот регистр доступен для чтения (запись разрешена только в младший значащий разряд).

Рисунок 6. Структура регистра PIECTRL [5]

В поле PIEVECT (биты 15 – 1 данного регистра) фиксируется адрес вектора прерывания в расширенной таблице векторов прерывания для активного запроса. Поле ENPIE (бит 0 данного регистра) служит для разрешения обращения к расширенной таблице векторов прерывания. Установка этого бита в состояние логической «1» разрешает использовать расширенную таблицу векторов прерывания контроллера управления прерываниями от периферии. Установка бита ENPIE в состояние логического «0» указывает процессору на доступность таблицы векторов прерывания, расположенной только в области загрузочной памяти (начиная с адреса 0x3F FFC0).

    Структура регистра разрешения PIEACK представлена на рисунке 7. Этот регистр доступен для чтения и записи.

Рисунок 7. Структура регистра PIEACK [5]

Биты 15 – 12 этого регистра не используются (зарезервированы). Поле PIEACK (биты 11 – 0 данного регистра) используется для разрешения выдачи контроллером управления прерываниями от периферии запроса на прерывание процессорному ядру. Установка одного из битов в состояние логической «1» разрешает передачу запроса на прерывание от соответствующей группы устройств процессорному ядру. Запись логического «0» – запрещает передачу. Бит 0 регистра PIEACK -соответствует линии INT1, а бит 11 – соответственно линии INT12.

    Расширенная таблица векторов прерывания располагается в области ОЗУ (память данных ЦСП) по адресам 0x00 0D00 – 0x00 0DFF. Так как эта область памяти не является энергонезависимой, то ее вначале необходимо инициализировать (выполнить загрузку расширенной таблицы векторов прерывания). Распределение адресного пространства расширенной таблицы векторов прерывания показано в таблице 4.

Таблица 4. Распределение адресного пространства расширенной таблицы векторов прерывания [5].

Вектор Абсолютный адрес Описание
RESET 0x00 0D00 Не используется. Этот вектор всегда связан с адресом 0x3F FFC0 ПЗУ
INT1 0x00 0D02 Не используется. Вектор перенаправлен на группу 1.
INT12 0x00 0D18 Не используется. Вектор перенаправлен на группу 12.
INT13 0x00 0D1A Внешнее прерывание XINT13 или прерывание от таймера 1.
INT14 0x00 0D1C Прерывание от таймера 2.
DATALOG 0x00 0D1E Прерывание для отладки.
USER12 0x00 0D3E Пользовательское программное прерывание.
INT1.1 0x00 0D40 Прерывание 1 группы 1.
INT1.8 0x00 0D4E Прерывание 8 группы 1.
INT12.1 0x00 0DF0 Прерывание 1 группы 12.
INT12.8 0x00 0DFE

Прерывание 8 группы 12.


Комментарии: