- •1. Организация системы ввода-вывода
- •2. Классификация и особенности аппаратных интерфейсов эвм.
- •3. Архитектура учебного стенда sdk-1.1.
- •4. Вычислительное ядро и система ввода-вывода в стенде sdk-1.1
- •5. Назначение и организация расширителя портов ввода/вывода в sdk-1.1.
- •6. Организация и принцип работы программируемого процессора.
- •7. Контроллер ввода-вывода.
- •8. Процессор ввода-вывода.
- •10. Обмен в режиме прямого доступа между устройствами эвм.
- •11. Организация аппаратных прерываний в эвм.
- •12. Функции и принцип работы контроллера прерываний.
- •13. Внутрисистемные интерфейсы эвм
- •14. Системные интерфейсы эвм.
- •15. Малые периферийные интерфейсы эвм
- •16. Последовательные малые периферийные интерфейсы
- •17. Организация контроллера последовательного интерфейса rs-232 (usart).
- •18. Организация параллельных конфигурируемых портов ввода-вывода.
- •19. Особенности параллельных интерфейсов
- •20. Устройства сопряжения с объектами управляющих эвм
- •21. Синхронизация в аппаратных интерфейсах эвм.
- •22. Интерфейс i2с, общие сведения
- •23. Общая характеристика интерфейса spi
- •24. Ввод-вывод аналоговой информации.
- •25. Организация памяти, регистры общего и специального назначения микроконтроллера с архитектурой mcs51.
- •26. Организация и принцип работы программируемого таймера.
- •16 Битный режим с автоперезагрузкой (таймер 2)
- •16 Битный режим захвата
- •27. Программирование стенда sdk-1.1
- •Дискретный ввод-вывод и гальваническая развязка
11. Организация аппаратных прерываний в эвм.
Система прерываний:
Прерывание в классической трактовке — прекращение выполнения текущей команды или последовательности команд для обработки некоторого события обработчиком прерывания, с последующим возвратом к выполнению прерванной программы.
Прерывание можно определить как механизм межпроцессного взаимодействия, включающий в себя механизмы передачи данных (тип прерывания) и управления (пуск/останов текущего процесса).
Система прерываний является неотъемлемой частью любой вычислительной системы и предназначена для обеспечения быстрой реакции процессора на ряд ситуаций, требующих его внимания, которое может возникать как в самом процессоре, так и за его пределами.
Прерывания следует рассматривать не только и не столько как реакцию процессора на аномальные ситуации, а как естественный процесс, с помощью которого реализуется поддержка большинства необходимых механизмов, таких как виртуальная память, ввод/вывод и т. п. По образному выражению Питера Нортона: "Прерывание – это движущая сила компьютера".
Система прерываний представляет собой комплекс аппаратных и программных средств. Аппаратные средства системы прерываний обычно называются блоком или контроллером прерываний. В ПК это PIC (Programmable Interrupt Controller), т.е. отдельная микросхема 8259A. В некоторых случаях контроллер прерываний интегрируется в кристалл микропроцессора. Программные средства систем прерываний представляют собой специальные программы – обработчики прерываний (interrupt handler).
Назначение системы прерывания – реагировать на определенные события путем прерывания работы процессора по выполнению программы и переключения процессора на выполнение другой программы, обслуживающей соответствующую ситуацию. В момент возникновения определенного события (причины) формируется сигнал прерывания, который поступает в процессор и инициирует специальную операцию – операцию прерывания, обеспечивающую прерывание одной программы и переключение процессора на выполнение другой программы.
Классификация прерываний:
В зависимости от источника возникновения сигнала прерывания делятся на:
•асинхронные или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, внешнего интерфейса, АЦП и других;
•внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции. Такого рода прерывания еще называются исключительными ситуациями (exceptions).
•программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения драйверов и операционной системы.
Аппаратные прерывания могут возникать в произвольные моменты времени и являются асинхронными по отношению к выполняемой программе.
С помощью аппаратных прерываний осуществляется взаимодействие процессора с периферийными устройствами, а также сообщается о различных ошибках аппаратуры (например, ошибка памяти, ошибка передачи по шине и т. п.) или об аварийном отключении питания. Во втором случае иногда такие прерывания называют исключительными ситуациями (exceptions).
Реагируя на аппаратное прерывание, процессор должен идентифицировать его источник, сохранить минимальный контекст прерываемой программы и переключаться на специальную программу – обработчик прерывания (interrupt handler), который может быть оформлен как процедура или задача.
Действия обработчика прерывания, называемые обслуживанием прерывания, заключается в том, чтобы правильно отреагировать на прерывание конкретного источника (например, поместить символ нажатой клавиши в буфер, произвести инкремент системных часов и т. п.).
После завершения обслуживания прерывания процессор возвращается к выполнению прерванной программы, и она должна продолжиться таким образом, как будто прерывания не было.
К основным ситуациям, возникающим вне процессора и приводящим к прерыванию, относятся:
запросы от управляемого объекта (являются типичными для управляющих систем), т.е. запросы от ВУ:
ВУ, готовые к обмену, требуют реакции процессора для организации программно-управляемой передачи данных;
завершение работы ВУ или КВВ по передаче данных;
особая (аварийная) ситуация в ВУ или КВВ.
запросы прерываний от других процессоров для обеспечения синхронизации вычислительных процессов, протекающих в рамках многопроцессорной системы.
Программные прерывания, в отличие от аппаратных, появляются синхронно по отношению к выполняемой программе.
Причинами программных прерываний могут служить особые ситуации, возникающие при выполнении программы, препятствующие нормальному продолжению программы и требующие специального обслуживания (переполнение, нарушение защиты памяти, отсутствие нужной страницы в оперативной памяти и т.п.), а также специальные команды типа INT n ( n — номер прерывания), являющиеся генераторами программных прерываний. Эти команды обычно используются для вызова определенных функций ОС.
Обработка исключительных ситуаций(exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма. В русском языке также применяется более короткая форма термина: «обработка исключений».
Во время выполнения программы могут возникать ситуации, когда состояние данных, УВВ или компьютерной системы в целом делает дальнейшие вычисления в соответствии с базовым алгоритмом невозможным или бессмысленными. Классические примеры подобных ситуаций:
•Нулевое значение знаменателя при выполнении операции целочисленного деления. Результата у операции быть не может, поэтому ни дальнейшие вычисления, ни попытка использования результата деления не приведут к решению задачи.
•Ошибка при попытке считать данные с внешнего устройства. Если данные не удаётся ввести, любые дальнейшие запланированные операции с ними бессмысленны.
•Исчерпание доступной памяти. Если в какой-то момент система оказывается не в состоянии выделить достаточный для прикладной программы объём оперативной памяти, программа не сможет работать нормально.
•Появление сигнала аварийного отключения электропитания системы. Прикладную задачу, по всей видимости, решить не удастся, в лучшем случае (при наличии какого-то резерва питания) прикладная программа может озаботиться сохранением данных.
•Появление на входе коммуникационного канала данных, требующих немедленного считывания. Чем бы ни занималась в этот момент программа, она должна перейти к чтению данных, чтобы не потерять поступившую информацию.
Функции системы прерываний и их реализация
Функции системы прерываний:
1.Прием и хранение запросов прерываний от многих источников.
2.Выделение наиболее приоритетного запроса из множества поступивших.
3.Проверка возможности обработки запросов центральным процессором (проверка замаскированности запросов или сравнение уровня приоритетности запросов с так называемым порогом прерываний).
4.Сохранение состояния (контекста) прерываемой программы.
5.Вызов обработчика прерываний.
6.Собственно обработка прерываний (выполнение программы обработки прерываний).
7.Восстановление состояния (контекста) прерванной программы и возобновление ее выполнения.
Этапы 1-5 выполняются аппаратными средствами компьютера автоматически при появлении запроса прерывания. Этап 7 также выполняется аппаратно по команде возврата из обработчика прерывания.
Процедура опроса источников прерываний с целью выделения наиболее приоритетного (полинг/polling) может быть реализована как на аппаратном, так и на программном уровнях.
Программный полинг (уже был рассмотрен ранее) реализуется специальной программой, которая последовательно опрашивает триггеры запросов, объединенных, как правило, в единый регистр с целью поиска первого установленного бита.
Аппаратный полинг может быть реализован либо на основе многотактной схемы, в основу которой положен двоичный счетчик, либо с помощью однотактной схемы, которую обычно называют дейзи-цепочка .
Отношение процессора к поступившим запросам прерываний может быть выражено с помощью одного из двух механизмов:
•механизм масок;
•порог прерываний.
Механизм масок основан на использовании специального бита для каждого запроса прерываний, с помощью которого разрешается или запрещается обработка прерываний, связанных с этим запросом. В процессоре семейства Intel функцию маски выполняет бит IF, с помощью которого разрешается (IF=1) или запрещается (IF=0) обработка запросов внешних прерываний (как правило, от ВУ). При сброшенном флаге IF принято говорить, что прерывание замаскировано.
Запросы прерываний от ВУ формируются с помощью PIC (Programmable InterruptionController), который связан линией запроса с CPU. Запросы от PIC поступают в CPU на внешний вход INTR.
Для управления прерываниями используется маска прерываний, представляющая собой двоичное слово M = m1 m2 … mk с числом разрядов, равным числу маскируемых причин прерывания.
Порог прерываний представляет собой собственный приоритет процессора, точнее, уровень приоритета выполняемой им программы, и отражается с помощью специального поля в слове состояний процессора.
Обработчик прерывания должен выполнять действия, связанные с появлением запроса данного типа, и поместить адрес начала этой программы в специальной таблице адресов прерываний. Программа-обработчик, как правило, должна начинаться с сохранения состояния тех регистров процессора, которые будут ею изменяться, и заканчиваться восстановлением состояния этих регистров. Программа-обработчик должна завершаться специальной командой, указывающей процессору на необходимость возврата в прерванную программу.
В случае аппаратного полинга (дейзи-цепочка, приоритетная цепочка, гирляндное или каскадное включение устройств)микропроцессор и все ПУ соединяются таким образом, что микропроцессор может осуществить автоматический запрос с целью идентификации прерывающего устройства.
В микроконтроллере ADuC812 девять источников прерываний с двумя уровнями приоритетов. Когда происходит прерывание, значение программного счетчика помещается в стек, а в сам счетчик загружается адрес соответствующего вектора прерывания.
Прерывания ADuC812 имеют вектора в диапазоне 0003h-0043h, которые попадают в область младших адресов памяти программ. Это пространство соответствует 8Кб (0000h-2000h) Flash-памяти. В стенде пользователь не имеет возможности записи во Flash-память (запись программ осуществляется во внешнюю память программ и данных), следовательно, не может подставить свои процедуры обработки прерываний (точнее, команды перехода к процедурам) по адресам, соответствующим векторам прерываний.
Проблема использования прерываний в пользовательских программах решается следующим образом:
1.По адресам (0003h-0043h) векторов прерываний во Flash-памяти SDK-1.1 располагаются команды переходов на вектора пользовательской таблицы, размещенной в адресах 2003h-2043h.
2.По адресам векторов пользовательской таблицы пользователем указываются команды переходов на процедуры обработки прерываний.
Для каждого источника прерывания программист может задать один из двух уровней приоритета: высокий и низкий. Прерывание с высоким уровнем приоритета может прерывать обслуживание прерывания с низким уровнем приоритета, а если прерывания с разными уровнями происходят одновременно, то прерывание с высоким приоритетом будет обслужено первым. Обслуживание прерывание не может быть прервано прерыванием с таким же уровнем приоритета. Если два прерывания с одинаковым уровнем приоритета происходят одновременно, то порядок их обработки определяется с помощью с таблицы.
