ЛР4(а) > Система прерываний процессора TMS320F2812. Начальная инициализация
Статьи по теме
- ЛР5 > Аналогово-цифровой преобразователь процессора TMS320F2812
- ЛР4(г) > Разработка программы обработки прерываний от таймера процессора TMS320F2812
- ЛР4(в) > Использование таймера в процессоре TMS320F2812
- ЛР4(б) > Механизм управления обработкой прерываний DSP процессора TMS320F2812
- ЛР3 > Работа с портами ввода/вывода процессора TMS320F2812
- ЛР2 > Визуализация данных в среде Code Composer Studio на примере выполнения логических и арифметических операций
- ЛР1 > Знакомство со средой Code Composer Studio. Первый проект
Тема: Система прерываний процессора 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 |
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). Применение такого устройства позволяет существенно сократить время реакции на прерывание.