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

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

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

Скачать Материалы к лабораторной работе по ЦСП ТМS320F2812 №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.