Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Приложение БДетальное описание отладкиВ данном приложении представлено более детальное описание отладочных возможностей ядра ARM7TDMI и дополнительная информация о логике EmbeddedICE. Приложение содержит следующие разделы:
Б.1. Цепи сканирования и JTAG-интерфейс Ядро ARM7TDMI содержит три цепи сканирования JTAG-типа. Они позволяют выполнять отладку и конфигурировать логику EmbeddedICE. TAP-контроллер JTAG-типа управляет цепями сканирования. Более детальная информация по техническим характеристикам JTAG приведена в стандарте IEEE 1149.1 - 1990 Стандарт по архитектуре порта доступа к функциям тестирования и граничного сканирования. Кроме того, предусмотрена поддержка опциональной четвертой цепи сканирования. Она необходима в случае использования внешней цепи граничного сканирования внутри корпусного исполнения. Сигналы управления для данной цепи сканирования описаны в приложении Б "Цепь сканирования 3". Прим.: ячейки сканирования не полностью совместимы с JTAG. В следующих разделах описываются:
Б.1.1 Реализация цепи сканирования Каскады сканирования обозначаются следующим образом:
Цепи сканирования показаны на рисунке Б.1.
Цепь сканирования 0 Цепь сканирования 0 позволяет выполнить доступ к любым периферийным устройствам ядра ARM7TDMI, в т.ч. шина данных. Функции цепи сканирования позволяют выполнять тестирование внутренних устройств (EXTEST) и последовательное тестирование ядра (INTEST). Используется следующий порядок ввода и вывода данных:
Цепь сканирования 1 Цепь сканирования 1 - поднабор цепи сканирования 0. Она выполняет последовательный доступ к шине данных ядра D[31:0] и сигналу BREAKPT. Всего в цепи сканирования находятся 33 бита. Используется следующий порядок от последовательного ввода до последовательного вывода данных:
Цепь сканирования 2 Цепь сканирования 2 разрешает доступ к регистрам логики эмуляции EmbeddedICE. См. подробности в параграфе "Регистры тестовых данных". Б.1.2 Цифровой автомат TAP-контроллера Процесс последовательного тестирования и отладки наилучшим образом объясняется в связке с цифровым автоматом JTAG. На рисунке Б.2 показаны изменения состояний, которые происходят в TAP-контроллере.
Взято из стандарта IEEE 1149.1-1990. Copyright 1994-2001 IEEE. Все права зарезервированы. Б.2 Сброс TAP-контроллера Интерфейс граничного сканирования (JTAG) содержит контроллер цифрового автомата, именуемый TAP-контроллером. Для перевода TAP-контроллера в корректное состояние после подачи питания, необходимо подать импульс сброса на вход nTRST:
Прим: наличие синхронизации на линии TCK необязательно для выполнения сброса. Сигнал nTRST:
Прим.: nTRST необходимо использовать для сброса интерфейса граничного сканирования как минимум однократно после подачи питания. После этого цифровой автомат TAP-контроллера может быть переведен в состояние "Сброс логики тестир." для последующего сброса интерфейса граничного сканирования. Б.3 Подтягивающие резисторы Стандарт IEEE 1149.1 подразумевает, что сигналы nTRST, TDI и TMS должны иметь внутренние подтягивающие резисторы. Для минимизации потребления статического тока, данные резисторы не введены в состав ядра ARM7TDMI . Следовательно, на четырех входах интерфейса тестирования nTRST, TDI, TMS и TCK должны быть сформированы корректные логические уровни для достижения нормального функционирования схемы. Б.4 Регистр инструкции Регистр инструкции характеризуется 4-битной длиной. Бит паритета не предусмотрен. В состоянии "Захват РИ" в регистр инструкции загружается фиксированное значение 0001. Младший значащий бит регистра инструкции вводится и выводится первым. Б.5 Общеиспользуемые инструкции В таблице Б.1 приведен перечень общеиспользуемых инструкций. Таблица Б.1. Общеиспользуемые инструкции
При последующем описании инструкций полагается, что TDI и TMS оцифровываются по нарастающему фронту TCK, а все изменения выхода TDO выполняются по падающему фронту TCK. Б.5.1 EXTEST (0000) Инструкция EXTEST позволяет перевести выбранную цепь сканирования в режим тестирования. Данная инструкция выполняет подключение выбранной цепи сканирования между TDI и TDO. После записи в регистр инструкции EXTEST все ячейки сканирования переходят в их режим тестирования:
Б.5.2 SCAN_N (0010) Инструкция SCAN_N подключает регистр выбора пути сканирования между TDI и TDO:
Регистр выбора пути сканирования в данной реализации характеризуется 4-разрядной длиной, хотя конечное значение длины этого регистра не задано. Младший значащий бит регистра выбора пути сканирования вводится и выводится первым. Б.5.3 SAMPLE/PRELOAD (0011) Данная инструкция используется только для выполнения тестирования и не должна использоваться для цепей сканирования ядра ARM7TDMI. Она может использоваться с пользовательскими цепями сканирования, как, например, цепи граничного сканирования. Б.5.4 RESTART (0100) Инструкция RESTART перезапускает процессор при выходе из состояния отладки. Инструкция RESTART подключает регистр BYPASS между TDI и TDO. TAP-контроллер выполняется действия, аналогичные действиям при загрузке инструкции BYPASS. Процессор выходит из состояния отладки после ввода состояния "Запуск тестир./свободен". Б.5.5 CLAMP (0101) Данная инструкция подключает 1-битный сдвиговый регистр, регистр BYPASS, между TDI и TDO. Если инструкция CLAMP загружена в регистр инструкции, то состояние всех выходных сигналов ячейки сканирования определяется значениями, которые были предварительно загружены в цепь сканирования. Данная инструкция может использоваться, только если в качестве текущей цепи сканирования выбрана цепь 0:
Б.5.6 HIGHZ (0111) Данная инструкция подключает 1-битный сдвиговый регистр, регистр BYPASS, между TDI и TDO. После загрузки инструкции HIGHZ в регистр инструкции шина адреса A[31:0], шина данных D[31:0], nRW, nOPC, LOCK, MAS[1:0], и nTRANS переходят в высокоимпедансное состояние, а внешний сигнал HIGHZ переходит в ВЫСОКОЕ состояние. Данные действия аналогичны действиям при переводе сигнала TBE в НИЗКОЕ состояние:
Б.5.7 CLAMPZ (1001) Данная инструкция подключает 1-битный сдвиговый регистр, регистр BYPASS, между TDI и TDO. Если инструкция CLAMPZ загружена в регистр инструкции, то все 3-стабильные выводы переходят в неактивное состояние, но данные, подаваемые на выход ячеек сканирования, поступают из ячеек сканирования. Данная инструкция предназначена для гарантирования того, что в ходе производственного тестирования каждый выход может быть отключен, если его значением является логический 0 или логическая 1:
Б.5.8 INTEST (1100) Инструкция INTEST переводит выбранную цепь сканирования в тестовый режим:
Инструкция INTEST позволяет добиться пошаговой работы ядра. Б.5.9 IDCODE (1110) Инструкция IDCODE подключает регистр идентификационного кода устройства или идентификационный регистр между TDI и TDO. Данный регистр является 32-разрядным и позволяет считать через TAP-контроллер код производителя, серийный номер и версию компонента. Информация по формату идентификационного регистра приведена в параграфе "Регистр идентификационного кода ядра ARM7TDMI". После загрузки инструкции IDCODE в регистр инструкции все ячейки сканирования переходят в их нормальный системный режим работы:
Б.5.10 BYPASS (1111) Инструкция BYPASS подключает 1-разрядный сдвиговый регистр, регистр bypass, между выводами TDI и TDO. Если инструкция BYPASS загружается в регистр инструкции, то все ячейки сканирования переходят в их нормальный системный режим работы. Инструкция BYPASS не оказывает влияния на системные выводы:
Прим.: В состоянии отладки BYPASS не позволяет процессору выйти из состояния отладки или синхронизироваться сигналом MCLK для доступа на системной скорости. Чтобы выполнить это необходимо использовать инструкцию RESTART. Б.6 Регистры тестовых данных Предусмотрено семь регистров тестовых данных, которые можно подключить между выводами TDI и TDO:
При последующем описании регистров тестовых данных полагается, что данные сдвигаются каждый цикл TCK. Б.6.1 Регистр Bypass Назначение: обход устройства в ходе в ходе сканирующего тестирования, обеспечивая путь между TDI и TDO. Размер: 1 бит. Режим работы: если текущей инструкцией в регистре инструкции является BYPASS, то последовательные данные передаются с входа TDI на выход TD В состоянии "Захват РД" загружается логический 0 через параллельный вход регистра bypass. Б.6.2 Регистр идентификационного кода ядра ARM7TDMI Назначение: считывание 32-разрядного идентификационного кода устройства. Дополнительный программируемый идентификационный код не предусмотрен. Размер: 32 бита. Формат регистра показан на рисунке Б.3.
Точное значение идентификационного кода необходимо уточнить у поставщика микроконтроллера. Режим работы: если текущей инструкцией является IDCODE, то между выводами TDI и TDO включается регистр идентификационного кода. Параллельный вывод из идентификационного регистра не предусмотрен. 32-разрядный идентификационный код загружается в идентификационный регистр через его параллельные входы в состоянии "Захват РД". Младший разряд этого регистра передается первым. Б.6.3 Регистр инструкции Назначение: изменяет текущую TAP-инструкцию. Размер: 4 бита. Режим работы: в состоянии "Сдвиг РИ" регистр инструкции выбирается для последовательной передачи между выводами TDI и TDO. В состоянии "Модиф. РИ" значение в регистре инструкции становится текущей инструкцией. В состоянии "Захват РИ" в данный регистр загружается двоичное значение 0001. Данное значение передается в состоянии "Сдвиг РИ". При сбросе текущей инструкцией становится IDCODE. Младший разряд этого регистра вводится и выводится первым. Б.6.4 Регистр выбора пути сканирования Назначение: изменяет текущую активную цепь сканирования. Размер: 4 бита Режим работы: если в состоянии "Сдвиг РД" текущей инструкцией является SCAN_N в качестве пути сканирования между выводами TDI и TDO выбирается регистр выбора пути сканирования. В состоянии "Захват РД" в данный регистр загружается двоичное значение 1000. Данное значение выводится в состоянии "Сдвиг РД", при этом, загружается новое значение. В состоянии "Модиф. РД" значение в этом регистре определяет, какая цепь сканирования становится текущей активной цепью сканирования. Все остальные инструкции, как, например, INTEST, после этого могут быть применены к этой цепи сканирования. Только что выбранная цепь сканирования вступает в силу только после выполнения инструкции SCAN_N или после сброса. При сбросе в качестве активной цепи сканирования выбирается цепь сканирования 0. Младший разряд данного регистра вводится и выводится первым. Номер выбранной цепи сканирования отражается на выходах SCREG[3:0]. В дополнение к сканированию цепей сканирования макроячейки ARM7TDMI TAP-контроллер может использоваться для управления внешними цепями сканирования. Для внешней цепи сканирования выделен отдельный номер и могут использоваться сигналы SCREG[3:0], IR[3:0], TAPSM[3:0], TCK1 и TCK2. Перечень номеров цепей сканирования, назначенных ARM, показан в таблице Б.2. Внешняя цепь сканирования может использовать любой другой номер. Последовательный поток данных поступающий к внешней цепи сканирования присутствует на SDINBS, а обратный последовательный поток из внешней цепи сканирования должен присутствовать на входе TAP-контроллера SDOUTBS. Если выбирается цепь сканирования 3 или если выбирается цепь сканирования с неопределенным номером, то цепь сканирования между выводами SDINBS и SDOUTBS подключается к выводам TDI и TDO. Если необходимо подключение нескольких внешних цепей сканирования, то можно применить мультиплексор для подключения желаемой цепи сканирования к выходу SDOUTBS. Управлять мультиплексором в этом случае можно с помощью дешифратора, подключенного к выводам SCREG[3:0]. В таблице Б.2 приведено назначение номеров цепей сканирования. Таблица Б.2. Назначение номеров ячеек сканирования
Б.6.5 Цепи сканирования 0, 1, 2 и 3 Они предназначены для предоставления доступа к логике ядра и логике EmbeddedICE для нужд программирования. Их подробное описание приведено ниже. Цепь сканирования 0 и 1 Назначение: разрешает доступ к процессорному ядру для тестирования и отладки. Размер: цепь сканирования 0: 105 бит, цепь сканирования 1: 33 бита Каждая ячейка цепи сканирования довольно проста и состоит из последовательного регистра и мультиплексора (см. рисунок Б.4). Ячейки сканирования выполняют две основные функции:
Каскад захвата входных ячеек выполняет копирование в последовательный регистр значения, поступающего с системного входа в ядро. В ходе сдвига данное значение выводится в последовательном формате. Значение, поступающее в ядро из входной ячейки, является системным входом или содержимым последовательного регистра (определяется мультиплексором).
Захват в выходных ячейках выполняется путем копирования выходного значения ядра в последовательный регистр. В ходе сдвига данное значение выводится в последовательном формате. Значение, подаваемое в систему, является выходом ядра или содержимым последовательного регистра. Все сигналы управления цепей сканирования генерируются внутренне TAP-контроллером. Действие TAP-контроллера определяется текущей инструкцией и состоянием цифрового автомата TAP-контроллера. Предусмотрено три основных режима работы цепей сканирования: INTEST, EXTEST и SYSTEM. Они выбираются с помощью различных инструкций TAP-контроллера:
Прим.:Ячейки сканирования не полностью совместимы со стандартом JTAG, т.к. не содержат ступени модификации. Следовательно, пока данные передаются по цепи сканирования, содержимое ячейки сканирования не изолируется от выхода. После данных операций вывод из ячейки сканирования в ядро или во внешнюю систему может изменяться каждый цикл сканирования. Это не оказывает влияние на ядро ARM7TDMI, т.к. внутреннее состояние не изменяется до начала его синхронизации. Однако остальная часть системы должна учитывать, что каждый выход может изменяться асинхронно, т.к. данные перемещаются по цепи сканирования. Данную особенность должна учитывать внешняя логика, чтобы не оказать негативного влияния на остальную часть системы. Цепь сканирования 0 Цепь сканирования 0 реализована в основном для внутреннего тестирования EXTEST и тестирования ядра INTEST. Цепь сканирования 0 выбирается с помощью инструкции SCAN_N (см. параграф "SCAN_N (0010)"). INTEST позволяет выполнить последовательное тестирование ядра. TAP-контроллер должен быть переведен в режим INTEST после выбора цепи сканирования 0:
Описание синхронизации ядра в ходе тестирования и отладки приведено в параграфе "Синхронизация ядра ARM7TDMI". EXTEST позволяет выполнить внутреннее тестирование, которое полезно для проверки подключений между устройствами на печатной плате. TAP-контроллер должен быть переведен в режим EXTEST после выбора цепи сканирования 0:
Прим.: в состоянии "Запуск тестир./свободен" ядро не тактируется. Операция после этого может быть повторена. Цепь сканирования 1 Основным назначением цепи сканирования 1 является отладка, хотя она может использоваться и для EXTEST на шине данных. Цепь сканирования 1 выбирается с помощью инструкции SCAN_N TAP-контроллера. Отладка аналогична INTEST, поэтому, необходимо следовать описанной выше процедуре для цепи сканирования 0. Цепь сканирования 1 характеризуется 33-разрядной длиной, где 32 разряда используются для хранения данных и 1 разряд предусмотрен для ячейки сканирования на входе ядра BREAKPT. 33-й бит используется для следующих целей:
Цепь сканирования 2 Назначение: разрешает доступ к регистрам макроячейки EmbeddedICE. Используется следующий порядок цепи сканирования, от TDI к TDO:
См. "Структурная схема EmbeddedICE". Размер: 38 бит. Для осуществления доступа к данному последовательному регистру, необходимо вначале выбрать цепь сканирования 2 с помощью инструкции SCAN_N TAP-контроллера. После этого TAP-контроллер должен быть переведен в режим INTEST.
Цепь сканирования 3 Назначение: разрешает ядру ARM7TDMI управлять внешней цепью граничного сканирования. Размер: определяется пользователем. Сигналы управления цепи сканирования 3 организованы таким образом, что внешняя опциональная цепь граничного сканирования может управляться через ядро ARM7TDMI. Ниже приведено описание сигналов управления, которые генерируются только после выбора цепи сканирования 3. Все остальное время данные выходы неактивны. DRIVEBS - сигнал, предназначенный для переключения ячеек сканирования из системного режима в тестовый режим. Данный сигнал устанавливается всякий раз, когда выбирается одна из следующих инструкций: INTEST, EXTEST, CLAMP или CLAMPZ. PCLKBS - сигнал, который генерируется в состоянии "Модиф. РД" и предназначен для обновления синхронизации. Обычное значение, записанное в ячейку сканирования, передается на выход ячейки по нарастающему фронту данного сигнала. ICAPCLKBS, ECAPCLKBS - сигналы синхронизации захвата, предназначенные для выборки данных в ячейках сканирования в ходе INTEST и EXTEST, соответственно. Данные сигналы синхронизации генерируются в состоянии "Захват РД". SHCLKBS, SHCLK2BS - неперекрывающиеся сигналы синхронизации, генерируемые в состоянии "Сдвиг РД" и предназначение для синхронизации ведущего и подчиненного элемента ячеек сканирования, соответственно. Когда цифровой автомат не в состоянии "Сдвиг РД", то данные сигналы имеют НИЗКИЙ уровень. Ниже приведено описание еще ряда сигналов, которые могут использоваться в цепи сканирования 3: nHIGHZ - сигнал, который может использоваться для перевода выходов ячеек сканирования в высокоимпедансное состояние. Данный сигнал принимает НИЗКИЙ уровень, когда инструкция HIGHZ загружается в регистр инструкции и ВЫСОКИЙ уровень во всех остальных случаях. RSTCLKBS - сигнал, который активен, когда цифровой автомат ТАР-контроллера находится в состоянии "Сброс логики тестир.". Он может использоваться для сброса любых дополнительных ячеек сканирования. В дополнение к выходам управления также предусмотрены выход SDINBS и вход SDOUTBS. Если внешняя цепь сканирования используется, то SDOUTBS необходимо подключить к выходу последовательных данных внешней цепи сканирования, а SDINBS должен быть подключен к последовательному вводу данных цепи сканирования. Б.7 Синхронизация ядра ARM7TDMI Ядро ARM7TDMI использует два сигнала синхронизации:
В ходе нормальной работы, ядро тактируется сигналом MCLK, а внутренняя логика удерживает DCLK в НИЗКОМ состоянии. Если ядро ARM7TDMI находится в состоянии отладки, то ядро тактируется сигналом DCLK под управлением цифрового автомата TAP-контроллера, а MCLK продолжает генерировать, но ничем не используется. Выбранный источник синхронизации поступает на линию ECLK для синхронизации внешней системы. Прим.: когда ядро ЦПУ находится в состоянии отладки и синхронизируется сигналом DCLK, то nWAIT не оказывает никакого влияния на временную диаграмму доступа. Б.7.1 Переключение синхронизации в процессе отладки Когда ядро ARM7TDMI вводит состояние отладки, то оно должно переключиться от MCLK к DCLK. Данная операция выполняется автоматически логикой ядра ARM7TDMI. При входе в состояние отладки ядро устанавливает DBGACK, когда MCLK имеет ВЫСОКИЙ уровень. Переключение между двумя сигналами синхронизации происходит по следующему падающему фронту MCLK. Процесс переключения синхронизации показан на рисунке Б.5.
Ядро ARM7TDMI использует DCLK как основной источник синхронизации до завершения отладки. При выходе из отладки ядро должно вернутся к синхронизации сигналом MCLK. Это выполняется в следующей последовательности:
См. "Выход из состояния отладки". Б.7.2 Переключение синхронизации в ходе тестирования Когда выполняется последовательное тестирование, которое заключается в подаче тестовых данных в ядро ARM7TM через интерфейс JTAG, ядро ARM7TDMI должно синхронизироваться сигналом DCLK. Вход в тестирование происходит менее автоматически по сравнению с отладкой и в этом случае необходимо предпринять некоторые меры. В ходе тестирования MCLK должен удерживаться в НИЗКОМ состоянии. TAP-контроллер в этом случае может использоваться для последовательного тестирования ядра ARM7TDMI. Если выбираются цепь сканирования 0 и INTEST, то выполняется генерация DCLK, а цифровой автомат находится в состоянии "Запуск тестир./свободен". В ходе EXTEST сигнал DCLK не генерируется. При выходе из тестирования RESTART необходимо выбрать в качестве инструкции TAP-контроллера. После этого возобновляется работа MCLK. Прим.: После тестирования INTEST необходимо предпринять меры по гарантированию того, что ядро находится в адекватном состоянии перед обратным переключением синхронизации. Наиболее безопасный способ для этого - выбор инструкции RESTART, которая вызывает системный сброс, или вставка инструкции MOV PC, #0 в конвейер инструкций перед обратным переключением синхронизации. Б.8 Определение состояния ядра и системы Когда ядро ARM7TDMI находится в состоянии отладки состояние ядра и системы оценивается путем загрузки инструкций множественного чтения и записи в конвейер инструкций. Перед проверкой состояния ядра и системы отладчик должен определить, из какого состояния процессор ввел состояние отладки Thumb или ARM, для чего проверяется состояние бита 4 регистра статуса отладки логики EmbeddedICE. Если бит 4 имеет ВЫСОКИЙ уровень, ядро ввело состояние отладки из состояния Thumb, если же бит 4 имеет НИЗКИЙ уровень, то ядро ввело состояние отладки из состояния ARM. Б.8.1 Определение состояния ядра Если процессор ввел состояние отладки из состояния Thumb, то наиболее простым способом действия для отладчика является возврат к состоянию ARM. После этого отладчик может выполнить ту же последовательность инструкций для определения состояния процессора. Для перевода процессора в состояние ARM, когда он находится в процессе отладки, необходимо выполнить следующую последовательность Thumb-инструкций:
Прим.: поскольку все инструкции Thumb имеют 16-разрядный формат, то наиболее простым способом действия при сдвиге цепи сканирования является повторение инструкции. Например, кодом BX R0 является 0x4700, поэтому, когда 0x47004700 сдвигается в цепь сканирования 1, отладчик не должен отслеживать половину шины, с которой процессор планирует считывать данные. Для определения состояния процессора можно использовать последовательность ARM-инструкций, показанных в примерах Б.1 и Б.2. Если процессор находится в состоянии ARM, то необходимо выполнить инструкцию из примера Б.1. Пример Б.1. Инструкция для определения состояния ядра
Инструкция из примера Б.1 вызывает появление на шине данных содержимого регистров. После этого можно считывать и передавать сдвигом данные значения. Прим.: использование r0 в качестве основного регистра для инструкции STM не является обязательным и можно использовать любой другой регистр. После определения значений в текущем банке регистров может появиться потребность доступа других банкированных регистров. Для этого необходимо изменить режим. Как правило, смена режима происходит, только если ядро находится в привилегированном режиме. Однако в состоянии отладки смена может происходить из одного режима в любой другой режим. Отладчик должен восстановить исходный режим перед выходом из состояния отладки. Например, если отладчик получил запрос на возврат состояния регистров пользовательского режима и регистров FIQ-режима, при условии, что состояние отладки было введено в супервизорном режиме, то можно использовать последовательность инструкций из примера Б.2. Пример Б.2. Определение состояния регистров в пользовательском режиме и режиме быстрого прерывания (FIQ)
Все данные инструкции выполняются на отладочной скорости. Отладочная скорость меньше системной скорости. Это происходит по той причине, что для ввода одной инструкции последовательным сдвигом и вывода данных требуется 33 периода синхронизации ядра. Снижение скорости выполнения инструкций не влияет негативным образом на возможность доступа к состоянию ядра, т.к. ядро ARM7TDMI полностью статическое. Однако данный метод нельзя распространить на определение состояния остальной части системы. В состоянии отладки, только следующие инструкции могут быть введены в конвейер инструкций для исполнения:
Б.8.2 Определение системного состояния Для удовлетворения требованиям к динамическим характеристикам системы памяти любая попытка доступа к состоянию системы должна выполнятся синхронно с ней. Следовательно, ядро ARM7TDMI должно вернуться к синхронизации системной частотой. Это управляется 33-м битом цепи сканирования 1. Любая инструкция может быть помещена в цепь сканирования 1 с битом 33 (бит BREAKPT) равным 0. После этого данная инструкция выполняется на скорости отладки. Для выполнения инструкции на системной скорости, предшествующая ей инструкция должна быть введена в цепь сканирования 1 с установленным в ВЫСОКОЕ состояние битом 33. После завершения сканирующего ввода инструкции на шину данных с системной скоростью и размещения ее на конвейере необходимо загрузить инструкцию RESTART в TAP-контроллер. Это вызывает автоматический возврат ядра ARM7TDMI на синхронизацию сигналом системной синхронизации MCLK, выполнению инструкции на системной скорости, а затем повторному вводу состояния отладки и переключению к синхронизации внутренне-генерированным сигналом DCLK. По завершении выполнения инструкции DBGACK имеет ВЫСОКИЙ уровень и ядро переключается обратно к синхронизации сигналом DCLK. В этой точке в ТАР-контроллере необходимо выбрать INTEST и отладка может быт возобновлена. Для определения завершения выполнения инструкции на системной скорости отладчик должен оценить состояние обеих сигналов DBGACK и nMREQ. Для доступа к памяти ядро ARM7TDMI устанавливает НИЗКИЙ уровень на nMREQ и после этого возвращается к синхронизации на системной скорости. Данный переход используется контроллером памяти для арбитрации, если ядро ARM7TDMI может использовать шину в следующем цикле. Если шина недоступна, то ядро получить ее синхронизацию, остановленную в неопределенном состоянии. Таким образом, единственным способом определения того, что доступ к памяти завершен, является оценка состояния обеих сигналов nMREQ и DBGACK. Если оба сигнала имеют ВЫСОКИЙ уровень, то доступ завершен. Как правило, отладчик использует макроячейку EmbeddedICE для управления отладкой и, поэтому, состояние nMREQ и DBGACK может быть определено путем считывания регистра статуса макроячейки EmbeddedICE. Состояние системы памяти может быть передано отладчику (ПК) за счет использования инструкций многократного чтения на системной скорости и инструкций многократной записи на отладочной скорости. Имеются ограничения к инструкциям с установленным битом 33. Установка бита 33 действительна только применительно к инструкциям чтения, записи, многократного чтения и многократной записи. См. также "Выход из состояния отладки". Когда ядро возвращается к состоянию отладки после доступа на системной скорости, бит 33 цепи сканирования 1 имеет ВЫСОКИЙ уровень. Этим отладчику предоставляется информация, почему введенное ядром состояние отладки первоначально считывает эту цепь сканирования. Б.8.3 Выход из состояния отладки При выходе из состояния отладки выполняется восстановление внутреннего состояния ядра ARM7TDMI, что вызывает переход к выполнению следующей инструкции и возвращению к синхронизации сигналом MCLK. После восстановления внутреннего состояния в конвейер инструкций необходимо загрузить инструкцию перехода. См. "Поведение счетчика программы в ходе состояния отладки", где приведено описание вычисления перехода. Бит 33 цепи сканирования 1 используется для возвращения синхронизации ядра ARM7TDMI сигналом MCLK. Предпоследняя инструкция отладочной последовательности вводится с битом 33 в ВЫСОКОМ состоянии. Последняя инструкция отладочной последовательности - переход и, поэтому, она вводится с битом 33 в НИЗКОМ состоянии. После этого ядро тактируется для ввода перехода в конвейер инструкций. В этом состоянии необходимо выбрать инструкцию RESTART в TAP-контроллере. Когда цифровой автомат вводит состояние "Запуск тестир./свободен", то цепь сканирования возвращается обратно к системному режиму и ядро возвращается к синхронизации сигналом MCLK. После этого ядро ARM7TDMI восстанавливает нормальную работу, считывая инструкции из памяти. Задержка до ввода цифровым автоматом состояния "Запуск тестир./свободен" предоставляет возможность установиться условиям в других устройствах в многопроцессорной системе. После этого, когда вводится состояние "Запуск тестир./свободен", восстанавливается одновременность работы всех процессоров. Сигнал DBGACK предназначен для опроса остальной части системы, когда ядро находится в состоянии отладки. Его можно использовать для приостановки таких периферийных устройств, как сторожевые таймеры, обладающие реально-временными характеристиками. Кроме того, DBGACK может использоваться для маскирования доступов к памяти, которые вызваны отладочным процессом. Например, когда ядро вводит состояние отладки после точки прерывания, то конвейер инструкций содержит инструкцию, снабженную точкой прерывания, а также две других инструкции, предварительная выборка которых уже была выполнена. При входе в состояние отладки конвейер освобождается. Таким образом, при выходе из состояния отладки конвейер должен быть перезаполнен для восстановления предыдущего состояния. В ходе отладочного процесса возникает большее число доступов к памяти, чем ожидается при нормальном функционировании. Любое системное периферийное устройство, которое чувствительно к количеству доступов, может быть запрещено с помощью DBGACK. Например, представим воображаемое периферийное устройство, которое просто выполняет счет количества циклов памяти. Данное устройство должно сформировать одинаковый ответ, как при запуске в состоянии отладки, так и без отладки. На рисунке Б.6 показывается поведение ядра при выходе из состояния отладки.
На рисунке 5.3 показано, что последний доступ к памяти происходит в цикле, в котором DBGACK принимает ВЫСОКИЙ уровень. В этой точки счетчик циклов может быть отключен. На рисунке Б.6 показано, что первый доступ памяти, в котором счетчик циклов не виден, возникает в цикле, в котором DBGACK принимает НИЗКИЙ уровень и, поэтому, в этой точке может быть восстановлена работа счетчика. Прим.: когда доступ на системной скорости возникает из состояния отладки, то ядро временно покидает состояние отладки и, поэтому, DBGACK может принять НИЗКИЙ уровень. Если имеются периферийные устройства, которые чувствительны к количеству доступов к памяти, то им необходимо предоставить информацию, что ядро еще находится в состоянии отладки. Путем программирования регистра управления макроячейки EmbeddedICE значение DBGACK может быть установлено к ВЫСОКОМУ уровню. Б.9 Поведение счетчика программы в ходе отладки Отладчик должен следить за тем, что происходит со счетчиком программы, чтобы была возможность перевести ядро ARM7TDMI в тоже место, из которого был прерван программный поток отладкой. Программный поток может быть прерван:
Б.9.1 Точки прерывания Вход в состояние отладки из точек прерывания увеличивает счетчик программы на 4 адреса или 16 байт. Каждая инструкция, выполняемая в состоянии отладки, изменяет счетчик программы на один адрес или 4 байта. Традиционным способом выхода из состояния отладки после срабатывания точки прерывания является удаление точки прерывания и переход к ранее прерванному адресу. Например, если состояние отладки ядра ARM7TDMI введено из точки прерывания по заданному адресу и были выполнены две инструкции на отладочной скорости, то необходимо выполнить переход на минус семь адресов, т.к. до этого имело место приращение
Ниже приведена последовательность вводимых данных в цепь сканирования 1, где первым передается старший значащий бит. Значение первого разряда переходит к биту BREAKPT, а далее передается инструкция для цепи сканирования 1:
После ввода ядром ARM7TDMI состояния отладки оно должно выполнить минимум две инструкции перед переходом, например, две операции NOP (MOV R0, R0). Для выполнения коротких переходов можно использовать операцию вычитания из счетчика программы с использованием его в качестве получателя результата:
Б.9.2 Точки наблюдения Возврат к выполнению программы после ввода состояния отладки при срабатывании точки наблюдения выполняется таким же способом, описанным в "Точки прерывания". При входе в состояние отладки к счетчику программы прибавляется 4 адреса, а при выполнении каждой инструкции - 1 адрес. Отличие от точек прерывания заключается в том, что инструкция, которая вызывает отладку, выполняется до входа в отладку, а возврат осуществляется к следующей инструкции. Б.9.3 Точка наблюдения с другой исключительной ситуацией Если одновременно со срабатыванием точки наблюдения возникает ситуация "Авар. данные", то ядро ARM7TDMI вводит состояние отладки в аварийном режиме. Вход в состояние отладки задерживается до перевода ядра в аварийный режим и выборки инструкции по аварийной вектору. Похожая последовательность происходит, когда прерывание или любая другая исключительная ситуация возникает при доступе к памяти, в котором выполняются условия срабатывания точки наблюдения. Ядро ARM7TDMI вводит состояние отладки в режиме исключительной ситуации. Отладчик должен проверить возникновение исключительной ситуации путем оценки текущего и предварительного режимов с помощью CPSR и SPSR, а также значения счетчика программы. Если исключительная ситуация имела место, то перед вводом состояния отладки пользователю необходимо предоставить выбор обработки исключительной ситуации. Вход в состояние отладки при возникновении исключительной ситуации вызывает инкрементирование счетчика программы на три инструкции, а не на четыре, и это необходимо учесть при вычислении адреса возврата перед выходом из состояния отладки. Например, предположим, что аварийная ситуация возникает при срабатывании точки наблюдения и 10 инструкций выполнены для определения данного случая. В этом случае можно использовать следующую последовательность для возврата к выполнению программы:
Данный код приводит к переходу на аварийный вектор, вызывая выборку и исполнение инструкции по этому адресу. Прим.: по завершении процедуры обработки аварийной ситуации выполняется выборка и исполнение инструкции, которая вызвала аварийную ситуацию. Это опять приводит к срабатыванию точки наблюдения и ядро ARM7TDMI повторно вводит состояние отладки. Б.9.4 Запрос отладки Вход в состояние отладки через запрос отладки аналогичен точке прерывания. Однако, в отличие от точки прерывания, последняя инструкция завершает свое исполнение и, поэтому, при выходе из состояния отладки нет необходимости в ее повторной выборке. Необходимо учитывать, что при входе в состояние отладки добавляется три адреса к счетчику программы, а при выполнении инструкции в состоянии отладки - один адрес. Например, предположим, что был выполнен запрос отладки, а затем принимается решение немедленно вернуться к исполнению программы. Для этого можно использовать следующую последовательность:
Данный код восстанавливает значение счетчика программы и перезапускает выполнение программы со следующей инструкции. Б.9.5 Доступ на системной скорости Если в состоянии отладки выполняется доступ на системной скорости, то значение PC увеличивается на три адреса. Инструкции, выполняемые на системной скорости, осуществляют доступ к системе памяти и, поэтому, возможно возникновение аварийной ситуации. Если аварийная ситуация возникает в ходе доступа к памяти на системной скорости, то ядро ARM7TDMI вводит аварийный режим перед возвратом в состояние отладки. Данная ситуация похожа на аварийную точку наблюдения, но проблема более сложна для установления, потому что авария не была вызвана инструкцией в основной программе и, т.о., PC не указывает на инструкцию, которая вызвала аварию. Обработчик аварийной ситуации, как правило, оценивает состояние PC для определения инструкции, которая вызвала аварийную ситуацию, а также адрес аварии. В этом случае, значение PC является некорректным, но т.к. отладчик может определить, по какому адресу осуществлялся доступ, то в него может быть выполнена запись, которая облегчит обработчику аварийной ситуации установить систему памяти. Б.9.6 Вычисление адресов возврата Адреса возврата переходов вычисляются следующим образом:
где N - количество инструкций, выполняемых на частоте отладки, в т.ч. последний переход, S - количество выполняемых инструкций на системной скорости. Б.10 Приоритеты и исключительные ситуации При срабатывании точки прерывания или при возникновении запроса на прерывание нормальный ход выполнения программы прерывается. Отладке может сопутствовать любой тип исключительной ситуации. Взаимодействие отладчика с другими исключительными ситуациями описывается "Поведение программного счетчика в ходе отладки". В данном разделе рассматриваются приоритеты для следующего:
Б.10.1 Точка прерывания с аварийной предварительной выборкой Если при выборке инструкции, которая снабжена точкой прерывания, возникает аварийная предварительная выборка, то обрабатывается авария, а точка прерывания игнорируется. Как правило, аварийная предварительная выборка возникает, например, когда доступ выполнен по виртуальному адресу, который физически не существует и, таким образом, возвращаемые данные являются некорректными. В таком случае, операционная система выполняет операцию обмена в странице памяти и возврат к предварительному недействительному адресу. На этот раз, когда инструкция загружается из памяти и срабатывает точка прерывания, ядро ARM7TDMI переходит в состояние отладки. Следовательно, аварийная предварительная выборка имеет более высокий приоритет, чем точка прерывания. Б.10.2 Прерывания Когда ядро ARM7TDMI вводит состояние отладки, прерывания автоматически отключаются. Если прерывание возникает перед тем, как было введено состояние отладки, ядро ARM7TDMI вводит состояние отладки в режиме прерывания. При входе в состояние отладки отладчик не может предполагать, что ядро ARM7TDMI находится в режиме, который ожидается программной пользователя. Для точного определения причины исключительной ситуации ядро ARM7TDMI должно проверить PC, CPSR и SPSR. Таким образом, отладка имеет более высокий приоритет, чем прерывание, но, тем не менее, ядро ARM7TDMI запоминает, какое прерывание возникло. Б.10.3 Аварийные данные Если при доступе, снабженного точкой наблюдения, возникает ситуация аварийных данных, то ядро ARM7TDMI вводит состояние отладки в аварийном режиме. Таким образом, точка наблюдения имеет более высокий приоритет, чем аварийная ситуация, но тем не менее ядро ARM7TDMI запоминает, что авария возникла. Б.11 Данные ячеек цепей сканирования В данном разделе приведены данные для:
Б.11.1 Ячейки цепи сканирования 0 В таблице Б.3 приведен список сигналов ядра ARM7TDMI, которые поступают в цепь сканирования 0. Таблица Б.3. Ячейки цепи сканирования 0
Б.11.2 Ячейки цепи сканирования 1 В таблице Б.4 приведен список данных, составляющих цепь сканирования 1 ядра ARM7TDMI. Таблица Б.4. Ячейки цепи сканирования 1
Б.12 Регистры точек наблюдения Два блока точек наблюдения, называемые Точка наблюдения 0 и Точка наблюдения 1, содержат по три пары регистров:
Каждый регистр программируется раздельно и имеет уникальный адрес. Назначение и положение регистров показано в таблице Б.5. Таблица Б.5. Назначение и положение регистров EmbeddedICE
Б.12.1 Программирование и считывание регистров точки наблюдения Регистр точки наблюдения программируется путем сдвига данных в цепь сканирования 2 логики EmbeddedICE. Цепь сканирования - 32-разрядный сдвиговый регистр, состоящий из:
Данная структура показана на рисунке Б.7.
Записываемые данные помещаются сдвигом в 32-разрядное поле данных. Адрес регистра сдвигается в 5-разрядное адресное поле. Лог. 1 сдвигается в позицию бита чтения/записи. Регистр считывается путем сдвига его адреса в адресное поле и сдвига 0 в позицию бита чтения/записи. 32-разрядное поле данных игнорируется. Адреса регистров показаны в таблице Б.5. Прим.: чтение или запись фактически происходит, когда ТАР-контроллер вводит состояние "Модиф. РД". Б.12.2 Использование регистров масок Для каждого значения регистра в регистровой паре предусмотрен регистр маски в том же формате. Установка бита регистра маски равным 1 приводит к исключению из процесса сравнения соответствующего бита регистра значения. Например, если требуется точка наблюдения в конкретном месте памяти, но значение данных неважно, то в регистр маски данных необходимо запрограммировать значение 0xFFFFFFFF, т.е. устанавливая все биты равными 1 для игнорирования всех данных на шине. Прим.: маска является XNOR-маской (исключающее ИЛИ-НЕ), а не традиционной И-маской. Если маскирующий бит равен 1, то результат сравнения в этой позиции всегда положителен, независимо от значения регистра или входного значения. Если маскирующий бит равен 0, то результат сравнения положителен, только если совпадает входное значение с запрограммированным в регистре значением. Б.12.3 Регистры управления Регистры значения управления и маски управления расположены идентично в младших 8-разрядах, как показано на рисунке Б.8.
Бит 8 регистра значения управления - это бит ENABLE и он не может маскироваться. Биты имеют следующее назначение:
Таблица Б.6. Кодирование сигналов MAS[1:0]
nOPC позволяет определить, является ли текущий цикл циклом выборки инструкции (nOPC=0) или циклом доступа к данным (nOPC=1). nTRANS сравнивается с инверсным сигналом трансляции ядра для определения, выполняется ли доступ в пользовательском (nTRANS=0) или непользовательском (nTRANS=1) режиме. EXTERN[1:0] является внешним входом в EmbeddedICE, который позволяет установить зависимость точки наблюдения от некоторых условий. Вход EXTERN для точки наблюдения 0 обозначается EXTERN[0], а для точки наблюдения 1 - EXTERN[1]. CHAIN может быть подключен к выходу цепи другой точки наблюдения для реализации, например, запроса отладчика в виде: точки прерывания по адресу YYY, только если в процессе XXX. В логике EmbeddedICE ядра ARM7TDMI выход CHAINOUT точки наблюдения 1 подключен к входу CHAIN точки наблюдения 0. Выход CHAINOUT выводится из регистра. Компаратор поля адреса/управления управляет разрешением записи регистра. Входом в регистр является значение поля данных компаратора. Регистр CHAINOUT сбрасывается, если выполнена запись в регистр значения управления или nTRST имеет НИЗКИЙ уровень. RANGE может быть подключен к другому блоку точек наблюдения. В логике EmbeddedICE ядра ARM7TDMI выход RANGEOUT точки наблюдения 1 подключен к входу RANGE точки наблюдения 0. Данное подключение позволяет связать две точки наблюдения для детекции условий, которые возникают одновременно, например, проверка на попадание в диапазон. ENABLE. Если возникает совпадение в точке наблюдения, то внутренний сигнал BREAKPT устанавливается, только если установлен бит ENABLE. Данный бит присутствует только в регистре значения. Он не может быть маскирован. Для каждого из бит 7:0 в регистре значения управления предусмотрен соответствующий бит в регистре маске управления. Данные биты позволяют удалить зависимость от каждого из сигналов. Б.13 Программирование точек прерывания Точки прерывания классифицируются на аппаратные точки прерывания и программные точки прерывания: Аппаратные точки прерывания, как правило, контролируют значение адреса и могут быть отнесены к любому положению кода, в т.ч. ПЗУ и самомодифицирующемуся коду. Программные точки прерывания контролируют специальные битовые наборы, выборка которых производится по любому адресу. Таким образом, одна точка наблюдения EmbeddedICE может использоваться для поддержки любого количества программных точек прерывания. Программные точки прерывания, как правило, могут устанавливаться только в ОЗУ, т.к. выбранный для срабатывания программной точки прерывания специальный битовый набор требует замещения инструкции. Б.13.1 Аппаратные точки прерывания Чтобы настроить блок точки наблюдения для работы с аппаратными точками прерываниями при выборке инструкций необходимо придерживаться следующей последовательности действий:
Б.13.2 Программные точки прерывания Чтобы настроить блок точки наблюдения на генерацию программных точек прерывания при выборке инструкции, состоящей из особого битового набора, необходимо выполнить следующую последовательность:
Прим.: программировать регистр значения адреса не нужно. Установка точки прерывания Для установки программной точки прерывания:
Отмена точки прерывания Для отмены точки прерывания необходимо восстановить инструкцию по исходному адресу Б.14 Программирование точек наблюдения Чтобы настроить блок точек наблюдения для работы в качестве точек наблюдения при доступе к данным необходимо придерживаться следующей последовательности:
Прим.: все, что приведено выше, является примерами программирования регистров точки наблюдения для генерации точек наблюдения и точек прерывания. Также возможно множество других способов программирования регистров. Например, простым способом задания точек прерывания в диапазоне адресов является установка одного или более бит в регистре адресной маски. Б.15 Регистр управления отладкой Регистр управления отладкой имеет 3 битный размер. Биты управления записью возникают при записи в регистр с битом чтения/записи в ВЫСОКОМ состоянии. Биты управления чтением возникает в ходе чтения регистра с битом чтения/записи в НИЗКОМ состоянии. На рисунке Б.9 демонстрируется назначение каждого бита этого регистра.
Если бит устанавливается бит 2 INTDIS, то сигнал разрешения прерывания ядра IFEN принимает НИЗКИЙ уровень. Таким образом, в ходе отладки или при установке бита INTDIS отключаются все прерывания IRQ и FIQ, а DBGACK имеет ВЫСОКИЙ уровень. Действие сигнала IFEN демонстрируется в таблице Б.7. Таблица Б.7. Сигналы управления прерываниями
На рисунке Б.11 демонстрируется, что значение бита 1, записанное в регистр управления, синхронизировано и затем перед подачей к процессору подвергается операции ИЛИ с внешним сигналом DBGRQ. Выход элемента ИЛИ - сигнал DBGRQI, который выводится из макроячейки. Синхронизация между битом управления 1 DBGRQI помогает в многопроцессорных приложениях. Синхронизирующая защелка открывает, только если TAP-контроллер находится в состоянии "Запуск тестир./свободен". Это позволяет установиться введенным условиям отладки во всех процессорах в системе. После того, как все условия установятся во всех процессорах, они могут быть применены одновременно путем ввода состояния "Запуск тестир./свободен". В случае DBGACK значение DBGACK, поступающее из ядра, подвергается операции ИЛИ со значением, хранящимся в бите 0, для генерации внешнего значения DBGACK, которое могут наблюдать периферийные устройства ядра ARM7TDMI. Это позволяет отладочной системе сигнализировать остальной части системы, что ядро продолжает находится в состоянии отладки, даже при выполнении доступов на системной скорости, когда внутренний сигнал ядра DBGACK имеет НИЗКИЙ уровень. Б.16 Регистр статуса отладки Регистр статуса отладки имеет 5 битный размер. Если в него выполняется запись с установленным битом чтения/записи, то происходит запись битов статуса. Если он считывается со сброшенным битом чтения/записи, то считывается значение бит статуса. Формат регистра статуса отладки показан на рисунке Б.10.
Назначение каждого бита в этом регистре следующее: Бит 4. Позволяет считать TBIT. Позволяет определить отладчику состояние процессора и, следовательно, определить, инструкция из какого набора выполняется. Бит 3. Позволяет отладчику определить завершение доступа к памяти из состояния отладки. Бит 2. Позволяет считать состояние сигнала разрешения прерывания ядра IFEN. Позволяет считать состояние сигнала NMREQ, поступающего из ядра, синхронизированного с TCK. Это позволяет отладчику определить завершение доступа к памяти из состояния отладки. Биты 1:0. Позволяет считать синхронизированные версии значений DBGRQ и DBGACK. Структура регистров статуса отладки и управления отладкой показана на рисунке Б.11.
Б.17 Связывание точек прерывания и точек наблюдения Связать блоки точек наблюдения 1 и 0 можно с помощью входов CHAIN и RANGE. Использование CHAIN позволяет обеспечить срабатывание точки наблюдения 0, только если предварительно сработала точка наблюдения 1. Использование RANGE позволяет организовать проверку на попадание в диапазон путем сочетания выходов обеих точек наблюдения. Б.17.1 Пример связывания точек прерывания и точек наблюдения Примем следующие обозначения:
Сигнал CHAINOUT Сигнал CHAINOUT формирует следующим образом:
Выход CHAINOUT регистра точки наблюдения 1 является входом CHAIN точки наблюдения 0. Этот вход CHAIN позволяет задавать сложные конфигурации точек наблюдения и точек прерывания. Прим.: для точки наблюдения 1 не предусмотрен вход CHAIN, а у точки наблюдения 0 нет выхода CHAIN. Представим, например, запрос отладчиком на точку прерывания в инструкции по адресу YYY, когда запущен процесс XXX в многопроцессорной системе. Если идентификационный код текущего процесса записан в памяти, то можно реализовать указанную выше функцию с соединенными вместе точками наблюдения и прерывания. Адрес точки наблюдения указывает на известное положение в памяти, в котором хранится идентификационный код текущего процесса, данные точки наблюдения указывают на идентификационный код требуемого процесса, а бит ENABLE установлен в выключенное состояние. Выход адресного компаратора точки наблюдения используется для управления разрешением записи в защелку CHAINOUT. Вход в защелку является выходом компаратора данных из той же самой точки наблюдения. Выход защелки управляет входом CHAIN компаратора точки прерывания. Адрес YYY запоминается в регистре точке прерывания, а когда устанавливается вход CHAIN, то это означает совпадение адреса точки прерывания и точка прерывания срабатывает корректно. Б.17.2 Сигнал RANGEOUT Значение сигнала RANGEOUT определяется следующим образом:
Выход RANGEOUT регистра точки наблюдения 1 поступает к входу RANGE регистра точки наблюдения 0. Вход RANGE позволяет связать две точки наблюдения вместе, чтобы образовать диапазон точек прерывания. Например, если точка прерывания возникает, когда адрес относится к первым 256 байтам памяти, но не к первым 32 байтам, то программировать точки наблюдения необходимо следующим образом: Для точки наблюдения 1:
Для точки наблюдения 0:
Б.18 Синхронизация EmbeddedICE EmbeddedICE оцифровывает входы EXTERN[1] и EXTERN[0] по падающим фронтам ECLK. Поэтому, для этих сигналов необходимо обеспечить достаточность времени установления и удержания. См. раздел 7 "Статические и динамические характеристики" для изучения деталей по требуемым временам установления и удержания для этих сигналов. Б.19 Ограничения по программированию Блоки точек наблюдения логики EmbeddedICE должны программироваться, только если синхронизация ядра остановлена. Это может быть достигнуто путем перевода ядра в состояние отладки. Причиной данного ограничения является возможность асинхронно установиться сигналу BREAKPT на входе в ядро, если ядро продолжит работу на частоте ECLK, когда логика EmbeddedICE будет переведена на синхронизацию на частоте TCK. Данное ограничение можно не учитывать, если в качестве MCLK и TCK выступает один и тот же сигнал синхронизации или если известно, что условие точки наблюдения или точки прерывания возникает только по истечении некоторого времени после программирования логики EmbeddedICE. Прим.: данное ограничение в любом случае не распространяется на регистр управления отладкой или регистр статуса.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|