Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Подсистема прерываний F2833x





 

 

Характеристика модуля прерываний показана на рис.2.22.

Ключевой особенностью системы управления является её способность реагировать на асинхронные внешние устройства так быстро, насколько это возможно. F2833x сочетает в себе быстрые ответы на прерывания с автоматическим сохранением «контекста» – содержимого критических регистров процессора, что позволяет обслуживать многие асинхронно–синхронные события с минимальными задержками. Здесь «контекст» означает, что все регистры, должны быть сохранены, так что контроллер может уйти из основной программы и выполнять некоторые другие процессы, а затем вернуться в точности в то же место программы, где она остановилась. Контроллеры F2833x реализуют в нулевом цикле сохранение и восстановление во время прерывания 14 регистров. Эта функция помогает уменьшить время обслуживания прерывания.

(PIE) – модуль это устройство позволяющее пользователю указать отдельные векторы обслуживания прерывания до 96 внутренних и внешних событий. Все возможные 96 прерываний поступают на 14 маскируемых линий прерываний (INT1 – INT14), 12 из них находятся под контролем PIE – модуля.

Автоматическое сохранение контекста загружает 14 важных регистров процессора, как показано на рис. 2.22, в стек памяти, на которую указывает регистр–указатель стека (SP). Стек является частью памяти данных и должен находиться в нижнем 64К блоке слов памяти данных.

Подсистема прерываний ядра F2833x состоит из 16 линий прерывания (запросов); две из них названы «немаскируемыми» (RESET, NMI). Другие 14 линий – «маскируемые» – это означает, что программист может разрешить или запретить прерывания от этих 14 линий.

 

 

Рисунок 2.22 – Модуль прерываний

Термин «маскируемые».

«Маска» – двоичная комбинация «1» и «0». «1» разрешает прерывания от линии, а «0» запрещает его. Загружая маску в регистр «IER» мы можем выбрать, каким линиям прерывания будут даны возможности запрашивать обработку прерываний из ЦП. Для немаскируемых прерываний, мы не можем ввести запрет на запрос прерывания. Если сигнальная линия активная, работающая программа приостановится и запустится соответствующая подпрограмма обработки прерываний. Обычно, немаскируемые прерывания используются для высокого приоритета и безопасности, например, непредвиденный останов событий.

Все 16 линий подключаются к таблице «векторов прерываний», которая состоит из 32 битовых адресов памяти для каждого запроса прерывания. Забота программиста – заполнить эту таблицу стартовыми адресами соответствующих подпрограмм обработки прерываний. Тем не менее, в случае F2833x, эта таблица в ПЗУ уже заполнена адресами, определенными инженерами ТI, например «RESET (RS)» указывает на адрес 0x00 0040, NMI, на адрес 0x00 0042 и так далее. Все эти адреса – в RОM, так что программист должен определить единственную 32–битовую инструкцию в этой памяти.

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

Другой источник сброса – переполнение сторожевого таймера. Для того, чтобы сообщать всем другим внешним устройствам, что ЦП признал сброс, сам контроллер управляет выводом сброса активного низкого уровня. Это означает, что вывод сброса должен быть двунаправленным.

Сброс заставит контроллер не только начинать из адреса 0x3F FFC0, но он также очистит все внутренние специальные регистры, восстановит группу флагов ЦП в исходное состояние и запретит все 16 линий прерывания.

После того, как сигнал RESET снят, ЦП начинает выполнение первого кодового раздела в ПЗУ, названного «начальный загрузчик». Эта функция определяет следующий шаг, в зависимости от состояния четырех GPIO –выводов (GPIO87, 86, 85 и 84). Алгоритм работы ЦП после сброса показан на рисунке 2.23, а опции загрузки сведены в таблицу 2.5.

На F28335ControlCard все четыре GPIO – вывода подтянуты к «1», так что по умолчанию стартовый переход выбран на адрес 0x3F FFF6 во FLASH. Это заставит контроллер выполнять кодовую последовательность в памяти FLASH.

С помощью перемычки J18 (SCI – Загрузка) на Периферийной Плате Исследователя, можно изменить аппаратную последовательность. Если эта перемычка замыкается, GPIO84 будет «0» и стартовая последовательность – загрузка программы из внешней памяти через SCI–A. В этом режиме функционирования, чип должен ждать последовательный поток донных от внешнего источника.

После сброса все внутренние арифметические регистры (ACC, P, XT) и вспомогательные регистры (XAR0 по XAR7) очищаются, прерывания запрещаются (IER) и все прерывания, которые поступили перед RESET, отменяются (IFR). Указатель Вершины Стека (SP) инициализируется, чтобы адресовать 0x400 и счетчик команд (PC) указывает на аппаратный стартовый адрес 0x3F FFC0.

 

Рисунок 2.23 – Сброс – начальная загрузка

Таблица 2.4 – Опции загрузки

GPIO pins 84 / 85 / 86 / 87 XA12 XA13 XA14 A15   Выполняемые действия
   
1 1 1 1 1 1 1 0   1 1 0 1   1 1 0 0   1 0 1 1 1 0 1 0   1 0 0 1   1 0 0 0   0 1 1 1 0 1 1 0   0 1 0 1 0 1 0 0 переход к адресу 0x33 FFF6 во FLASH загрузка программы из внешней памяти через SCI–A загрузка программы из внешней EEPROM через SPI–A загрузка программы из внешней EEPROM через I2C вызов CAN загрузчика eCAN–A из mailbox 1 загрузка программы из внешней памяти через McBSP–A переход к XINTF Zone 6 адрес 0x10 0000 для 16–bit данных переход к XINTF Zone 6 адрес 0x10 0000 для 32–bit данных переход к OTP адрес 0x38 0400 загрузка из внешней памяти через GPIO port A (parallel) загрузка из внешней памяти через XINTF (parallel) переход к M0 SARAM адрес 0x00 0000

Продолжение таблицы 2.4

   
0 0 1 1 0 0 1 0   0 0 0 1     0 0 0 0   вариант для проверки режима загрузки вариант для Flash без калибровки AЦП (TI только отладка) вариант для M0 SARAM без калибровки AЦП (TI только отладка) вариант для SCI–A без калибровки AЦП (TI только отладка)

 

Два регистра ST0 и ST1 объединяют все флаги управления и статуса ЦП. ST0 содержит все математические биты, как например, нуль (Z), перенос (C) и негатив (N). ST1 содержит некоторые главные биты управления режимами.

Значение управляющих битов после сброса.

Регистр статуса 0 (ST0):

– SXM = 0, расширение знака выключено;

– OVM = 0, режим переполнения выключен;

– TC = 0, флаг управления/тестирования;

– C = 0, бит переноса;

– Z = 0, флаг нуля;

– N = 0, флаг отрицания;

– V = 0, бит переполнения;

– PM = 000, установка левого сдвига на 1;

– OVC = 00 0000, счетчик переполнения;

Регистр статуса 1 (ST1):

– INTM=1, глобальное запрещение всех маскируемых прерываний;

– DBGM=1, запрещение эмуляции доступа/событий;

– PAGE0=0, разрешение адресации стека / запрещение прямой адресации;

– VMAP=1, размещение таблицы векторов по адресу 0x3F FFC0 – 0x3F FFFF;

– SPA=0, бит статуса выравнивания указателя стека по четным адресам;

– LOOP=0, бит статуса циклических инструкций;

– EALLOW=0, бит разрешения эмуляции доступа;

– IDLESTAT=0, бит статуса инструкций холостого хода;

– AMODE=0, режим адресации C27x/C28x;

– OBJMODE=0, режим объекта C27x;

– M0M1MAP=1, бит режима отображения;

– XF = 0, бит статуса XF;

– ARP = 0, ARP указывает на AR0.

На рисунке 2.24 показаны источники прерываний, их может быть 96, но только 14 входов маскируемого прерывания. Очевидно, необходимо использовать единственную INT–линию для многочисленных источников. Каждая линия прерывания подключается к своему вектору прерывания, 32–битовому пространству памяти в векторной таблице. Это пространство памяти держит адрес подпрограммы обработки прерывания. В случае многочисленных прерываний, эта сервисная подпрограмма должна использоваться для всех поступающих запросов прерывания. Эта техника заставляет программиста использовать программное обеспечение использующее метод разделения на входе этой сервисной подпрограммы. Этот метод стоит дополнительного времени, которое часто не доступно в приложениях реального времени. Так как можно ускорить эту обработку прерываний. Инженеры ТI нашли решение, они использовали модуль PIE. PIE –Peripheral Interrupt Expansion представляет собой модуль расширения прерываний от внешних устройств.

 

 

Рисунок 2.24 – Источники прерываний

 

Этот модуль «расширяет» векторную таблицу адресов на большую длину, резервирующую индивидуальные 32 битовые адреса для каждого из 96 возможных источников прерывания. Обслуживание прерывания с помощью этого устройства значительно быстрее чем без него. Чтобы использовать PIE, необходимо переписать таблицу векторов прерываний, чтобы адресовать её с 0x 00 0D00. Дальнейший путь запроса прерывания показан на рисунке 2.25.

Действительный сигнал соответствующего прерывания
захватывается для отображения в виде «1» в
соответствующем битовом поле регистра IFR.Если индивидуальный (IER) и глобальный (INTM) переключатели включены, то прерывание достигнет ядра ЦП. Регистры управления прерываниями показаны на рисунке 2.26.

 

Рисунок 2.25 – Обработка маскируемых прерываний

Date: 2015-06-06; view: 659; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию