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

Лабораторная работа N6. Обработка исключительных ситуаций. 16

Микропроцессор мс68000

Лабораторный практикум

Лабораторная работа N6.

Обработка исключительных ситуаций.

Теоретическая часть

Иногда процессор временно отклоняется от выполнения текущей программы, для того чтобы немедленно откликнутся на некоторую появившуюся, чаще нештатную, ситуацию. Этот процесс называется обработкой исключительной ситуации (ИС)1.

Существует достаточно много источников ИС, но все они могут быть поделены на две большие группы: внешние и внутренние. Классификация ИС показана на рис.1.

Рис.1 Классификация ИС.

Внутренние ИС (генерируемые самим процессором) возникают при выполнении ошибочной команды, специальных команд или при трассировке. Внешние ИС более разнообразны, т.к. могут поступать от различных внешних источников. Есть стандартные внешние ИС: RESET, ошибка шины.

Обработка исключительных ситуаций.

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

вектор = номер вектора ИС õ4.

Вектор ИС содержит адрес начала подпрограммы обработки данной ИС.

Полный перечень векторов используемых в МС68000 дан в таблице 1.

Таблица 1.

номер вектора

вектор (HEX)

область памяти

òèï ÈÑ

000

000

SP

Reset-инициализация указателя стека

001

004

SP

Reset-инициализация указателя стека

002

008

SD

ошибка шины

003

00C

SD

ошибка адреса

004

010

SD

неопознанная команда

005

014

SD

деление на ноль

006

018

SD

CHK

007

01C

SD

TRAPV

008

020

SD

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

009

024

SD

трассировка

010

028

SD

эмулятор

011

02C

SD

эмулятор

012

030

SD

резерв

013

034

SD

резерв

014

038

SD

резерв

015

03C

SD

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

016

040

SD

резерв

...

...

...

...

023

05C

SD

резерв

024

060

SD

ложное прерывание

025

064

SD

автовектор по приоритету 1

026

068

SD

автовектор по приоритету 2

027

06C

SD

автовектор по приоритету 3

028

070

SD

автовектор по приоритету 4

029

074

SD

автовектор по приоритету 5

030

078

SD

автовектор по приоритету 6

031

07C

SD

автовектор по приоритету 7

032

080

SD

TRAP #0

033

084

SD

TRAP #1

...

...

...

...

047

0BC

SD

TRAP #15

048

0C0

SD

резерв

...

...

...

...

063

0FC

SD

резерв

064

100

SD

пользовательский вектор прерывания

...

...

...

...

255

3FC

SD

пользовательский вектор прерывания

В распоряжении пользователя находятся вектора с номерами 64-255. Векторы 12. 13, 14, 16-24, 48-63 не доступны и зарезервированы под дальнейшее развитее семейства Motorola. Остальные вектора являются системными.

Каждый вектор (за исключением reset) использует 2 слова для хранения 24-битного адреса перехода на подпрограмму обработки ИС.

Вектору reset необходимо 4 слова, т.к. при этой ИС перезаписывается не только РС но и SSP.

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

С незначительными изменениями для различных типов ИС, эта последовательность выглядит следующим образом:

1. Текущее значение SR, включая системный и пользовательский байты, сохраняется во временном внутреннем регистре. Затем в системном байте S-бит устанавливается в "1", а Т-бит сбрасывается. Это устанавливает режим супервизора и сбрасывает режим трассировки.

2. Сохраняется адрес возврата в программу путем записи РС в стек супервизора.

3. Сохраняется регистр статуса SR (с неизмененными S и Т битами), который тоже заносится в стек супервизора.

4. Процессор получает номер вектора ИС, вычисляет вектора (адрес перехода) и загружает его содержимое в РС. Это означает, что передал управление подпрограмме данного ИС.

При получении прерывания от внешнего устройства. процессор перед началом обработки ожидает окончания действия текущей команды.

Для иллюстрации последовательности обработки ИС рассмотрим выполнение команды

DIVS #0, D1

Команда записана по адресу 012000, SSP=002456. Очевидная ошибка- деление на ноль. Процессор вырабатывает ИС с вектором 5. На рис 2 показаны регистры и пространство стека супервизора, задействованные в процессе обработки.

Рис.2 Пример последовательности обработки ИС.

Для хранения результатов и получения информации подпрограммы обработки ИС используют регистры и общую память.

Любой процесс обработки ИС должен заканчиваться командой RTE (return from exception), которая восстанавливает значение SR и РС, и таким образом, передает управление прерванной программе.

Надо отметить, что при обработке ИС происходит переход между двумя различными режимами процессора (в случае, если программа, во время которой произошло прерывание, использовала пользовательский режим), причем переход из режима пользователя в режим супервизора может осуществляться только в этом случае. в то время как обратный переход задается программно (рис.3).

Рис.3 Взаимосвязь между режимами МП МС68000.

Соседние файлы в папке motorola