Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Организация подсистем прерываний в МП системах на микроконтроллерах платформы х86, Pentium.
При работе микропроцессорной системы часто возникают ситуации, когда требуется прервать выполнение текущей программы и перейти к подпрограмме, обеспечивающей необходимую реакцию системы на создавшиеся обстоятельства. Такие ситуации называются прерываниями или исключениями в зависимости от причин, вызывающих их возникновение. Специальные виды таких прерываний реализуются при отладке программ, для чего в состав процессора введены необходимые функциональные блоки, работа которых контролируется с помощью регистров отладки DR7-0. Для современных процессоров и систем, реализуемых на их основе, применяется тестирование и самотестирование. Процессоры семейства Р6 содержат ряд средств, которые обеспечивают выполнение данных процедур. В МПС на микропроцессорах платформы х86 стартовый адрес процедуры обслуживания прерываний определяется обращением к таблице прерываний через однобайтный вектор, формируемый аппаратными средствами подсистемы прерываний В общем случае, все эти ситуации разделяются по принципу их обнаружения, источника возникновения и реакции на них на следующие три категории: · прерывания и особые ситуации — обнаруживаются и обрабатываются процессором в самые различные моменты времени и могут происходить как из внешних так и из внутренних источников, все другие типы экстраординарных ситуаций занимают более низкий уровень иерархии и могут обрабатываться, только если сперва заявят о своем существовании через прерывание или особую ситуацию; · исключительные ситуации FPU — могут возникать только при выполнении команд сопроцессора и полностью определяются его текущим состоянием, генерация исключительной ситуации в свою очередь может вызывать генерацию прерывания или особой ситуации, обработчик которой далее сам разбирается с тем, какое исключение произошло и какие действия в связи с этим следует предпринять; · исключительные ситуации SIMD — могут возникать только при выполнении SIMD-команд и полностью определяются состоянием SIMD-регистров процессора, сообщают о своем возникновении также, как и исключения FPU через специальное прерывание, т.е. обработчик прерывания или особой ситуации должен сам программным путем определить причину его поступления. Прерывания и особые ситуации — это специальные средства, обеспечивающие быструю реакцию процессора на внешние воздействия и прочие неожиданные ситуации. При поступлении прерывания или генерации особой ситуации выполнение программы прерывается, а управление передается специальной процедуре — обработчику прерывания или особой ситуации. В большинстве случаев, когда обработка прерывания или особой ситуации заканчивается, управление может быть возвращено в прерванную программу, которая продолжит свое выполнение с той самой точки, в которой она была остановлена. Процессор производит автоматическое сохранение/восстановление состояния для обеспечения этой возможности. Существует два источника поступления прерываний и три типа особых ситуаций. Прерывания: внешние маскируемые прерывания — принимаются на выводе INTR# CPU, если флаг EFLAGS.IF установлен, маскируемые прерывания не проходят; внешние немаскируемые прерывания — принимаются на выводе NMI# CPU, механизм запрета немаскируемых прерываний отсутствует. Особые ситуации: генерируемые процессором особые ситуации — возникают в процессе и по результатам выполнения команд, разделяются на ошибки, ловушки и сбои; программные прерывания — могут быть вызваны командами INTO, INT 3, INT n, BOUND; особые ситуации генерируемые средствами самопроверки процессора.
|