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

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

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

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

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

Процессорное ядро ЦСП 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 5 Маскируемое прерывание 1
INT2 0x00 0004 0x3F FFC4 6 Маскируемое прерывание 2
INT3 0x00 0006 0x3F FFC6 7 Маскируемое прерывание 3
INT4 0x00 0008 0x3F FFC8 8 Маскируемое прерывание 4
INT5 0x00 000A 0x3F FFCA 9 Маскируемое прерывание 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 4 Прерывание для отладки
Резерв 0x00 0022 0x3F FFE2 2 Зарезервировано
NMI 0x00 0024 0x3F FFE4 3 Немаскируемое прерывание

Таблица векторов прерывания может располагаться в верхней или в нижней области памяти программ, в зависимости от установки флага 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 Способ инициализации
1 х х х Переход к ячейке флэш-памяти по адресу 0x3F 7FF6
0 1 х х Загрузка программы из внешней памяти через порт SPI
0 0 1 1 Загрузка программы через порт SCI-A
0 0 1 0 Переход к ячейке внутреннего ОЗУ (H0 SARAM) по адресу 0x3F 8000
0 0 0 1 Переход к ячейке внутренней однократно программируемой памяти (ОТР) по адресу

0x3D 7800

0 0 0 0 Загрузка программы через параллельный порт 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). Применение такого устройства позволяет существенно сократить время реакции на прерывание.


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