Читайте также: |
|
Интерфейс RS–232C является наиболее широко распространенной стандартной последовательной связью между микрокомпьютерами и периферийными устройствами. Интерфейс, определенный стандартом Ассоциации электронной промышленности (EIA), подразумевает наличие оборудования двух видов: терминального DTE и связного DCE.
Сигналы интерфейса RS–232C подразделяются на следующие классы:
· Последовательные данные RXD - принимаемые данные (входные последовательные данные);TXD - передаваемые данные (выходные последовательные данные)). Интерфейс RS–232C обеспечивает два независимых последовательных канала данных: первичный (главный) и вторичный (вспомогательный). Оба канала могут работать в дуплексном режиме, т.е. одновременно осуществляют передачу и прием информации.
· Управляющие сигналы квитирования (CTS - сброс передачи. На этой линии периферийное устройство формирует сигнал низкого уровня, когда оно готово воспринимать информацию от процессора; RTS - запрос передачи. На эту линию микропроцессорная система выдает сигнал низкого уровня, когда она намерена передавать данные в периферийное устройство). Сигналы квитирования – средство, с помощью которого обмен сигналами позволяет DTE начать диалог с DCE до фактической передачи или приема данных по последовательной линии связи.
· Сигналы синхронизации (TC, RC). В синхронном режиме (в отличие от более распространенного асинхронного) между устройствами необходимо передавать сигналы синхронизации, которые упрощают синхронизм принимаемого сигнала в целях его декодирования.
На практике вспомогательный канал RS–232C применяется редко, и в асинхронном режиме вместо 25 линий используется 9 линий.
Виды сигналов
В большинстве схем, содержащих интерфейс RS–232C, данные передаются асинхронно, т.е. в виде последовательности пакета данных. Каждый пакет содержит один символ кода ASCII, причем информация в пакете достаточна для его декодирования без отдельного сигнала синхронизации.
Символы кода ASCII представляются семью битами, например буква А имеет код 1000001. Чтобы передать букву А по интерфейсу RS–232C, необходимо ввести дополнительные биты, обозначающие начало и конец пакета. Кроме того, желательно добавить лишний бит для простого контроля ошибок по паритету (четности).
Наиболее широко распространен формат, включающий в себя один стартовый бит, один бит паритета и два стоповых бита. Начало пакета данных всегда отмечает низкий уровень стартового бита. После него следует 7 бит данных символа кода ASCII. Бит четности содержит 1 или 0 так, чтобы общее число единиц в 8–битной группе было нечетным. Последним передаются два стоповых бита, представленных высоким уровнем напряжения. Эквивалентный ТТЛ–сигнал при передаче буквы А показан на рис. 10.
Рис. 10. Представление кода буквы А сигнальными уровнями ТТЛ
Таким образом, полное асинхронно передаваемое слово состоит из 11 бит (фактически данные содержат только 7 бит) и записывается в виде 01000001011.
Используемые в интерфейсе RS–232C уровни сигналов отличаются от уровней сигналов, действующих в компьютере. Логический 0 (SPACE) представляется положительным напряжением в диапазоне от +3 до +25 В, логическая 1 (MARK) – отрицательным напряжением в диапазоне от –3 до –25 В. На рис. 11 показан сигнал в том виде, в каком он существует на линиях TXD и RXD интерфейса RS–232C.
Рис. 11. Вид кода буквы А на сигнальных линиях TXD и RXD
4.4.3. Развитие параллельного и последовательного интерфейсов
Начиная с середины 80-х XX века было очевидно, что последовательный (RS-232С) и параллельный (Centronics) порты не обеспечивают достаточной скорости для подключения периферии, за исключением простейших устройств типа мыши, принтера и прочих не чувствительных к полосе пропускания устройств. Развитие параллельного интерфейса привело к принятию стандарта IEEE-1284 (ECP/EPP).
Усовершенствованный параллельный порт (EPP-Enhanced Parallel Port) разработан в 1991 году. Этот быстродействующий двунаправленный порт имеет пропускную способность в десять раз выше, чем стандартный параллельный порт. Разработан специально для подключения к параллельному порту таких устройств, как сетевые адаптеры, дисководы и накопители на магнитных лентах. Скорость передачи данных 1 – 2 Мбайт/с.
Порт с расширенными возможностями (ECP-Enhanced Capabilities Port) разработан в 1992 году. Порт обладает повышенной производительностью, как и EPP. Основная цель разработки этого порта – поддержка недорогого подключения к компьютеру высокоскоростных принтеров, а не широкого спектра устройств, как в случае EPP порта. Существенным отличием ECP от EPP является использование канала прямого доступа к памяти. Это может вызывать конфликты с другим оборудованием, которое тоже использует DMA.
В современных компьютерах используются микросхемы для параллельных портов, которые могут работать как в режиме EPP, так и ECP.
Дальнейшее развитие параллельного интерфейса привело к появлению спецификации периферийной шины USB (Universal Serial Bus). Она разработана для подключения компьютерной периферии вне корпуса машины по стандарту plug-and-play, в результате отпадает необходимость в установке дополнительных плат в слоты расширения и в переконфигурировании системы. Персональные компьютеры, имеющие шину USB, позволяют подключать периферийные устройства и осуществляют их автоматическое конфигурирование, как только устройство физически будет присоединено к машине. При этом нет необходимости перезагружать или выключать компьютер, а также запускать программы установки и конфигурирования. USB-кабель содержит четыре проводника: два – витая пара, питание 5 В и общий провод. Таким образом, устройства разделяют одну сигнальную линию. Для коррекции одиночных ошибок на линии используется циклический код CRC. Помимо общего канала шириной в 12 Мбит/с в USB имеется так называемый подканал шириной в 1,5 Мбит/с для медленных устройств, таких как клавиатура, мышь, джойстик, перо и т.д. Это позволяет снизить стоимость медленных USB-портов в этих устройствах, поскольку более высокая скорость для них не нужна. Шина USB позволяет одновременно подключать последовательно до 127 устройств, или концентраторов (т.е. устройств, через которые подключается еще несколько). Этими устройствами могут быть: телефоны, модемы, клавиатуры, мыши, устройства чтения CD-ROM, джойстики, ленточные и дисковые накопители, сканеры и принтеры. USB версии 2.0 обладает пропускной способностью до 480 Мбит/с.
Поддержка USB впервые была встроена в операционную систему в конце 1996 года (операционная система Windows 95 OSR 2.1). Включение поддержки USB в состав аппаратного обеспечения и операционной системы при режиме максимального благоприятствования производителям привело к огромному росту количества USB-устройств на рынке.
4.5. ПДП – прямой доступ к памяти
В системах ввода-вывода ЭВМ используется два основных способа организации передачи данных между памятью и периферийными устройствами: программно-управляемая передача и прямой доступ к памяти.
Программно-управляемая передача данных осуществляется при непосредственном участии и под управлением процессора, который при этом выполняет специальную подпрограмму процедуры ввода-вывода. Данные между памятью и периферийным устройством пересылаются через процессор. Операция ввода-вывода инициируется текущей командой программы или запросом прерывания от периферийного устройства. При этом процессор на все время выполнения операции ввода-вывода отвлекается от выполнения основной программы.
Кроме того, при пересылке блока данных процессору приходится для каждой единицы передаваемых данных выполнять несколько команд, чтобы обеспечить буферизацию, преобразование форматов данных, подсчет количества переданных данных, формирование адресов в памяти и т.п. Это сильно снижает скорость передачи данных (не выше 100 Кб/сек), что недопустимо при работе с высокоскоростными ПУ.
Между тем, потенциально возможная скорость обмена данными при вводе-выводе определяется пропускной способностью памяти. Для быстрого ввода-вывода блоков данных используется прямой доступ к памяти (DMA – Direct Memory Access).
Прямой доступ к памяти (ПДП) – система для быстрой передачи данных между памятью и периферийным устройством, минуя процессор.
При этом МП освобождается от участия в обмене данными. ОЗУ связывается с МП и с аппаратурой, руководящей обменом данных, разными шинами. Обмен данными полностью управляется с помощью аппаратных средств. Инициатором обмена данными является ПУ, которое посылает запрос об обмене данными на флажок запроса ПДП. Флажок запроса активизирует блок ПДП. Блок ПДП посылает в память сигнал чтения или записи и определяет ячейку ОЗУ, с которой начнется обмен данными. Блок ПДП посылает эти сигналы, после того, как получит от МП сигнал подтверждения. Регистр данных передает данные из ОЗУ в ПУ и из ПУ в ОЗУ. При ПДП процессор освобождается от управления операциями ввода - вывода и может параллельно выполнять основную программу. ПДП обеспечивает более высокое быстродействие и более высокую производительность работы ЭВМ.
Прямым доступом к памяти управляет контроллер ПДП, который выполняет следующие функции:
1. Управление инициируемой процессором или ПУ передачей данных между ОП и ПУ.
2. Задание размера блока данных, который подлежит передаче, и области памяти, используемой при передаче.
3. Формирование адресов ячеек ОП, участвующих в передаче.
4. Подсчет числа переданных единиц данных (байт или слов) и определение момента завершения операции ввода-вывода.
Указанные функции реализуются контроллером ПДП с помощью одного или нескольких буферных регистров, регистра – счетчика текущего адреса данных и регистра – счетчика подлежащих передаче данных.
При инициировании операции ввода-вывода в счетчик подлежащих передаче данных заносится размер передаваемого блока (число байт или слов), а в счетчик текущего адреса - начальный адрес области памяти, используемой при передаче. При передаче каждого байта содержимое счетчика адреса увеличивается на 1, при этом формируется адрес очередной ячейки памяти, участвующей в передаче. Одновременно уменьшается на 1 содержимое счетчика подлежащих передаче данных; обнуление этого счетчика указывает на завершение передачи.
В компьютерах, совместимых с IBM PC и PC/XT, для организации прямого доступа в память используется одна 4-канальная микросхема 8237, канал 0 которой предназначен для регенерации динамической памяти. Каналы 2 и 3 предназначены для управления высокоскоростной передачей данных между дисководами гибких дисков, винчестером и оперативной памятью соответственно. Только канал 1 доступен для дополнительного оборудования.
IBM РС/АТ – совместимые компьютеры имеют уже 7 каналов прямого доступа к памяти. В первых компьютерах это достигалось каскадным включением двух микросхем 8237, как и в случае контроллеров прерываний. Поскольку прямой обмен данными между оперативной памятью и периферийными устройствами в IBM PC-совместимых компьютерах имеет некоторые существенные ограничения (в том числе и по скорости), то в PC/AT задействован только канал 2 – для обмена с приводом флоппи-диска. Заметим, что для первых четырех каналов ПДП (0–3) передача данных осуществляется побайтно, а для каналов 5–7 – 16-разрядными словами.
Контроллер ПДП обычно имеет более высокий приоритет в занятии цикла обращения к памяти по сравнению с процессором. Управление памятью переходит к контроллеру ПДП, как только завершается цикл обращения к памяти для текущей команды процессора.
Прямой доступ к памяти обеспечивает высокую скорость обмена данными за счет того, что управление обменом производится не программными, а аппаратными средствами.
5. организация прерываний
5.1 Механизм прерываний
5.1.1. Назначение системы прерываний
Во время выполнения программы внутри ЭВМ и во внешней среде могут возникать события, требующие немедленной реакции на них со стороны машины. Реакция состоит в том, что машина прерывает обработку текущей программы и переходит к выполнению некоторой другой программы, специально предназначенной для данного события. По завершении этой программы ЭВМ возвращается к выполнению прерванной программы. Такой процесс называется прерыванием.
Прерывание – реакция на входной сигнал запроса прерывания или команду прерывания.
Принципиально важным является то, что моменты возникновения событий, требующих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании.
Прерывание работы МП по запросу внешних устройств устраняет необходимость выполнения МП неэффективных операций по проверке готовности внешних устройств к обмену данными и снижает затраты времени на ожидание готовности периферийного устройства к обмену. Прерывания необходимы при обмене данными с большим числом асинхронно работающих внешних устройств.
Каждое событие, требующее прерывания, сопровождается сигналом, оповещающим об этом событии ЭВМ, который называется запросом прерывания. Программу, затребованную запросом прерывания, называют прерывающей программой, а программу, выполнявшуюся до появления запроса, - прерываемой программой.
В сущности, запросы прерывания поступают от нескольких параллельно развивающихся во времени процессов, требующих в произвольные моменты времени обслуживания со стороны процессора. К этим процессам относится выполнение основной программы, контроль правильности работы ЭВМ, операции ввода-вывода и т.п.
Система прерываний позволяет значительно эффективнее использовать процессор при наличии нескольких протекающих параллельно во времени процессов.
Для эффективной реализации системы прерываний ЭВМ снабжается соответствующими аппаратными и программными средствами, совокупность которых называется контроллером прерываний.
5.1.2. Порядок обработки прерывания
Основными функциями системы прерываний являются:
· запоминание состояния прерываемой программы;
· осуществление перехода к прерывающей программе;
· восстановление состояния прерванной программы;
· возврат к прерванной программе.
При наличии нескольких источников запросов прерываний должен быть установлен определенный порядок в обслуживании поступающих запросов, т.е. должны быть установлены приоритетные соотношения между запросами.
Приоритетные соотношения определяют, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и устанавливают, имеет или не имеет право данный запрос прерывать ту или иную программу.
Прерывающая программа, как правило, состоит из трех частей:
1. Подготовительной, обеспечивающей сохранение состояния прерванной программы.
2. Основной, выполняющей затребованную запросом работу.
3. Завершающей, обеспечивающей продолжение работы прерванной программы.
5.1.3. Характеристики системы прерывания
Характеристики системы прерывания следующие:
1. Общее количество типов запросов прерываний (число входов в систему прерывания).
2. Время реакции - время между появлением запроса прерывания и началом выполнения прерывающей программы. Время реакции на запрос прерывания зависит от того, сколько программ со старшим приоритетом ждет обслуживания. Поэтому в документации обычно указывают время реакции на запрос с наивысшим приоритетом.
3. Затраты времени на переключение программ, которые равны суммарному расходу времени на запоминание и восстановление состояния программы.
4. Глубина прерывания - это максимальное число программ, которые могут прерывать друг друга. Если после перехода к прерывающей программе и вплоть до ее окончания прием других запросов запрещается, то говорят, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Системы с большим значением глубины прерывания обеспечивают более быструю реакцию на срочные запросы.
Насыщение системы прерываний
Если запрос на прерывание окажется необслуженным к моменту прихода нового запроса от того же источника, то возникает так называемое насыщение системы прерываний. В этом случае предыдущий запрос прерывания от данного источника будет машиной утрачен, что недопустимо. Быстродействие ЭВМ, характеристики системы прерываний, число источников прерывания и частота возникновения запросов должны быть согласованы таким образом, чтобы насыщение было невозможным.
Допустимые моменты прерывания программ
Обычно прерывание допускается после завершения выполнения текущей команды. В этом случае время реакции определяется в основном временем выполнения одной команды.
Это время реакции может оказаться недопустимо большим для ЭВМ, работающих в реальном масштабе времени. В таких машинах часто допускается прерывание после любого такта выполнения команды. Однако при этом возрастает количество информации, подлежащей запоминанию и восстановлению при переключении программ, так как в этом случае необходимо сохранять состояния счетчика тактов, регистра кода операции и некоторые другие в момент прерывания.
Имеются ситуации, в которых желательно немедленное прерывание. Например, если аппаратура контроля обнаружила ошибку, то целесообразно сразу прервать операцию, пока ошибка не оказала влияние на следующие такты работы машины.
Число классов (уровней) прерываний
В ЭВМ число различных запросов прерывания может достигать нескольких сотен. В таких случаях запросы обычно разделяют на отдельные классы или уровни.
Совокупность запросов, инициирующих одну и ту же прерывающую программу, образует класс или уровень прерывания. В этом случае запросы одного класса прерывания формируются элементами ИЛИ, еще одна схема ИЛИ формирует общий сигнал прерывания. Объединение запросов в классы прерывания позволяет уменьшить объем аппаратуры, но связано с замедлением работы системы прерывания.
5.1.4. Приоритетное обслуживание запросов прерывания
Вектором прерывания называют вектор начального состояния прерывающей программы. Вектор прерывания содержит всю необходимую информацию для перехода к прерывающей программе, в том числе ее начальный адрес. Каждому уровню прерывания, а в микроЭВМ - каждому запросу, соответствует свой вектор прерывания. Векторы прерывания обычно находятся в специально выделенных фиксированных ячейках памяти.
Процедура организации перехода к прерывающей программе выделяет из всех выставленных запросов тот, который имеет наибольший приоритет, выполняет передачу текущего состояния прерываемой программы из регистров процессора в стек, загружает в регистры процессора вектор прерывания и передает управление прерывающей программе.
В простейшем случае вектор прерывания состоит лишь из начального адреса прерывающей программы.
Различают абсолютный и относительный приоритеты. Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы. Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.
Если наиболее приоритетный из выставленных запросов прерывания не превосходит по уровню приоритета выполняемую процессором программу, то запрос прерывания игнорируется или его обслуживание откладывается до завершения выполнения текущей программы.
Простейший способ установления приоритетных соотношений между запросами состоит в том, что приоритет определяется порядком присоединения линий сигналов запросов к входам системы прерывания. При появлении нескольких запросов прерывания первым воспринимается запрос, поступивший на вход с меньшим номером. В этом случае приоритет является жестко фиксированным.
Процедура прерывания с опросом источников прерывания
В системе с фиксированными приоритетами каждому источнику запросов соответствует отдельный разряд в регистре запросов прерывания.
При наличии запроса или нескольких запросов формируется общий сигнал прерывания, инициирующий выполняемую специальной программой или аппаратурой процедуру опроса регистра прерывания или просто линий сигналов прерывания для определения источника, выставившего запрос с наибольшим приоритетом.
Программный опрос источников прерываний занимает сравнительно много времени. Для ускорения опроса его выполняют аппаратными средствами. Время реакции при аппаратном циклическом опросе в некоторых случаях может оказаться недопустимо большим, поэтому может потребоваться схема, позволяющая определить номер запроса за один такт.
Векторное прерывание
Процедура опроса источников прерывания, даже если она выполняется аппаратными средствами, требует больших затрат времени.
Более гибким и динамичным является векторное прерывание, при котором исключается опрос источников прерывания.
Прерывание называется векторным, если источник прерывания, выставляя запрос, посылает в процессор код адреса в памяти своего вектора прерывания.
Прерывание на основе опроса источников прерываний всегда сопровождается переходом по одному и тому же адресу и инициирует одну и ту же прерывающую подпрограмму, которая после идентификации источника запроса и формирования адреса соответствующей программы прерывания передает ей управление. При векторном прерывании каждому запросу прерывания соответствует переход к программе, расположенной по адресу, задаваемому вектором прерывания.
5.1.5. Программное управление приоритетом
Относительная степень важности программ в ходе вычислительного процесса может меняться, требуя установления новых приоритетных отношений. Необходимо иметь возможность изменять по мере надобности приоритетные соотношения программным путем.
В ЭВМ широко применяются два способа реализации программно управляемого приоритета, в которых используются порог прерывания или маски прерывания.
Метод порога прерывания
Этот метод позволяет в ходе вычислительного процесса программным путем изменять уровень приоритета процессора относительно приоритетов источников прерываний.
Порог прерывания - это минимальный уровень приоритета запросов, которым разрешается прерывать программу, выполняемую процессором.
Порог прерывания задается командой программы, устанавливающей в регистре порога прерывания код порога прерывания. Специальная схема выделяет наиболее приоритетный запрос прерывания, сравнивает его приоритет с порогом прерывания и, если он оказывается выше порога, вырабатывает общий сигнал прерывания, запускающий процедуру обработки прерывания.
Метод маски прерывания
Чтобы сделать систему нечувствительной к прерываниям, применяют маскирование прерываний. Программное управление приоритетом на основе маски прерывания в современных ЭВМ общего назначения получило наибольшее распространение.
Маска прерывания - двоичный код, разряды которого поставлены в соответствие отдельным запросам или классам прерываний. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса. Таким образом можно изменять приоритеты запросов без переключения линий, по которым они поступают. Каждая прерывающая программа может устанавливать свою маску.
Замаскированные запросы можно либо игнорировать, либо запоминать, чтобы можно было осуществить затребованные действия, когда запрет будет снят.
5.2. Организация системы прерываний микропроцессора х86
Микропроцессор х86 имеет простую, но достаточно универсальную систему прерываний. Каждому прерыванию поставлен в соответствие код типа. Допускается обработка до 256 типов прерываний. Прерывания могут инициироваться внешними устройствами и командами программных прерываний. В некоторых случаях прерывания генерирует сам микропроцессор (рис. 12).
Рис. 12. Возможные источники прерываний
5.2.1. Аппаратные прерывания. Контроллер прерываний
Аппаратное прерывание – прерывание, выполняемое в результате запроса, поступающего от периферийного оборудования.
Контроллер прерываний – устройство, которое обрабатывает сигналы аппаратных прерываний.
В отличие от программных прерываний аппаратные всегда возникают асинхронно от выполняющейся программы. Запросы на прерывания передаются по специальным сигнальным линиям, которые называются IRQ-линиями (Interrupt Request – запрос на прерывание).
Программируемый контроллер прерываний 8259, используемый в машинах IBM AT, предназначен для обработки до 8 приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом общее число уровней прерывания будет достигать 64.
В машинах IBM AT имеется 15 линий сигналов прерывания, для обслуживания которых используются ведущая и одна ведомая микросхемы. Для каскадирования используется линия IRQ2 ведущей микросхемы. Ведомой микросхеме программным методом присваивается код, равный номеру входа IRQ ведущей микросхемы, с которым соединен выход запроса прерывания INT ведомой микросхемы. Внутри микросхемы приоритет зависит от номера IRQ и задается программно.
Для идентификации прерываний различных устройств им присваивают номера от 0 до 15. По этим номерам процессор узнает, какое устройство выдает запрос на прерывание. Естественно, что при этом все будет функционировать безупречно, если с каждым конкретным устройством будет связано определенное прерывание. Действует стандартное правило: каждому компоненту ПК-системы должно быть назначено свое собственное прерывание.
Исключением являются системы, которые могут работать по методу разделения прерываний. К ним относятся шина EISA, a также системы, соответствующие спецификации Plug and Play фирмы Intel. Разумеется, трудно найти программное обеспечение, которое могло бы управлять разделением прерываний, поэтому стандартное правило «каждому устройству – свое собственное прерывание» должно выполняться (рис. 13).
Приоритеты прерываний распределены в следующем порядке (по убыванию приоритета):
IRQ0 - прерывание таймера;
IRQ1 - прерывание от клавиатуры;
IRQ8 - прерывание от часов реального времени;
IRQ9 - прерывание от контроллера графической платы;
IRQ10 - зарезервированная линия;
IRQ11 - зарезервированная линия;
IRQ12 - зарезервированная линия;
IRQ13 - прерывание от математического сопроцессора;
IRQ14 - прерывание от контроллера жестких дисков;
IRQ15 - прерывание от IDE-контроллера (CD-ROM);
IRQ3 - прерывание от последовательного порта COM2;
IRQ4 - прерывание от последовательного порта COM1;
IRQ5 - зарезервированная линия;
IRQ6 - прерывание от контроллера гибких дисков;
IRQ7 - прерывание от параллельного порта (от принтера).
Рис. 13. Распределение линий сигналов прерывания в машинах IBM AT
Часть линий прерываний жестко закреплена за устройствами определенных типов, а другая часть находится в полном распоряжении пользователя.
Даже стандартная ПК-система с самым распространенным набором компонентов предоставляет весьма ограниченный выбор свободных прерываний. С учетом звуковой, сетевой плат и дополнительного хост-адаптера SCSI список свободных прерываний исчерпывается.
Возможность свободного использования зарезервированных линий создает определенные проблемы, называемые конфликтами прерываний. Такой конфликт может возникнуть в результате ошибки пользователя в процессе установки контроллера какого-либо нового устройства: может возникнуть ситуация, когда два контроллера посылают запросы прерываний на одну и ту же линию, и процессор не знает, какое из устройств послало сигнал. Для предотвращения конфликта перед установкой нового устройства необходимо использовать специальную программу, которая определяет, какие из линий прерываний в системе свободны, а затем настроить новый контроллер на одну из свободных линий путем соответствующей установки переключателей на контроллере.
5.2.2. Особенности обработки аппаратных прерываний
В микропроцессоре имеется два входа прерываний - маскируемого прерывания INT и немаскируемого прерывания NMI.
Обработка маскируемых прерываний
На вход INT подается сигнал от программируемого контроллера прерываний, который обрабатывает сигналы запросов прерываний от периферийных устройств. Для программы контроллер прерываний выглядит как порт ввода-вывода, в котором фиксируется код типа прерывания. Его основная функция заключается в восприятии сигналов от периферийных устройств, определении запроса с максимальным приоритетом и генерировании сигнала INT, если запрос имеет больший приоритет, чем выполняемая микропроцессором программа.
Если установлен сигнал на линии INT и установлен в 1 флажок разрешения прерывания IF в регистре флагов, то после завершения выполнения текущей команды происходит прерывание и процессор выполняет следующие действия:
1. Выдает контроллеру прерывания подтверждение прерывания.
2. Считывает из контроллера прерывания код типа прерывания.
3. Заносит в стек содержимое регистра флагов.
4. Заносит в стек содержимое регистров IP (указатель команд) и CS (регистр, хранящий базовый адрес).
5. Вызывает и выполняет процедуру прерывания.
6. Извлекает из стека содержимое CS и IP.
7. Извлекает из стека содержимое регистра флагов.
8. Возвращается к выполнению следующей команды прерванной программы.
Обработка немаскируемых прерываний.
Линия немаскируемого прерывания NMI используется для сигнализации о катастрофических событиях в системе.
Немаскируемые прерывания реализуются аппаратно и поступают в МП по отдельной шине управления.
Немаскируемые запросы обладают наивысшим приоритетом. К ним относятся запросы от схем питания и контроля правильности передачи данных. Снижение уровня питания представляет опасность потери информации. Схемы контроля питания подают запрос прерывания и совершают переход к подпрограмме аварийной перезаписи в ОЗУ с батарейным питанием или во внешнее ЗУ. В блоке питания предусмотрены емкостные фильтры, которые поддерживают уровень питания на время, достаточное для перезаписи.
Немаскируемые прерывания имеют фиксированный код 2. Немаскируемое прерывание выполняется быстрее маскируемого, так как не требует подтверждения и считывания типа.
Если установлен сигнал на линии NMI, то после завершения выполнения текущей команды происходит прерывание и процессор выполняет следующие действия:
1. Заносит в стек содержимое регистра флагов.
2. Заносит в стек содержимое регистра IP и CS, запоминая тем самым точку возврата из процедуры прерывания.
3. Вызывает и выполняет процедуру прерывания.
4. Извлекает из стека содержимое CS и IP.
5. Извлекает из стека содержимое регистра флагов.
6. Возвращается к выполнению следующей команды.
5.2.3. Внутренние прерывания
В процессоре 8086 предусмотрено несколько внутренних прерываний, генерируемых при выполнении программы. Команда INT n вызывает прерывание сразу после своего завершения. Тип прерывания n, закодированный программистом в команде, определяет вызываемую процедуру прерывания. Следовательно, эту команду можно использовать для отладки процедур прерываний, обслуживающих периферийные устройства.
Команда INTO генерирует прерывание типа 4 после своего завершения, если установлен флаг переполнения OF в регистре флагов.
Процессор самостоятельно генерирует прерывание типа 0 сразу после выполнения команд деления DIV и IDIV, если имело место деление на 0.
Если установлен флаг пошаговой работы TF в регистре флагов, процессор автоматически генерирует прерывание типа 1 после выполнения каждой команды. Пошаговый режим предназначен для отладки программ.
Внутренние прерывания характеризуются следующими свойствами:
1. Тип прерывания либо предопределен, либо содержится в коде команды.
2. Подтверждение прерывания не выдается.
3. Внутренние прерывания нельзя запретить, кроме прерываний пошаговой работы.
4. Любое внутреннее прерывание (за исключением прерывания пошаговой работы) имеет более высокий приоритет, чем внешние прерывания. Если запрос NMI или INT появляется при выполнении команды, которая сама генерирует внутреннее прерывание (например, ошибка деления), оно обрабатывается первым.
По командам внутреннего прерывания процессор выполняет следующие действия:
1. Заносит в стек содержимое регистра флагов.
2. Заносит в стек содержимое регистра IP и CS.
3. Вызывает и выполняет процедуру прерывания.
4. Извлекает из стека содержимое CS и IP.
5. Извлекает из стека содержимое регистра флагов.
6. Возвращается к выполнению следующей команды.
Приоритеты прерываний в порядке их убывания:
1. Прерывание из-за ошибки деления.
2. Программное прерывание, инициируемое командой INT.
3. Команда прерывания при переполнении.
4. Немаскируемое прерывание NMI.
5. Маскируемое прерывание INT.
6. Прерывание пошаговой работы.
5.2.4. Таблица векторов прерываний
Таблица векторов прерываний – таблица адресов обработчиков прерываний.
Таблица указателей векторов прерываний осуществляет связь между кодом типа прерывания и процедурой, которая обслуживает прерывание данного типа. Таблица занимает 1 Кбайт памяти с диапазоном адресов 0 - 3FFh и может содержать до 256 элементов.
Каждый i-й элемент таблицы представляет собой полный начальный логический адрес процедуры, которая обслуживает прерывание типа i. Слово с меньшим адресом содержит смещение, а слово с большим адресом - базовый адрес сегмента. Так как каждый элемент таблицы состоит из 4 байт, процессор вычисляет адрес нужного элемента таблицы путем умножения кода типа на 4.
5.2.5. Процедуры прерываний
Когда вызывается процедура прерывания, содержимое регистров флагов, CS и IP помещено в стек, а флаги IF и TF сброшены. Процедура может разрешить внешние прерывания командой STI, допуская прерывание самой себя запросом на входе INT. Кроме того, она может быть всегда прервана запросом на входе немаскируемых прерываний NMI. Внутренние прерывания, возникающие при выполнении процедуры, будут также прерывать ее. В каждой процедуре необходимо тщательно следить за тем, чтобы в ней не возникло прерывание того типа, которое она обслуживает. Необходимо также задавать объем стека, рассчитанный на максимальную глубину вложения прерываний.
Каждая процедура прерывания должна запоминать в стеке содержимое всех регистров, которые она использует, до их модификации, а перед завершением восстанавливать содержимое этих регистров.
Целесообразно разрешать восприятие прерываний по входу INT для всех частей процедуры, за исключением критических секций, которые нельзя прерывать без риска получения ошибочных результатов. Если прерывания запрещены слишком долго, возникает потенциальная опасность потери запросов прерываний по входу INT.
Процедура прерывания должна заканчиваться командой возврата из прерывания IRET. Перед ее выполнением предполагается, что стек находится в том состоянии, в каком он был сразу после вызова процедуры. Команда IRET извлекает три верхних слова из стека в регистры IP, CS и флагов.
Фактические действия процедуры зависят от ее назначения. Если процедура обслуживает периферийное устройство, она должна передать ему приказ о снятии запроса прерывания. Затем она может получить от устройства информацию о его состоянии, определить причину прерывания и предпринять соответствующие действия. Если прерывание пришло от клавиатуры в связи с тем, что была нажата клавиша, то операционная система, считав из порта клавиатуры код этой клавиши, запоминает его в памяти.
Программные прерывания можно использовать для вызова обслуживающих программ операционной системы (вызов супервизора).
Дата добавления: 2015-07-08; просмотров: 135 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Адреса и прерывания последовательных портов | | | ГЛОССАРИЙ |