- •Встроенные микропроцессорные системы
- •Оглавление
- •2. Программное обеспечение встроенных систем ……….
- •Введение
- •Модуль 1
- •Аппаратные средства встроенных систем
- •1.2. Элементы архитектуры процессоров встроенных систем
- •1.2.1. Множество команд
- •1.2.3.1. Адресное пространство
- •1.2.3.2. Порядок байт
- •1. 2.3.3. Когерентность памяти
- •1. 2.3.4. Защита памяти
- •1. 2. 4. Модель прерываний
- •1.2. 5.Модель управления памятью
- •1.2.5.1. Страничная организация памяти
- •1.2.5.2. Сегментация памяти
- •1.3. Типы процессоров
- •1.4. Формы параллелизма в процессорах
- •1.4.1. Конвейеризация
- •1.4.2. Параллелизм уровня команд
- •1.5.Технологии памяти
- •1.5.1. Оперативная память
- •1.5.1. 1. Статическое озу
- •1.5.2. Постоянное запоминающее устройство (rom)
- •1.6. Иерархия памяти
- •1.6.1. Распределение или карта памяти
- •1.6.2. Блокнотная и кэш память
- •1.6.2.1. Кэш-память прямого отображения
- •1.6.2.2. Ассоциативная по множеству кэш-память
- •1.6.2.3. Обновление кэш-памяти.
- •1.6.2.4. Протокол когерентности кэширования с обратной записью
- •1.7. Магистраль микропроцессорной системы
- •1.8. Базовые устройства ввода-вывода встроенных систем
- •1.8.1. Порты ввода-вывода общего назначения
- •1.7.2. Таймер-счетчик
- •1.8.3. Импульсно-кодовая модуляция.
- •1.8.4. Многоканальный аналого-цифровой преобразователь
- •1.9. Базовые последовательные интерфейсы ввода-вывода
- •1.9.2. Последовательный интерфейс spi
- •1.9.4.1. Введение в usb
- •1.9.4.2. Интерфейс Open Host Controller для usb
- •Вопросы для самоконтроля
- •Модуль 2
- •1.10. Язык проектирования аппаратуры vhdl
- •1.10.2. Введение в vhdl
- •1.10.2.1. Программирование на vhdl для моделирования и синтеза [19]
- •1.10.2.2. Entity и architecture
- •1.10.2.3. Операторы присваивание и process [19]
- •1.10.2.4. Цикл моделирования vhdl
- •1.10.2.5. Многозначная логика и стандарт ieee 1164
- •1.11. Проектирование устройств ввода-вывода и контроллеров
- •1.12. Интегрированная среда разработки аппаратных средств
- •Вопросы для самоконтроля
- •Модуль 3
- •2. Программное обеспечение встроенных систем
- •2.1 Модель вычислений
- •2.2 Автомат с конечным числом состояний
- •2.3. Асинхронный язык проектирования sdl
- •2.4. Синхронный язык проектирования Lustre
- •2.5. Многозадачность.
- •2.5.1. Язык программирования Си
- •2.5.2. Потоки
- •2.5.2.1. Реализация потоков
- •2.5.2.2. Взаимное исключение
- •2.5.2.3. Взаимная блокировка
- •2.5.2.4. Модели непротиворечивости памяти
- •2.5.2.5. Проблемы с потоками
- •2.5.3. Процессы и передача сообщений
- •2.6. Интегрированная среда разработки прикладного программного
- •2.6.2. Комплект программ Telelogic Tau sdl Suite
- •2.6.3. Средства разработки программного обеспечения
- •2.7.1. Моделирование, эмуляция и макетирование
- •2.7.2. Формальная верификация
- •2.7.3. Оценка производительности
- •2.7.3.1. Оценка wcet
- •2.7.3.2. Исчисление реального времени
- •1 2 3 E
- •2.7.4. Модели энергии и мощности
- •2.7.5. Тепловая модель
- •Вопросы для самоконтроля
- •Заключение
- •Задания
- •1. Конвейеризация
- •2. Иерархия памяти
- •3. Базовые устройства ввода-вывода встроенных систем
- •5. Многозадачность
- •6. Валидация и оценка проекта
- •Библиографический список
- •Встроенные микропроцессорные системы
1. 2.3.4. Защита памяти
Защита памяти предусматривает механизмы ограничения доступа к памяти по записи или чтению со стороны программ. Защита связана с разбиением памяти на блоки, страницы или сегменты. Для этих объектов может быть разрешено только чтение, только запись, запись и чтение со стороны программы пользователя или супервизора. Вариант защиты задается в дескрипторных таблицах сопоставленных этим разбиениям. Нарушения требований защиты вызывают особое поведение процессора для их преодоления.
1. 2. 4. Модель прерываний
Прерывания – это изменения в потоке управления, вызванные какими-либо событиями. Эти события могут быть внешними по отношению к процессору (инициируются устройствами ввода-вывода) - асинхронные прерывания или вызваны результатами выполнения команд – синхронные прерывания (системные прерывания, исключения или ловушки). Прерывание останавливает работу программы и передает управление не содержащейся в явном виде в программе подпрограмме обработки прерывания (ISR – Interrupt Serves Routine или interrupt handler – обработчик прерывания) для выполнения особых действий. Адрес первой команды ISR определяется вектором прерывания, сопоставленным тому или иному прерыванию. После завершения ISR управление передается прерванной программе. В случае асинхронного прерывания программа должна продолжить процесс в том же самом состоянии, в котором находилась, когда произошло прерывание. Соответствующую ISR называют прозрачной.
Более общим является понятие исключение (exception) - необычная, непредусмотренная или ошибочная ситуация, которая может возникнуть при выполнении программы и изменить её нормальное функционирование.
Наиболее распространенные условия, которые могут вызвать исключения, это переполнение и исчезновение значащих разрядов при операциях с плавающей запятой, переполнение при операциях с целыми числами, нарушения защиты памяти, неопределяемый код операций, переполнение стека, обращение к несуществующим или нечетным адресам MM, деление на 0. К исключениям относят также и прерывания.
Физический интерфейс простой системы прерываний может быть представлен единственной линией IRQ (Interrupt Request – запрос прерывания). Высокий уровень напряжения на линии IRQ, например, воспринимается как запрос на прерывание. На линию IRQ могут быть мультиплексированы запросы от нескольких источников. Однако в этом случае после принятия общего запроса к обслуживанию возникает задача идентификации источника, выставившего запрос, и передачи управления на соответствующую подпрограмму ISR. Эта задача решается только программным методом с помощью специальной процедуры, называемой полингом (polling). Функция полинга состоит в последовательном опросе состояния всех устройств (чтение регистров состояния) для выявления готовности к обслуживанию.
Для увеличения числа одновременно обслуживаемых источников прерываний в систему вводится несколько линий с фиксированными векторами прерываний. Такую систему называют радиальной. Часть радиальных линий могут быть внутренними для приема исключений процессора.
В зависимости от числа запросов, одновременно находящихся на обслуживании, различают одно- и многоуровневые системы прерываний. В одноуровневой системе в каждый момент времени допускается лишь один запрос. Обработка всех других запросов откладывается до окончания текущего обслуживания блокировкой всех остальных.
Если несколько устройств одновременно запросили обслуживание, система прерываний выбирает одно из них на основании приоритета, отражающего важность и срочность его обслуживания. Как наиболее естественная, выделяется линейно упорядоченная фиксированная система приоритетов.
Повышение гибкости системы приоритетов связано с их динамическим изменением по заданному алгоритму. Однако в каждый момент времени все приоритеты строго упорядочены, что обеспечивает однозначный выбор одного из них.
Одной из систем с динамически изменяемыми приоритетами является циклическая система. В ней после каждого очередного обслуживания запроса происходит циклический сдвиг приоритетов с присвоением нижнего только что обработанному запросу. Это приводит к равномерному распределению приоритетов.
Многоуровневая система прерываний разрешает многократное (по числу уровней) прерывание одних ISR другими. Для этого каждому уровню ставится в соответствие некоторое подмножество запросов из их общего числа и строго упорядоченный приоритет. Подпрограммы ISR некоторого уровня могут быть прерваны лишь запросами более высокого уровня. Приоритеты запросов сравниваются с приоритетом процессора и, если он ниже, прерывают его работу. Для разрешения конфликтов внутри группы запросов одного уровня существует вторичная система приоритетов.