Логика точек останова О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».