ЛР4(а) > Система прерываний процессора TMS320F2812. Начальная инициализация

Тема: Система прерываний процессора TMS320F2812. Таблица векторов прерываний. Источники сигнала RESET

    Наше четвертое занятие мы посвятим знакомству с системой аппаратных прерываний процессора TMS320F2812. Вначале дадим определение – что же такое «аппаратное прерывание»?

    Аппаратным прерыванием (далее по тексту – прерывание) называется механизм реакции на асинхронное событие, возникающее во внутренних или внешних, по отношению к процессору, периферийных устройствах. Сигнал, информирующий о наступлении такого события, называется «запросом на прерывание». При поступлении запроса на прерывание, процессор приостанавливает выполнение основной программы и переходит к выполнению подпрограммы обработки прерывания. После завершения обработки прерывания, процессор возвращается к выполнению основной программы. Чем быстрее процессор обслуживает запросы на прерывание, тем лучше он подходит для решения задач в реальном масштабе времени.

Скачать Материалы к лабораторной работе по ЦСП ТМS320F2812 №4.

    Процессорное ядро ЦСП TMS320F2812 принимает запросы на прерывание от восемнадцати источников (рисунок 1), два из которых являются «немаскируемые» (RESET и NMI). Остальные шестнадцать источников – «маскируемые», т.е. пользователь имеет возможность разрешить или запретить обработку прерывания, поступающего по этим линиям. Управление маскируемыми прерываниями осуществляется с помощью «маски» – двоичного флага, принимающего значения логического «0» или логической «1». Установка флага в состояние логической «1» разрешает обработку запроса на прерывание, поступающего от данного источника. Установка флага в состояние логического «0» – запрещает обработку запроса на прерывание. Для хранения масок используется специальный регистр – регистр масок прерывания (IER). На рисунке 1 не показаны два маскируемых прерывания (DLOGINT и RTOSINT), используемые при отладке программного обеспечения, и немаскируемое прерывание RESET.


 

Рисунок 1. Источники прерывания процессорного ядра ЦСП TMS320F2812 [1].

    Обработка немаскируемых прерываний не может быть запрещена пользователем. Появление запроса на прерывание по этим линиям обязательно вызовет остановку выполнения основной программы и переход на подпрограмму обработки данного прерывания.

    Все восемнадцать линий запросов на прерывание (векторов) связаны с определенной областью памяти программ процессора – таблицей векторов прерывания. В этой области, для каждого вектора отводятся две ячейки памяти (32 бита), в которых пользователь должен указать адрес перехода на подпрограмму обработки прерывания от данного источника (таблица 1).

Талица 1. Таблица векторов прерывания процессора TMS320F2812 [2].

Вектор 

Абсолютный адрес ячейки памяти программ

Приоритет 

Описание 

VMAP=0 

VMAP=1 

RESET 

0x00 0000 

0x3F FFC0 

1(высший)

Аппаратный сброс

INT1 

0x00 0002 

0x3F FFC2 

Маскируемое прерывание 1

INT2 

0x00 0004 

0x3F FFC4 

Маскируемое прерывание 2

INT3 

0x00 0006 

0x3F FFC6 

7

Маскируемое прерывание 3

INT4

0x00 0008

0x3F FFC8

8

Маскируемое прерывание 4

INT5 

0x00 000A 

0x3F FFCA 

Маскируемое прерывание 5

INT6 

0x00 000C 

0x3F FFCC 

10 

Маскируемое прерывание 6

INT7 

0x00 000E 

0x3F FFCE 

11 

Маскируемое прерывание 7

INT8 

0x00 0010 

0x3F FFD0 

12 

Маскируемое прерывание 8

INT9 

0x00 0012 

0x3F FFD2 

13 

Маскируемое прерывание 9

INT10 

0x00 0014 

0x3F FFD4 

14 

Маскируемое прерывание 10

INT11 

0x00 0016 

0x3F FFD6 

15 

Маскируемое прерывание 11

INT12 

0x00 0018 

0x3F FFD8 

16 

Маскируемое прерывание 12

INT13 

0x00 001A 

0x3F FFDA 

17 

Маскируемое прерывание 13

INT14 

0x00 001C 

0x3F FFDC 

18 

Маскируемое прерывание 14

DLOGINT 

0x00 001E 

0x3F FFDE 

19(низший)

Прерывание для отладки 

RTOSINT 

0x00 0020 

0x3F FFE0 

Прерывание для отладки 

Резерв 

0x00 0022 

0x3F FFE2

Зарезервировано 

NMI 

0x00 0024 

0x3F FFE4 

Немаскируемое прерывание 

 

    Таблица векторов прерывания может располагаться в верхней или в нижней области памяти программ, в зависимости от установки флага VMAP в регистре статуса ST1. По умолчанию флаг VMAP устанавливается в состояние логической «1».

    Переход от высокого логического уровня к низкому на внешнем выводе XRS процессора TMS320F2812 вызывает процедуру начальной инициализации (аппаратный «сброс», RESET). Это событие заставляет ядро процессора прекратить выполнение текущей программы и перейти к выполнению команды, расположенной по адресу 0x3F FFC0 (начальный адрес). При этом происходит очистка конвейера, установка всех внутренних регистров и флагов процессора в исходное состояние и запрещаются все маскируемые прерывания. Обычно сигнал RESET генерируется в момент подачи питания на процессор.

    Другим источником сигнала RESET может служить внутренний сторожевой таймер процессора TMS320F2812 (Watchdog Timer). При переполнении счетного регистра данного таймера происходит генерация сигнала аппаратного сброса, который поступает в центральное процессорное ядро и на двунаправленный вывод XRS процессора.

    Для полного понимания процедуры начальной инициализации процессора необходимо сделать некоторые уточнения. Следует напомнить, что карта памяти процессора TMS320F2812 содержит две области памяти с адресом 0x3F FFC0 – это внутренняя память процессора и внешняя память. За выбор одной из областей памяти отвечает другой внешний вывод процессора – XMP/MC (Microprocessor/Microcontroller Mode). Подача на этот вывод сигнала логической «1» переводит ЦСП в микропроцессорный режим работы. При этом, обращение происходит к внешней памяти, а внутренняя память процессора становится недоступной. Установка на этом выводе сигнала логического «0» переводит ЦСП в микроконтроллерный режим, в котором начальная инициализация процессора происходит из внутренней памяти. Состояние вывода XMP/MC проверяется в момент появления сигнала RESET и сохраняется в регистре управления внешним интерфейсом XINTCNF2 по адресу 0x0 0B34 памяти данных (бит 8, флаг MP/MC).

     В микроконтроллерном режиме дальнейшей инициализацией процессора управляет программа начальной загрузки (Bootloader), которая располагается во внутренней памяти программ по адресу 0x3F FС00 (рисунок 2). Эта программа записывается в память ЦСП при изготовлении.

 

    

Рисунок 2. Структура блока памяти процессора TMS320F2812 с программой начальной загрузки [3].

    Данная программа проверяет комбинацию сигналов, поданную на четыре внешних вывода процессора GPIOF2, GPIOF3, GPIOF4 и GPIOF12. В зависимости от их состояния происходит выбор одного из способов продолжения инициализации ЦСП (смотри таблицу 2).

 

Таблица 2. Способы инициализации ЦСП TMS320F2812 [3].

GPIOF4

GPIOF12

GPIOF3

GPIOF2

Способ инициализации

х 

х 

х 

Переход к ячейке флэш-памяти по адресу 0x3F 7FF6

х 

х 

Загрузка программы из внешней памяти через порт SPI

Загрузка программы через порт SCI-A

Переход к ячейке внутреннего ОЗУ (H0 SARAM) по адресу 0x3F 8000

0

Переход к ячейке внутренней однократно программируемой памяти (ОТР) по адресу

0x3D 7800

Загрузка программы через параллельный порт GPIOB

 

    Пользователь сам определяет место расположения исполняемой программы. Обычно переход к ячейке флэш-памяти осуществляется в том случае, когда отладка проекта закончена. Для записи программы во флэш-память используется специальная сервисная программа (программатор или загрузчик), подключаемая к Code Composer Studio и доступная на сайте фирмы Texas Instruments [6].

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

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

    Для выполнения наших практических работ мы будем использовать переход к программе, записанной во внутреннем ОЗУ процессора. Для выбора данного режима на отладочном модуле eZdsp используются пять перемычек. Их необходимо установить следующим образом: JP1 – 2:3; JP7 – 2:3; JP8 – 2:3; JP11 – 1:2 и JP12 – 2:3 (подробно настройки отладочного модуля описываются в техническом описании на него [4]).

    Наличие большого набора встроенных периферийных модулей в процессоре TMS320F2812 с большим количеством источников прерывания (96 источников), а также ограниченность доступных процессорному ядру линий приема запросов на прерывание (только 14 маскируемых источников прерывания), заставляет применять специальный механизм управления обработкой прерываний (Interrapt Management). Идея его заключается в мультиплексировании, т.е. использовании одной линии запроса на прерывание процессорного ядра INTx для приема соответствующих сигналов от разных источников. Естественно, что и таблица векторов прерывания ЦСП должна быть расширена – она должна содержать по две ячейки памяти (32 бита) для каждого из 96 возможных источников прерываний. Управление процессом расширения прерываний осуществляется специальным устройством – контроллером управления прерываниями от периферии (peripheral interrupt expansion (PIE) controller). Применение такого устройства позволяет существенно сократить время реакции на прерывание.