Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
16.04.2013
Размер:
142.03 Кб
Скачать

Виды исключительных ситуаций.

RESET

У МП МС68000 имеется вывод RESET предназначенный для запуска или перезапуска процессора и всей системы. При активном сигнале на нем прерывается работа текущей программы и запускается процесс обработки ИС (вектора номер 0 и 1, как уже отмечалось выше ИС "reset" требуется 4 байта для запуска подпрограммы обработки).

Ðèñ.4 ÈÑ Reset.

Как показано на рисунке 4, существует 3 основных отличия этой ИС от любой другой. Во-первых, не сохраняются текущие значения РС и SR. Во-вторых, обновляется не только РС, но и SSP. И, наконец, запрещаются все прерывания, для чего во все разряды маски прерываний (I2,I1,I0) записываются логические "1".

Т.к. "reset" является самой первой операцией процессора, то ячейки памяти адресами 000000-000007, содержащие адрес перехода по "reset", должны располагаться в ПЗУ

Не следует путать ИС "reset" с выполнением процессором команды RESET, которая входит в набор команд и только устанавливает выход RESET в низкий уровень, для инициализации компонентов системы, не воздействуя при этом на сам процессор. RESET является привилегированной командой, т.е. может выполнятся только на уровне супервизора.

Ошибка адреса.

Как уже отмечалось выше, формирование процессором нечетного адреса при операции со словом является ошибочным. При попытке обращения к нему для выборки команды, операнда слова или длинного слова, процессор вырабатывает ИС "ошибка адреса" с вектором 3. В отличии от обычной ИС в этом случае сохраняется адрес не следующей команды,а адрес текущей команды плюс десятичное число от 2 до 10 в зависимости от того в какой момент времени произошла ИС, т.е. значение РС, сохраненое в стеке, точно не определено. Кроме того, для упрощения обработки ошибки вместе с регистрами SR и РС в стеке супервизора сохраняется дополнительная информация (рис.5), включающая в себя командное слово операции, вызвавшей ИС, ошибочный адрес и слово состояния шины.

Рис.5 Информация, сохраняемая в стеке при возникновении ИС "ошибка адреса" и "ошибка шины".

Слово состояния шины предоставляет следующую информацию:

·состояние шины-чтение (R/W=1) или запись (R/W=0);

·флаг I/N, показывающий момент возникновения ошибки. Если ошибка обнаружена при выполнении команд МП МС68000, а также при обработке ИС TRAP, TRAPV, CHK или ошибки "деление на ноль", I/N=0. В любом другом случае, например, в промежуток времени между поступлением ИС (кроме перечисленных выше) и началом выполнения подпрограммы обработки этой ИС, I/N=1;

·функциональный код.

Оставшиеся 11 бит являются резервными.

В приведенном ниже примере покажем возникновение ИС "ошибка адреса" и подробно рассмотрим дополнительную информацию, сохраняемую в стеке:

RG $2000

OVE.L #$13100, D1

OVEA.L #$13000, A1

AGAIN OVE.W #0, (A1)

DDA.L #1, A1

MPA.L D1, A1

LE AGAIN

Во время выполнения этой программы, при втором прохождении цикла, содержимое регистра А1 будет равно $13001. Таким образом, при попытке выполнить команду MOVE.W #0, (A1) возникает ошибка адреса, поскольку обращение к слову по нечетному адресу недопустимо, после чего начинает работать механизм обработки ИС "ошибка адреса", сохраняющая в стеке следующие семь слов:

õõ 01 00 01 30 01 32 ÂÑ 00 09 00 00 20 0À,

ãäå

хх: неопределенные биты слова состояния шины;

01: показывает, что ошибка произошла при попытке записи (R/W=0) во время выполнения обычной команды (I/N=1). Адресация к данным в пользовательском режиме;

00013001: адрес, по которому производилось ошибочное обращение;

32ВС: командное слово MOVE.W #0, (A1), при выполнении которого возникла ошибка;

0009: регистр SR, показывающий, что процессор находился в пользовательском режиме, и установлены флаги N и С;

0000200А: адрес ошибочной команды.

Ошибка шины.

При цикле шины появление сигнала BERR (Bus error), установленного внешней логикой, вызывает генерацию ИС "ошибка шины" с вектором номер 2. Немедленно прекращается выполнение цикла и запускается процесс обработки ИС. Дополнительная информация, сохраняемая в стеке и механизм обработки, такие же как и в случае ИС "ошибки адреса".

Неопознанные команды и команды эмулятора.

Если первое слово операции не может быть опознано процессором как код команды, то процессор генерирует ИС с вектором номер 4.

Пример:

ADDQ.L #1, D1

DC.W $29C1, $0012, $3436

После выполнения команды ADDQ.L #1, D1 процессор считывает слово $29С1 и пытается интерпретировать его как командное. Т.к. оно не соответствует коду ни одной из команд, то процессор вырабатывает ИС. Эта ИС также может быть использована для распознавания более поздних модификаций процессора МС68000.

Если старшие 4 бита кода операции (op code) будут равны 1010 или 1111, генерируется ИС с вектором 10 или 11 соответственно. Команды с такими кодами можно назвать командами эмулятора. Обрабатывающие эти ИС подпрограммы могут промоделировать различные устройства, отсутствующие в данной системе, или команды более старших процессоров семейства Motorola. Команды эмулятора можно использовать, например, для вычислений функций с плавающей точкой (моделирование математического сопроцессора). Оставшиеся 12 бит командного слова будут использованы для определения выполняемой функции и операндов.

Нарушение привилегированности команд.

Любая команда изменяющая системный байт регистра SR. а также команды перемещения USP являются привилегированными. Список таких команд приведен ниже:

AND #I, SR

EOR #I, SR

OR #I,SR

MOVE EA, SR

MOVE An, USP

MOVEA USP, An

RESET

RTE

STOP

При выполнении привилегированных команд в первую очередь проверяется S-бит. Если процессор находится в пользовательском режиме, то эта команда не выполняется и вырабатывается внутренняя ИС с номером 8. В отличии от стандартной схемы обработки, в этом случае сохраняется адрес привилегированной команды. а не последующей.

Трассировка.

Если Т бит системного байта регистра SR установлен в "1" МС68000 переходит в режим пошагового выполнения команд. После каждой команды процессор автоматически вырабатывает ИС с вектором номер 9. Согласно стандартной последовательности обработки ИС, после сохранения программного счетчика РС, процессор устанавливает бит S и сбрасывает бит T, таким образом программа обработки ИС выполняется с обычной скоростью. Режим трассировки используется при отладке программ, а также в обучающих системах.

Деление на ноль.

Если происходит деление числа на ноль, то результат, естественно, не имеет смысла. Для этих случаев разработчики МС68000 предусмотрели специальную ИС "деление на ноль" с вектором 5.

Программные прерывания.

В наборе команд МП МС68000 присутствуют специальные команды инициализации прерываний: TRAP (запуск прерывания с вектором, заданным в виде операнда), TRAPV (запуск прерывания по флагу переполнения) и CHK (проверка регистра по границам).

TRAP-представляет собой 16 команд TRAP #I, где I=0, 1, ..., 15. Эта команда предназначена для запуска одного из 16 ИС с векторами 32-47. Команда TRAP очень часто используется для унификации программ написанных для различных систем построенных на процессоре МС68000. Например, ИС с вектором 32 выводит байт в паралельнйй порт, тогда программа написанная в любой другой микропроцессорной системе может легко вывести байт в данной системе командой TRAP #0.

TRAPV-запускает ИС с вектором 7 если флаг V=1.

CHK-команда записывается в мнемонической форме следующим образом: CHK EA, Dn. Эта команда генерирует ИС с вектором 6 в случае если младшее слово регистра Dn меньше нуля или больше определенной величены, заданной словом находящимся в ЕА.

Прерывания от внешних устройств.

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

Рис.6 Последовательность установки и обработки внешнего прерывания.

Запрос прерывания инициализируется внешним устройством установкой кода приоритета на входах IPL2-IPL0 процессора. Нулевой код означает отсутствие запроса. Процессор ожидает окончания выполнения текущей команды, а затем проверяет код приоритета. Если он равен 7 или выше установленного маской I2,I!,I0, МС68000 В противном случае запрос игнорируется и процессор продолжает выполнение текущей программы. Для опознавания устройства, которому выдается подтверждение, процессор записывает в адреса А3-А1 приоритет выполняемого прерывания.

Т.к. прерывание с уровнем 7 всегда выполняется вне зависимости от маски I2,I1,I0, то это прерывание иногда называют немаскируемым прерыванием.

Внешнее устройство может предоставить как автоматический так и неавтоматический вектор. При автоматическом векторе прерывания внешнее устройство активизирует вывод VPA (valid peripferal address). В этом случае номер вектора автоматически генерируется процессором исходя из выставленного внешним устройством кода приоритета по следующей формуле:

номер вектора = 24+приоритет прерывания,

таким образом номера векторов с 35 по 31 относятся к автоматическим.

В случае неавтоматического вектора внешнее устройство само выставляет 8 битный номер вектора прерывания (на линии D0-D7) вместе с сигналом DTACK (data transfer acknowledge). Внешнее устройство может использовать номера векторов с 64 по 255.

При обработке как автоматического, так и неавтоматического внешнего прерывания существует одно отклонение от основной схемы обработки ИС - после сохранения РС и SR в новый регистр SR записывается маска I2,I1,I0, равная приоритету обрабатываемого прерывания. Это необходимо для того, чтобы никакое прерывание с приоритетом ниже или равным текущему не смогло прервать его обработку.

При работе с прерываниями могут возникнуть две ИС: несформированный вектор прерывания и ложное прерывание.

Несформированный вектор прерывания.

Как уже выше говорилось, любое внешнее устройство может выставить запрос на прерывание с одним из определенных пользователем векторов (64-255). Если программист не сформировал вектор до поступления прерывания, то автоматически генерируется ИС с вектором 15. Таким образом, внешнему устройству с несформированным вектором автоматическим присваивается вектор 15.

Ложное прерывание.

После поступления запроса на прерывание процессор выставляет код подтверждения прерывания на функциональные выводы FC2-FC0 (111) для запроса номера вектора прерывания. Если внешнее устройство не ответило на подтверждение (внешняя логика выставила сигнал BERR после того, как в течении определенного промежутка времени после подтверждения не активизировались сигналы DTACK или VPA), то генерируется ИС с вектором 24.

Соседние файлы в папке Motorola - Описание лаб