Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
глава 6 готово.doc
Скачиваний:
10
Добавлен:
15.09.2019
Размер:
3.38 Mб
Скачать

6.2.5. Внутрикристальный эмулятор ОnСе

Структура ОnСЕ. Внутрикристальное устройство эмуляции DSP56K (ОnСЕ) обеспечивает простой, недорогой и быстрый инструмент независимого доступа к внутренним регистрам процессора и периферии. ОnСЕ сообщает программисту статус регистров, ячеек памяти, шин и пяти инструкций, выполненных последними. На рис. 6.51 приведены основные компоненты устройства эмуляции ОnСЕ, шины подключения к процессору, а также его внешние контакты.

Внешние контакты ОnСЕ.

Ниже перечислены внешние контакты ОnСЕ.

Последовательный вход отладки/статус кристалла 0 (DSI/OS0). По этому контакту в контроллер ОnСЕ поступают последовательные данные или команды, если он сконфигурирован как вход.

Данные, принимаемые по контакту DSI, распознаются только в том случае, если DSP находится в режиме отладки. Данные защелкиваются по отрицательному фронту сигнала последовательной синхронизации DSCK. Данные всегда сдвигаются из последовательного порта эмулятора, начиная со старшего бита.

Если контакт сконфигурирован как выход, он работает в сочетании с контактом OS1 для выдачи информации о статусе кристалла (табл. 6.33). Как выход контакт работает, если процессор не находится в режиме отладки. После аппаратного сброса контакт сконфигурирован как выход.

Последовательная синхронизация отладки/статус кристалла 1 (DSCK/0S1).

Контакт, если он сконфигурирован как вход, обеспечивает последовательную синхронизацию для сдвига данных в последовательный порт ОnСЕ или из него. Частота синхронизации не должна быть больше, чем 1/8 частоты синхронизации процессора. Если контакт сконфигурирован как выход, он работает в сочетании с контактом OS0 для выдачи информации о статусе кристалла. Как выход контакт работает, если процессор не находится в режиме отладки. После аппаратного сброса контакт сконфигурирован как выход.

Последовательный выход отладки (DSO). Через этот контакт из ОnСЕ читаются последовательные данные, определяемые последней командой, принятой от внешнего контроллера команд. Данные всегда сдвигаются из последовательного порта эмулятора, начиная со старшего бита. Данные защелкиваются по положительному фронту сигнала синхронизации за пределами последовательного порта ОnСЕ. Контакт DSO обеспечивает также ответные импульсы для внешнего контроллера команд.

При входе в режим отладки сигнал на контакте DSO имеет низкий уровень, который показывает, что ОnСЕ ожидает команды. После приема команды чтения низкий уровень на контакте DSO показывает, что запрашиваемые данные доступны и последовательный порт ОnСЕ готов для к передаче данных. После приема команды записи низкий уровень на контакте DSO показывает, что последовательный порт ОnСЕ готов к записи данных; после того, как данные записаны, выдается другой ответный импульс. После аппаратного сброса и во время простоя процессора сигнал на контакте DSO имеет высокий уровень.

Вход запроса отладки (¬ DR). Вход запроса отладки позволяет пользователю входить в режим операций отладки из внешнего контроллера команд. При появлении активного сигнала на этом контакте DSP56K заканчивает выполнение текущей инструкции, сохраняет информацию о конвейере инструкций, переходит в режим отладки и ожидает команд по линии DSI. В режиме отладки контакт используется для сброса контроллера ОnСЕ при потере синхронизации между контроллером ОnСЕ и внешним устройством. Сигнал на контакте ¬DR должен быть переведен в неактивное состояние после получения ответа на линии DSO и перед посылкой первой команды. Появление активного сигнала ¬DR выводит кристалл из состояния останова или ожидания.

Регистр команды ОnСЕ (OCR). Это 8-битный регистр сдвига, принимающий последовательные данные по контакту DSI. Он сохраняет 8-битные команды и используется как вход декодера ОnСЕ. Формат команды показан на рис. 6.52.

Биты выбора регистра (RS4-RS0) биты 4-0. Биты определяют регистр, предназначенный в качестве источника /приемника для чтения /записи (табл. 6.34).

Команда Exit (ЕХ) бит 5. Если этот бит установлен, процессор выходит из режима отладки и продолжает выполнять операции в нормальном режиме. Команда выхода выполняется только в том случае, если выдана команда Go и производится запись в OPDBR или чтение/запись при невыбранном регистре. В противном случае команда Exit игнорируется.

Команда Go (бит 6). Если бит равен единице, кристалл выполняет инструкцию, которая находится в регистре PIL. Для выполнения инструкции процессор выходит из режиме отладки, соответствующим образом показывая это на контактах OSO, OS1. Процессор возвращается в режим отладки непосредственно после выполнения инструкции, если бит ЕХ = 0. Если бит ЕХ = 1, процессор остается в нормальном режиме. Команда Go выполняется только в том случае, если производится запись в OPDBR или чтение/запись при невыбранном регистре. В противном случае команда Go игнорируется.

Команда чтения/записи (R/W) бит 7. Бит определяет направление передачи данных. Если бит равен нулю, выполняется запись данных в регистр, определенный битами RS4-RS0. Если бит равен единице, выполняется чтение данных из регистра, определенного битами RS4-RS0.

Счетчик битов OnCE (OBC). Это 5-битный счетчик, связанный со сдвигом битов данных. Счетчик инкрементируется по отрицательному фронту DSCK. Счетчик сбрасывается при аппаратном сбросе и при переходе DSP56K в режим отладки. ОВС выдает на декодер два сигнала: один показывает, что первые 8 бит сдвинуты, второй показывает, что сдвинуты 24 бита.

Декодер OnCE (ODEC). ODEC управляет работой эмулятора ОnСЕ. Он принимает 8-битную команду из OCR, два сигнала из ОВС и два сигнала, показывающие, что процессор остановлен. Декодер генерирует стробы, необходимые для чтения и записи выбранных регистров.

Регистр статуса и управления (OSCR).

24-разрядный регистр OSCR используется для задания режима трассировки операций и индикации причины наступления режима отладки. Управляющие биты доступны для чтения/записи, биты состояния - для чтения. Биты регистра устанавливаются в «0» при аппаратном сбросе. Структура регистра представлена на рис. 6,53.

Управление памятью точек останова (ВСО, ВС1, ВС2 ,ВСЗ - биты 0-3). Биты разрешают использование памяти точек останова. Останов происходит, если адрес памяти находится в диапазоне значений в регистрах верхней и нижней границ памяти. Биты очищаются при аппаратном сбросе (табл. 6.35).

Разрешение режима трассировки (ТМЕ-бит 4). Если бит равен единице, разрешен режим трассировки операций. По аппаратному сбросу бит сбрасывается в «0».

Местонахождение программной отладки (SWO-бит 8). Бит статуса равен единице, если процессор переходит в режим отладки в результате выполнения инструкции DEBUG или DEBUGcc и если условие перехода истинно. Сбрасывается в «0» по аппаратному сбросу или при выходе из режима отладки при установленных битах GO и EX. Местонахождение памяти точек останова (МВО - бит 9). Бит статуса равен 1, если происходит точка останова. Бит сбрасывается в «0» по аппаратному сбросу или при выходе из режима отладки при установленных битах GO и EX.

Местонахождение трассировки (ТО - бит 10). Бит статуса равен единице, если процессор переходит в режим отладки, счетчик трассировки равен нулю и установлен режим трассировки. Бит сбрасывается в «0» по аппаратному сбросу или при выходе из режима отладки при установленных битах GO и EX.

Логика точек останова ОnСЕ.

Точки останова могут быть установлены в памяти программ или в памяти данных. Логика точек останова содержит защелку адреса, регистры хранения верхней и нижней границы адресов, компараторы и счетчик точек останова (рис. 6.54). Адресные компараторы помогают определять момент останова программы или запись данных в недозволенные области.

Они также используются для останова программы по определенному значению регистров или ячейки памяти. Использование адресных компараторов позволяет пользователю устанавливать точки останова в ОЗУ или ПЗУ в любом операционном режиме. Доступ к памяти управляется содержимым OSCR. Компаратор нижнего адреса генерирует сигнал «истинно», если адрес на шине больше или равен содержимому регистра нижней границы адресов. Компаратор верхнего адреса генерирует сигнал «истинно», если адрес на шине меньше или равен содержимому регистра верхней границы адресов. Если компаратор нижнего адреса и компаратор верхнего адреса выдают сигнал «истинно», адрес входит в заданный диапазон и счетчик точек останова декрементируется, если его содержимое больше нуля. Если оно равно нулю, счетчик не декрементируется и возникает точка останова.

Защелка адреса памяти (OMAL). Это 16-битный регистр, защелкивающий содержимое РАВ, ХАВ или YAB в каждом цикле в соответствии с битами ВСЗ-ВСО в OSCR.

Регистр верхней границы памяти (OMULR). Это 16-битный регистр, хранящий верхнюю границу памяти точек останова. Регистр может быть прочитан или записан с помощью последовательного интерфейса ОnСЕ. Перед выполнением точек останова регистр должен быть загружен из внешнего контроллера команд.

Регистр нижней границы памяти (OMLLR). Это 16-битный регистр, хранящий нижнюю границу памяти точек останова. Регистр может быть прочитан или записан с помощью последовательного интерфейса ОnСЕ. Перед выполнением точек останова регистр должен быть загружен из внешнего контроллера команд.

Компаратор верхнего адреса памяти (ОМНС). Компаратор верхнего адреса сравнивает текущий адрес памяти (в OMAL) с содержимым OMULR. Если OMULR выше или равен OMAL, компаратор вырабатывает сигнал, показывающий, что адрес меньше или равен верхней границе.

Компаратор нижнего адреса памяти (OMLC). Компаратор нижнего адреса сравнивает текущий адрес памяти (в OMAL) с содержимым OMLLR. Если OMLLR ниже или равен OMAL, компаратор вырабатывает сигнал, показывающий, что адрес больше или равен нижней границе.

Счетчик точек останова (ОМВС). 24-битный счетчик загружается величиной, равной числу циклов доступа к памяти минус единица, которые должны предшествовать выполнению точек останова. Доступ к памяти определяется битами ВСЗ-ВСО в регистре OSCR и регистрами верхней и нижней границ адресов. Во время выполнения каждого доступа счетчик точек останова декрементируется. Когда значение счетчика достигает нуля, кристалл переходит в режим отладки. Счетчик может быть прочитан или записан с помощью последовательного интерфейса ОnСЕ. При изменении адресов верхней или нижней границы счетчик должен быть перезаписан. Это гарантирует сброс логики точек останова и то, что предыдущие события никоим образом не отразятся на новых событиях. Счетчик сбрасывается по аппаратному сбросу.

Логика трассировки ОnСЕ.

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

Для инициализации режима трассировки счетчик загружается определенной величиной, в PC устанавливается адрес инструкции, выполняемой в реальном времени, бит ТМЕ в OSCR устанавливается в «1»; процессор выходит из режима отладки при выполнении соответствующей команды от внешнего контроллера команд. При выходе из режима отладки счетчик декрементируется после выполнения каждой инструкции. Прерывания обслуживаются, и все инструкции вызывают декремент счетчика трассировки. Когда значение счетчика трассировки становится равным нулю, процессор возвращается в режим отладки, бит ТО в OSCR устанавливается в «1», контакт DSO показывает, что процессор вошел в режим отладки и требует обслуживания.

Счетчик трассировки - 24-битный счетчик, который может быть прочитан, записан или сброшен по последовательному интерфейсу ОnСЕ. Если требуется выполнить N инструкций перед возвращением в режим отладки, в счетчик должно быть загружено значение N-1. По аппаратному сбросу счетчик сбрасывается в «0».

Методы входа в режим отладки.

В режиме отладки появляется импульс низкого уровня на линии DSO, информирующий внешний контроллер команд о том, что DSP находится в режиме отладки и ожидает команды.

Внешний запрос отладки по ¬RESET. DSP входит в режим отладки при наличии сигналов активного уровня на линиях ¬RESET и ¬DR. После приема ответа кристалла внешний контроллер команд должен сбросить сигнал ¬DR перед посылкой первой команды. DSP не выполняет никакой инструкции перед входом в режим отладки.

Внешний запрос отладки при обычном функционировании. Появление сигнала активного уровня на линии ¬DR во время обычного функционирования процессора вызывает завершение выполнения текущей инструкции и переход в режим отладки. После приема ответа кристалла внешний контроллер команд должен сбросить сигнал -DR перед посылкой первой команды. В данном случае кристалл полностью выполняет текущую команду и останавливает выборку следующей команды.

Внешний запрос отладки при выполнении инструкции STOP. Появление сигнала активного уровня на линии ¬DR, когда кристалл находится в приостановленном состоянии (по инструкции STOP), и сохранение этого сигнала до появления ответного импульса на DSO вызывает выход кристалла из приостановленного состояния и вход в режим отладки. После приема ответа кристалла внешний контроллер команд должен сбросить сигнал ¬DR перед посылкой первой команды. В данном случае кристалл завершает выполнение инструкции STOP и останавливается после защелкивания следующей инструкции.

Внешний запрос отладки при выполнении инструкции WAIT. Появление сигнала активного уровня на линии ¬DR, когда кристалл находится в состоянии ожидания (по инструкции WAIT), и сохранение этого сигнала до появления ответного импульса на DSO вызывает выход кристалла из приостановленного состояния и вход в режим отладки. После приема ответа кристалла внешний контроллер команд должен сбросить сигнал ¬DR перед посылкой первой команды. В данном случае кристалл завершает выполнение инструкции WAIT и останавливается после защелкивания следующей инструкции.

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

Разрешение режима трассировки. Если разрешен механизм трассировки и счетчик трассировки имеет значение больше нуля, счетчик трассировки декрементируется после выполнения каждой инструкции. При равенстве значения счетчика нулю кристалл возвращается в режим отладки. Декремент счетчика вызывают только выполняемые инструкции (прерванные не вызывают декремент счетчика трассировки).

Разрешение точек останова. Если разрешен механизм точек останова и счетчик точек останова равен нулю, кристалл переходит в режим отладки после завершения выполнения инструкции, вызвавшей точку останова. В случае останова по программной выборке точка останова вызывается сразу после выполнения выбранной инструкции. В случае останова по адресу памяти данных (доступ к памяти X, Y или Р по инструкции MOVE) точка останова вызывается после завершения инструкции, следующей за инструкцией, которая обращалась к заданному адресу.

Последовательный протокол.

Этот протокол используется для эффективной связи между внешним контроллером команд и кристаллом DSP56K. Перед началом отладки внешний контроллер команд должен ждать ответа по линии DSO, показывающего, что кристалл находится в режиме отладки. Внешний контроллер команд связывается с кристаллом посредством 8-битных команд, которые могут сопровождаться 24-битными данными. Данные и команды передаются или принимаются, начиная со старшего бита. После посылки команды внешний контроллер команд должен ждать ответа кристалла о выполнении принятой команды, а только потом посылать следующую. При работе с 16-битными регистрами ОnСЕ используются старшие 16 бит в 24-битном поле данных, а младшие 8 бит заполняются нулями.