В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Приложение Б

Детальное описание отладки

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

Б.1. Цепи сканирования и JTAG-интерфейс

Ядро ARM7TDMI содержит три цепи сканирования JTAG-типа. Они позволяют выполнять отладку и конфигурировать логику EmbeddedICE.

TAP-контроллер JTAG-типа управляет цепями сканирования. Более детальная информация по техническим характеристикам JTAG приведена в стандарте IEEE 1149.1 - 1990 Стандарт по архитектуре порта доступа к функциям тестирования и граничного сканирования.

Кроме того, предусмотрена поддержка опциональной четвертой цепи сканирования. Она необходима в случае использования внешней цепи граничного сканирования внутри корпусного исполнения. Сигналы управления для данной цепи сканирования описаны в приложении Б "Цепь сканирования 3".

Прим.: ячейки сканирования не полностью совместимы с JTAG.

В следующих разделах описываются:

  • Реализация цепи сканирования
  • Цифровой автомат TAP-контроллера

Б.1.1 Реализация цепи сканирования

Каскады сканирования обозначаются следующим образом:

  1. Цепь сканирования 0
  2. Цепь сканирования 1
  3. Цепь сканирования 2

Цепи сканирования показаны на рисунке Б.1.

Архитектура цепей сканирования ядра ARM7TDMI
Рисунок Б.1. Архитектура цепей сканирования ядра ARM7TDMI

Цепь сканирования 0

Цепь сканирования 0 позволяет выполнить доступ к любым периферийным устройствам ядра ARM7TDMI, в т.ч. шина данных. Функции цепи сканирования позволяют выполнять тестирование внутренних устройств (EXTEST) и последовательное тестирование ядра (INTEST). Используется следующий порядок ввода и вывода данных:

  1. Шина данных, разряды 0..31.
  2. Сигналы управления.
  3. Шина адреса, разряды 31..0.
    A[0] сканируется первым.

Цепь сканирования 1

Цепь сканирования 1 - поднабор цепи сканирования 0. Она выполняет последовательный доступ к шине данных ядра D[31:0] и сигналу BREAKPT. Всего в цепи сканирования находятся 33 бита. Используется следующий порядок от последовательного ввода до последовательного вывода данных:

  1. Шина данных, разряды 0..31.
  2. Бит BREAKPT, сдвигается первым.

Цепь сканирования 2

Цепь сканирования 2 разрешает доступ к регистрам логики эмуляции EmbeddedICE. См. подробности в параграфе "Регистры тестовых данных".

Б.1.2 Цифровой автомат TAP-контроллера

Процесс последовательного тестирования и отладки наилучшим образом объясняется в связке с цифровым автоматом JTAG. На рисунке Б.2 показаны изменения состояний, которые происходят в TAP-контроллере.

Изменение состояний контроллера доступа к функциям тестирования
Рисунок Б.2. Изменение состояний контроллера доступа к функциям тестирования

Взято из стандарта IEEE 1149.1-1990. Copyright 1994-2001 IEEE. Все права зарезервированы.

Б.2 Сброс TAP-контроллера

Интерфейс граничного сканирования (JTAG) содержит контроллер цифрового автомата, именуемый TAP-контроллером. Для перевода TAP-контроллера в корректное состояние после подачи питания, необходимо подать импульс сброса на вход nTRST:

  • Если интерфейс граничного сканирования или логика EmbeddedICE используются, то на вход nTRST необходимо подать НИЗКИЙ уровень, а затем ВЫСОКИЙ.
  • Если интерфейс граничного сканирования или логика EmbeddedICE не используется, то на вход nTRST можно длительно приложить НИЗКИЙ уровень.

Прим: наличие синхронизации на линии TCK необязательно для выполнения сброса.

Сигнал nTRST:

  1. Выбирает системный режим. Это означает, что ячейки граничного сканирования не перехватывают какой-либо из сигналов, проходящего между внешней системой и ядром.
  2. Выбирает инструкцию IDCODE.

    Если TAP-контроллер переходит в состояние "СДВИГ РД" и на TCK присутствуют импульсы, то содержимое идентификационного регистра передается через линию TDO.

  3. Переводит состояние цифрового автомата TAP-контроллера в состояние "Сброс логики тестирования".
  4. Устанавливает значение регистра выбора цепи сканирования равным 0x3, чем выбирая внешнюю цепь граничного сканирования (при ее наличии).

Прим.: nTRST необходимо использовать для сброса интерфейса граничного сканирования как минимум однократно после подачи питания.

После этого цифровой автомат TAP-контроллера может быть переведен в состояние "Сброс логики тестир." для последующего сброса интерфейса граничного сканирования.

Б.3 Подтягивающие резисторы

Стандарт IEEE 1149.1 подразумевает, что сигналы nTRST, TDI и TMS должны иметь внутренние подтягивающие резисторы. Для минимизации потребления статического тока, данные резисторы не введены в состав ядра ARM7TDMI . Следовательно, на четырех входах интерфейса тестирования nTRST, TDI, TMS и TCK должны быть сформированы корректные логические уровни для достижения нормального функционирования схемы.

Б.4 Регистр инструкции

Регистр инструкции характеризуется 4-битной длиной.

Бит паритета не предусмотрен.

В состоянии "Захват РИ" в регистр инструкции загружается фиксированное значение 0001.

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

Б.5 Общеиспользуемые инструкции

В таблице Б.1 приведен перечень общеиспользуемых инструкций.

Таблица Б.1. Общеиспользуемые инструкции

Инструкция Двоичный код Шестнадцатиричный код
EXTEST 0000 0x0
SCAN_N 0010 0x2
SAMPLE/PRELOAD 0011 0x3
RESTART 0100 0x4
CLAMP 0101 0x5
HIGHZ 0111 0x7
CLAMPZ 1001 0x9
INTEST 1100 0xC
IDCODE 1110 0xE
BYPASS 1111 0xF

При последующем описании инструкций полагается, что TDI и TMS оцифровываются по нарастающему фронту TCK, а все изменения выхода TDO выполняются по падающему фронту TCK.

Б.5.1 EXTEST (0000)

Инструкция EXTEST позволяет перевести выбранную цепь сканирования в режим тестирования. Данная инструкция выполняет подключение выбранной цепи сканирования между TDI и TDO.

После записи в регистр инструкции EXTEST все ячейки сканирования переходят в их режим тестирования:

  • В состоянии "Захват РД" входы от системной логики и выходы ячеек сканирования захватываются ячейками сканирования.
  • В состоянии "Сдвиг РД" предварительно захваченные тестовые данные выводятся на линии TDO, при этом новые тестовые данные вводятся через вход TDI. Эти данные сразу поступают к системной логике и системным выводам.

Б.5.2 SCAN_N (0010)

Инструкция SCAN_N подключает регистр выбора пути сканирования между TDI и TDO:

  • В состоянии "Захват РД" в регистр помещается фиксированное значение 1000.
  • В состоянии "Сдвиг РД" идентификационный номер желаемой цепи сканирования вводится в регистр выбора пути сканирования.
  • В состоянии "Модиф. РД" регистр сканирования выбранной цепи сканирования подключается между TDI и TDO и остается подключенным до последующего ввода инструкции SCAN_N.
  • После сброса цепь сканирования 3 выбирается по умолчанию.

Регистр выбора пути сканирования в данной реализации характеризуется 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:

  • В состоянии "Захват РД" регистр BYPASS захватывает логический 0.
  • В состоянии "Сдвиг РД" тестовые данные вводятся в регистр bypass через TDI и выводятся через TDO с задержкой в один цикл TCK. Первый выводимый бит равен 0.
  • В состоянии "Модиф. РД" содержимое регистра bypass не затрагивается.

Б.5.6 HIGHZ (0111)

Данная инструкция подключает 1-битный сдвиговый регистр, регистр BYPASS, между TDI и TDO. После загрузки инструкции HIGHZ в регистр инструкции шина адреса A[31:0], шина данных D[31:0], nRW, nOPC, LOCK, MAS[1:0], и nTRANS переходят в высокоимпедансное состояние, а внешний сигнал HIGHZ переходит в ВЫСОКОЕ состояние. Данные действия аналогичны действиям при переводе сигнала TBE в НИЗКОЕ состояние:

  • В состоянии "Захват РД" регистром bypass захватывается логический 0.
  • В состоянии "Сдвиг РД" тестовые данные вводятся в регистр bypass с помощью TDI и выводятся через TDO после задержки в один цикл TCK. Первым выводимым битом является 0.
  • В состоянии "Модиф. РД" состояние регистра bypass не затрагивается.

Б.5.7 CLAMPZ (1001)

Данная инструкция подключает 1-битный сдвиговый регистр, регистр BYPASS, между TDI и TDO.

Если инструкция CLAMPZ загружена в регистр инструкции, то все 3-стабильные выводы переходят в неактивное состояние, но данные, подаваемые на выход ячеек сканирования, поступают из ячеек сканирования. Данная инструкция предназначена для гарантирования того, что в ходе производственного тестирования каждый выход может быть отключен, если его значением является логический 0 или логическая 1:

  • В состоянии "Захват РД" регистр bypass захватывает логический 0.
  • В состоянии "Сдвиг РД" тестовые данные вводятся в регистр bypass через вывод TDI и выводятся TDO с задержкой в одни цикл TCK. Первым выводимым битом является 0.
  • В состоянии "Модиф. РД" содержимое регистра bypass не нарушается.

Б.5.8 INTEST (1100)

Инструкция INTEST переводит выбранную цепь сканирования в тестовый режим:

  • Инструкция INTEST подключает выбранную цепь сканирования между TDI и TDO.
  • Если инструкция INTEST загружена в регистр инструкции, то все ячейки сканирования переходят в их тестовый режим работы.
  • В состоянии "Захват РД" захватываются значения данных, поступающие из логики ядра на выход ячеек сканирования, а также значения данных, поступающие из системной логики на вход ячеек сканирования.
  • В состоянии "Сдвиг РД" предварительно зафиксированные тестовые данные выводятся из цепи сканирования через вывод TDO, при этом, новые тестовые данные вводятся через вывод TDI.

Инструкция INTEST позволяет добиться пошаговой работы ядра.

Б.5.9 IDCODE (1110)

Инструкция IDCODE подключает регистр идентификационного кода устройства или идентификационный регистр между TDI и TDO. Данный регистр является 32-разрядным и позволяет считать через TAP-контроллер код производителя, серийный номер и версию компонента. Информация по формату идентификационного регистра приведена в параграфе "Регистр идентификационного кода ядра ARM7TDMI".

После загрузки инструкции IDCODE в регистр инструкции все ячейки сканирования переходят в их нормальный системный режим работы:

  • В состоянии "Захват РД" идентификационный код захватывается идентификационным регистром.
  • В состоянии "Сдвиг РД" предварительно захваченный идентификационный код выводится из идентификационного регистра через вывод TDO, при этом данные вводятся в идентификационный регистр через вывод TDI.
  • В состоянии "Модиф. РД" состояние идентификационного регистра не повреждаются.

Б.5.10 BYPASS (1111)

Инструкция BYPASS подключает 1-разрядный сдвиговый регистр, регистр bypass, между выводами TDI и TDO.

Если инструкция BYPASS загружается в регистр инструкции, то все ячейки сканирования переходят в их нормальный системный режим работы. Инструкция BYPASS не оказывает влияния на системные выводы:

  • В состоянии "Захват РД" регистр bypass захватывает логический 0.
  • В состоянии "Сдвиг РД" тестовые данные вводятся в регистр bypass через вывод TDI и выводятся через вывод TDO с задержкой в один цикл TCK. Первый выводимый бит равен 0.
  • В состоянии "Модиф. РД" содержимое регистра bypass не нарушается. Все неиспользуемые коды инструкций по умолчанию выполняются, как инструкция BYPASS.

Прим.: В состоянии отладки BYPASS не позволяет процессору выйти из состояния отладки или синхронизироваться сигналом MCLK для доступа на системной скорости. Чтобы выполнить это необходимо использовать инструкцию RESTART.

Б.6 Регистры тестовых данных

Предусмотрено семь регистров тестовых данных, которые можно подключить между выводами TDI и TDO:

  • Регистр Bypass
  • Регистр идентификационного кода ядра ARM7TDMI
  • Регистр инструкции
  • Регистр выбора пути сканирования
  • Цепи сканирования 0, 1, 2 и 3

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

Б.6.1 Регистр Bypass

Назначение: обход устройства в ходе в ходе сканирующего тестирования, обеспечивая путь между TDI и TDO.

Размер: 1 бит.

Режим работы: если текущей инструкцией в регистре инструкции является BYPASS, то последовательные данные передаются с входа TDI на выход TD

  • в состоянии "Сдвиг РД" с задержкой в один цикл TCK. Параллельный выход из регистра не предусмотрен.

    В состоянии "Захват РД" загружается логический 0 через параллельный вход регистра bypass.

    Б.6.2 Регистр идентификационного кода ядра ARM7TDMI

    Назначение: считывание 32-разрядного идентификационного кода устройства. Дополнительный программируемый идентификационный код не предусмотрен.

    Размер: 32 бита. Формат регистра показан на рисунке Б.3.

    Формат регистра идентификационного кода
    Рисунок Б.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. Назначение номеров ячеек сканирования

    Номер ячейки сканирования Функция
    0 Сканирующее тестирование макроячейки
    1 Отладка
    2 Программирование логики EmbeddedICE
    3* Внешняя цепь граничного сканирования
    4 Зарезервировано
    8 Зарезервировано
    * реализуется разработчиком ASIC.

    Б.6.5 Цепи сканирования 0, 1, 2 и 3

    Они предназначены для предоставления доступа к логике ядра и логике EmbeddedICE для нужд программирования. Их подробное описание приведено ниже.

    Цепь сканирования 0 и 1

    Назначение: разрешает доступ к процессорному ядру для тестирования и отладки.

    Размер: цепь сканирования 0: 105 бит, цепь сканирования 1: 33 бита

    Каждая ячейка цепи сканирования довольно проста и состоит из последовательного регистра и мультиплексора (см. рисунок Б.4). Ячейки сканирования выполняют две основные функции:

    • ЗАХВАТ
    • СДВИГ.

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

    Входная ячейка сканирования
    Рисунок Б.4. Входная ячейка сканирования

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

    Все сигналы управления цепей сканирования генерируются внутренне TAP-контроллером. Действие TAP-контроллера определяется текущей инструкцией и состоянием цифрового автомата TAP-контроллера.

    Предусмотрено три основных режима работы цепей сканирования: INTEST, EXTEST и SYSTEM. Они выбираются с помощью различных инструкций TAP-контроллера:

    • В режиме INTEST выполняется внутреннее тестирование ядра. Последовательно-сканируемые данные подаются в ядро и результирующие выходы захватываются выходными ячейками, а затем выводятся в последовательном формате.
    • В режиме EXTEST данные сканируются на выходах ядра и поступают во внешнюю систему. Входные системные данные захватываются во входных ячейках, а затем выводятся сдвигом.
    • В режиме SYSTEM ячейки сканирования свободны. Системные данные поступают на входы, а выходы ядра подаются в систему.

    Прим.:Ячейки сканирования не полностью совместимы со стандартом JTAG, т.к. не содержат ступени модификации. Следовательно, пока данные передаются по цепи сканирования, содержимое ячейки сканирования не изолируется от выхода. После данных операций вывод из ячейки сканирования в ядро или во внешнюю систему может изменяться каждый цикл сканирования. Это не оказывает влияние на ядро ARM7TDMI, т.к. внутреннее состояние не изменяется до начала его синхронизации. Однако остальная часть системы должна учитывать, что каждый выход может изменяться асинхронно, т.к. данные перемещаются по цепи сканирования. Данную особенность должна учитывать внешняя логика, чтобы не оказать негативного влияния на остальную часть системы.

    Цепь сканирования 0

    Цепь сканирования 0 реализована в основном для внутреннего тестирования EXTEST и тестирования ядра INTEST. Цепь сканирования 0 выбирается с помощью инструкции SCAN_N (см. параграф "SCAN_N (0010)").

    INTEST позволяет выполнить последовательное тестирование ядра. TAP-контроллер должен быть переведен в режим INTEST после выбора цепи сканирования 0:

    • В состоянии "Захват РД" текущее состояние выходов ядра логики захватывается выходными ячейками.
    • В состоянии "Сдвиг РД" захваченные ранее данные передаются сдвигом, при этом, новые тестовые данные вводятся, таким образом, прикладывая известные уровни к входам.
    • В состоянии "Запуск тестир./свободен" ядро тактируется. Как правило, TAP-контроллер проводит только один цикл в состоянии "Запуск тестир./свободен". После этого вся операция может быть повторена.

    Описание синхронизации ядра в ходе тестирования и отладки приведено в параграфе "Синхронизация ядра ARM7TDMI".

    EXTEST позволяет выполнить внутреннее тестирование, которое полезно для проверки подключений между устройствами на печатной плате. TAP-контроллер должен быть переведен в режим EXTEST после выбора цепи сканирования 0:

    • В состоянии "Захват РД" текущие входы логики ядра, поступающие из системы, захватываются во входных ячейках.
    • В состоянии "Сдвиг РД" захваченные данные выводится сдвигом, а новые последовательные тестовые данные вводятся, тем самым, подавая известные значения на выходы ядра.
    • В состоянии "Модиф. РД" на выходах появляются значения, переданные в ячейки сканирования шины данных D[31:0]. Появление значений на всех остальных выходах происходит сразу после ввода данных.

    Прим.: в состоянии "Запуск тестир./свободен" ядро не тактируется.

    Операция после этого может быть повторена.

    Цепь сканирования 1

    Основным назначением цепи сканирования 1 является отладка, хотя она может использоваться и для EXTEST на шине данных. Цепь сканирования 1 выбирается с помощью инструкции SCAN_N TAP-контроллера. Отладка аналогична INTEST, поэтому, необходимо следовать описанной выше процедуре для цепи сканирования 0.

    Цепь сканирования 1 характеризуется 33-разрядной длиной, где 32 разряда используются для хранения данных и 1 разряд предусмотрен для ячейки сканирования на входе ядра BREAKPT. 33-й бит используется для следующих целей:

    1. При нормальных условиях INTEST он позволяет подать известное значение на вход BREAKPT.
    2. В ходе тестирования EXTEST он захватывает значение, которое подается на вход BREAKPT.
    3. В ходе отладки значение, размещенное в 33-м разряде, управляет переводом ядра ARM7TDMI к системной частоте синхронизации перед выполнением инструкции. См. более детальное описание в параграфе "Доступ на системной скорости".
    4. После входа ядра ARM7TDMI в состояние отладки вначале данный разряд захватывается и выводится, а затем его значение считывает отладчик и сбрасывает бит 33, если ядро перешло в состояние отладки из-за точки прерывания, и устанавливает бит 33, если отладка инициирована точкой наблюдения.

    Цепь сканирования 2

    Назначение: разрешает доступ к регистрам макроячейки EmbeddedICE. Используется следующий порядок цепи сканирования, от TDI к TDO:

    1. Биты 4..0 регистра адреса.
    2. Биты 31..0 значения данных.

    См. "Структурная схема EmbeddedICE".

    Размер: 38 бит.

    Для осуществления доступа к данному последовательному регистру, необходимо вначале выбрать цепь сканирования 2 с помощью инструкции SCAN_N TAP-контроллера. После этого TAP-контроллер должен быть переведен в режим INTEST.

    • В состоянии "Захват РД" никакие действия не выполняются.
    • В состоянии "Сдвиг РД" данные передаются сдвигом в последовательный регистр. Разряды 32..36 определяют адрес регистра логики EmbeddedICE, которому осуществляется доступ.
    • В состоянии "Модиф. РД" данный регистр или считывается или записывается в зависимости от значения бита 37, (0 соответствует чтению).

    Цепь сканирования 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, внутренне генерируемый из TCK.

    В ходе нормальной работы, ядро тактируется сигналом MCLK, а внутренняя логика удерживает DCLK в НИЗКОМ состоянии. Если ядро ARM7TDMI находится в состоянии отладки, то ядро тактируется сигналом DCLK под управлением цифрового автомата TAP-контроллера, а MCLK продолжает генерировать, но ничем не используется. Выбранный источник синхронизации поступает на линию ECLK для синхронизации внешней системы.

    Прим.: когда ядро ЦПУ находится в состоянии отладки и синхронизируется сигналом DCLK, то nWAIT не оказывает никакого влияния на временную диаграмму доступа.

    Б.7.1 Переключение синхронизации в процессе отладки

    Когда ядро ARM7TDMI вводит состояние отладки, то оно должно переключиться от MCLK к DCLK. Данная операция выполняется автоматически логикой ядра ARM7TDMI. При входе в состояние отладки ядро устанавливает DBGACK, когда MCLK имеет ВЫСОКИЙ уровень. Переключение между двумя сигналами синхронизации происходит по следующему падающему фронту MCLK. Процесс переключения синхронизации показан на рисунке Б.5.

    Переключение синхронизации при входе в состояние отладки
    Рисунок Б.5. Переключение синхронизации при входе в состояние отладки

    Ядро ARM7TDMI использует DCLK как основной источник синхронизации до завершения отладки. При выходе из отладки ядро должно вернутся к синхронизации сигналом MCLK. Это выполняется в следующей последовательности:

    1. Последняя инструкция отладочной последовательности вводится сдвигом в цепь сканирования шины данных синхронно с сигналом DCLK.
    2. В этой точке необходимо ввести инструкцию RESTART в регистр инструкции TAP-контроллера.
    3. После этого ядро ARM7TDMI автоматически вернется к синхронизации сигналом MCLK и запустит выборку инструкций из памяти на скорости 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-инструкций:

    STR R0, [R0]    ; Сохранили R0 перед использованием
    MOV R0, PC      ; Копируем PC в R0
    STR R0, [R0]    ; Теперь сохраняем PC в R0
    BX PC           ; Переход в состояние ARM
    MOV R8, R8      ; NOP - нет операции
    MOV R8, R8      ; NOP - нет операции
    

    Прим.: поскольку все инструкции Thumb имеют 16-разрядный формат, то наиболее простым способом действия при сдвиге цепи сканирования является повторение инструкции. Например, кодом BX R0 является 0x4700, поэтому, когда 0x47004700 сдвигается в цепь сканирования 1, отладчик не должен отслеживать половину шины, с которой процессор планирует считывать данные.

    Для определения состояния процессора можно использовать последовательность ARM-инструкций, показанных в примерах Б.1 и Б.2.

    Если процессор находится в состоянии ARM, то необходимо выполнить инструкцию из примера Б.1.

    Пример Б.1. Инструкция для определения состояния ядра

    STM R0, {R0-R15}
    

    Инструкция из примера Б.1 вызывает появление на шине данных содержимого регистров. После этого можно считывать и передавать сдвигом данные значения.

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

    После определения значений в текущем банке регистров может появиться потребность доступа других банкированных регистров. Для этого необходимо изменить режим. Как правило, смена режима происходит, только если ядро находится в привилегированном режиме. Однако в состоянии отладки смена может происходить из одного режима в любой другой режим. Отладчик должен восстановить исходный режим перед выходом из состояния отладки. Например, если отладчик получил запрос на возврат состояния регистров пользовательского режима и регистров FIQ-режима, при условии, что состояние отладки было введено в супервизорном режиме, то можно использовать последовательность инструкций из примера Б.2.

    Пример Б.2. Определение состояния регистров в пользовательском режиме и режиме быстрого прерывания (FIQ)

    STM R0, {R0-R15}  ; запоминаем текущие регистры
    MRS R0, CPSR
    STR R0, R0        ; запоминаем CPSR для определения текущего режима
    BIC R0, 0x1F      ; Сброс бит режима
    ORR R0, 0x10      ; Выбор пользовательского режима
    MSR CPSR, R0      ; Ввод ПОЛЬЗОВАТЕЛЬСКОГО режима
    STM R0, {R13,R14} ; Сохранение ранее невидимых регистров
    ORR R0, 0x01      ; Выбор FIQ-режима
    MSR CPSR, R0      ; Ввод FIQ-режима
    STM R0, {R8-R14}  ; Запоминаем банкированные FIQ-регистры
    

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

    В состоянии отладки, только следующие инструкции могут быть введены в конвейер инструкций для исполнения:

    • все операции обработки данных;
    • все инструкции чтения, записи, многократного чтения и многократной записи;
    • инструкции MSR и MRS.

    Б.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 показывается поведение ядра при выходе из состояния отладки.

    Последовательность выхода из состояния отладки
    Рисунок Б.6. Последовательность выхода из состояния отладки

    На рисунке 5.3 показано, что последний доступ к памяти происходит в цикле, в котором DBGACK принимает ВЫСОКИЙ уровень. В этой точки счетчик циклов может быть отключен. На рисунке Б.6 показано, что первый доступ памяти, в котором счетчик циклов не виден, возникает в цикле, в котором DBGACK принимает НИЗКИЙ уровень и, поэтому, в этой точке может быть восстановлена работа счетчика.

    Прим.: когда доступ на системной скорости возникает из состояния отладки, то ядро временно покидает состояние отладки и, поэтому, DBGACK может принять НИЗКИЙ уровень. Если имеются периферийные устройства, которые чувствительны к количеству доступов к памяти, то им необходимо предоставить информацию, что ядро еще находится в состоянии отладки. Путем программирования регистра управления макроячейки EmbeddedICE значение DBGACK может быть установлено к ВЫСОКОМУ уровню.

    Б.9 Поведение счетчика программы в ходе отладки

    Отладчик должен следить за тем, что происходит со счетчиком программы, чтобы была возможность перевести ядро ARM7TDMI в тоже место, из которого был прерван программный поток отладкой. Программный поток может быть прерван:

    • Точкой прерывания
    • Точкой наблюдения
    • Точкой наблюдения с другой исключительной ситуацией
    • Запросом отладки
    • Доступом на системной скорости

    Б.9.1 Точки прерывания

    Вход в состояние отладки из точек прерывания увеличивает счетчик программы на 4 адреса или 16 байт. Каждая инструкция, выполняемая в состоянии отладки, изменяет счетчик программы на один адрес или 4 байта. Традиционным способом выхода из состояния отладки после срабатывания точки прерывания является удаление точки прерывания и переход к ранее прерванному адресу.

    Например, если состояние отладки ядра ARM7TDMI введено из точки прерывания по заданному адресу и были выполнены две инструкции на отладочной скорости, то необходимо выполнить переход на минус семь адресов, т.к. до этого имело место приращение

    • на четыре адреса при входе в состояние отладки;
    • на два адреса при выполнении двух инструкций;
    • на один адрес при выполнении последнего перехода.

    Ниже приведена последовательность вводимых данных в цепь сканирования 1, где первым передается старший значащий бит. Значение первого разряда переходит к биту BREAKPT, а далее передается инструкция для цепи сканирования 1:

    0 E0802000; ADD R2, R0, R0
    1 E1826001; ORR R6, R2, R1
    0 EAFFFFF9; B-7, двоичное дополнение, seven instructions backwards
    

    После ввода ядром ARM7TDMI состояния отладки оно должно выполнить минимум две инструкции перед переходом, например, две операции NOP (MOV R0, R0). Для выполнения коротких переходов можно использовать операцию вычитания из счетчика программы с использованием его в качестве получателя результата:

    SUB PC, PC, #28.
    

    Б.9.2 Точки наблюдения

    Возврат к выполнению программы после ввода состояния отладки при срабатывании точки наблюдения выполняется таким же способом, описанным в "Точки прерывания".

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

    Б.9.3 Точка наблюдения с другой исключительной ситуацией

    Если одновременно со срабатыванием точки наблюдения возникает ситуация "Авар. данные", то ядро ARM7TDMI вводит состояние отладки в аварийном режиме. Вход в состояние отладки задерживается до перевода ядра в аварийный режим и выборки инструкции по аварийной вектору.

    Похожая последовательность происходит, когда прерывание или любая другая исключительная ситуация возникает при доступе к памяти, в котором выполняются условия срабатывания точки наблюдения. Ядро ARM7TDMI вводит состояние отладки в режиме исключительной ситуации. Отладчик должен проверить возникновение исключительной ситуации путем оценки текущего и предварительного режимов с помощью CPSR и SPSR, а также значения счетчика программы. Если исключительная ситуация имела место, то перед вводом состояния отладки пользователю необходимо предоставить выбор обработки исключительной ситуации.

    Вход в состояние отладки при возникновении исключительной ситуации вызывает инкрементирование счетчика программы на три инструкции, а не на четыре, и это необходимо учесть при вычислении адреса возврата перед выходом из состояния отладки. Например, предположим, что аварийная ситуация возникает при срабатывании точки наблюдения и 10 инструкций выполнены для определения данного случая. В этом случае можно использовать следующую последовательность для возврата к выполнению программы:

    0 E1A00000; MOV R0, R0
    1 E1A00000; MOV R0, R0
    0 EAFFFFF0; B -16
    

    Данный код приводит к переходу на аварийный вектор, вызывая выборку и исполнение инструкции по этому адресу.

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

    Б.9.4 Запрос отладки

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

    0 E1A00000; MOV R0, R0
    1 E1A00000; MOV R0, R0
    0 EAFFFFFA; B -6
    

    Данный код восстанавливает значение счетчика программы и перезапускает выполнение программы со следующей инструкции.

    Б.9.5 Доступ на системной скорости

    Если в состоянии отладки выполняется доступ на системной скорости, то значение PC увеличивается на три адреса. Инструкции, выполняемые на системной скорости, осуществляют доступ к системе памяти и, поэтому, возможно возникновение аварийной ситуации. Если аварийная ситуация возникает в ходе доступа к памяти на системной скорости, то ядро ARM7TDMI вводит аварийный режим перед возвратом в состояние отладки.

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

    Б.9.6 Вычисление адресов возврата

    Адреса возврата переходов вычисляются следующим образом:

    • для нормальных точек прерывания и точек наблюдения переход выполняется по адресу:
      - (4+N+3S),
    • для входа через запрос отладки DBGRQ или точку наблюдения с исключительной ситуацией переход выполняется по ссылке:
      - (3+N+3S),

    где N - количество инструкций, выполняемых на частоте отладки, в т.ч. последний переход, S - количество выполняемых инструкций на системной скорости.

    Б.10 Приоритеты и исключительные ситуации

    При срабатывании точки прерывания или при возникновении запроса на прерывание нормальный ход выполнения программы прерывается. Отладке может сопутствовать любой тип исключительной ситуации. Взаимодействие отладчика с другими исключительными ситуациями описывается "Поведение программного счетчика в ходе отладки". В данном разделе рассматриваются приоритеты для следующего:

    • Точки прерывания с аварийной предварительной выборкой
    • Прерывания
    • Аварийные данные

    Б.10.1 Точка прерывания с аварийной предварительной выборкой

    Если при выборке инструкции, которая снабжена точкой прерывания, возникает аварийная предварительная выборка, то обрабатывается авария, а точка прерывания игнорируется. Как правило, аварийная предварительная выборка возникает, например, когда доступ выполнен по виртуальному адресу, который физически не существует и, таким образом, возвращаемые данные являются некорректными. В таком случае, операционная система выполняет операцию обмена в странице памяти и возврат к предварительному недействительному адресу. На этот раз, когда инструкция загружается из памяти и срабатывает точка прерывания, ядро ARM7TDMI переходит в состояние отладки.

    Следовательно, аварийная предварительная выборка имеет более высокий приоритет, чем точка прерывания.

    Б.10.2 Прерывания

    Когда ядро ARM7TDMI вводит состояние отладки, прерывания автоматически отключаются. Если прерывание возникает перед тем, как было введено состояние отладки, ядро ARM7TDMI вводит состояние отладки в режиме прерывания. При входе в состояние отладки отладчик не может предполагать, что ядро ARM7TDMI находится в режиме, который ожидается программной пользователя. Для точного определения причины исключительной ситуации ядро ARM7TDMI должно проверить PC, CPSR и SPSR.

    Таким образом, отладка имеет более высокий приоритет, чем прерывание, но, тем не менее, ядро ARM7TDMI запоминает, какое прерывание возникло.

    Б.10.3 Аварийные данные

    Если при доступе, снабженного точкой наблюдения, возникает ситуация аварийных данных, то ядро ARM7TDMI вводит состояние отладки в аварийном режиме. Таким образом, точка наблюдения имеет более высокий приоритет, чем аварийная ситуация, но тем не менее ядро ARM7TDMI запоминает, что авария возникла.

    Б.11 Данные ячеек цепей сканирования

    В данном разделе приведены данные для:

    • Ячеек цепи сканирования 0
    • Ячеек цепи сканирования 1.

    Б.11.1 Ячейки цепи сканирования 0

    В таблице Б.3 приведен список сигналов ядра ARM7TDMI, которые поступают в цепь сканирования 0.

    Таблица Б.3. Ячейки цепи сканирования 0

    Номер Сигнал Тип
    1 D[0] Вход/выход
    2 D[1] Вход/выход
    3 D[2] Вход/выход
    4 D[3] Вход/выход
    5 D[4] Вход/выход
    6 D[5] Вход/выход
    7 D[6] Вход/выход
    8 D[7] Вход/выход
    9 D[8] Вход/выход
    10 D[9] Вход/выход
    11 D[10] Вход/выход
    12 D[11] Вход/выход
    13 D[12] Вход/выход
    14 D[13] Вход/выход
    15 D[14] Вход/выход
    16 D[15] Вход/выход
    17 D[16] Вход/выход
    18 D[17] Вход/выход
    19 D[18] Вход/выход
    20 D[19] Вход/выход
    21 D[20] Вход/выход
    22 D[21] Вход/выход
    23 D[22] Вход/выход
    24 D[23] Вход/выход
    25 D[24] Вход/выход
    26 D[25] Вход/выход
    27 D[26] Вход/выход
    28 D[27] Вход/выход
    29 D[28] Вход/выход
    30 D[29] Вход/выход
    31 D[30] Вход/выход
    32 D[31] Вход/выход
    33 BREAKPT Вход
    34 NENIN Вход
    35 NENOUT Выход
    36 LOCK Выход
    37 BIGEND Вход
    38 DBE Вход
    39 MAS[0] Выход
    40 MAS[1] Выход
    41 BL[0] Вход
    42 BL[1] Вход
    43 BL[2] Вход
    44 BL[3] Вход
    45 DCTLa Выход
    46 nRW Выход
    47 DBGACK Выход
    48 CGENDBGACK Выход
    49 nFIQ Вход
    50 nIRQ Вход
    51 nRESET Вход
    52 ISYNC Вход
    53 DBGRQ Вход
    54 ABORT Вход
    55 CPA Вход
    56 nOPC Выход
    57 IFEN Вход
    58 nCPI Выход
    59 nMREQ Выход
    60 SEQ Выход
    61 nTRANS Выход
    62 CPB Вход
    63 nM[4] Выход
    64 nM[3] Выход
    65 nM[2] Выход
    66 nM[1] Выход
    67 nM[0] Выход
    68 nEXEC Выход
    69 ALE Вход
    70 ABE Вход
    71 APE Вход
    72 TBIT Выход
    73 nWAIT Вход
    74 A[31] Выход
    75 A[30] Выход
    76 A[29] Выход
    77 A[28] Выход
    78 A[27] Выход
    79 A[26] Выход
    80 A[25] Выход
    81 A[24] Выход
    82 A[23] Выход
    83 A[22] Выход
    84 A[21] Выход
    85 A[20] Выход
    86 A[19] Выход
    87 A[18] Выход
    88 A[17] Выход
    89 A[16] Выход
    90 A[15] Выход
    91 A[14] Выход
    92 A[13] Выход
    93 A[12] Выход
    94 A[11] Выход
    95 A[10] Выход
    96 A[9] Выход
    97 A[8] Выход
    98 A[7] Выход
    99 A[6] Выход
    100 A[5] Выход
    101 A[4] Выход
    102 A[3] Выход
    103 A[2] Выход
    104 A[1] Выход
    105 A[0] Выход
    a. DCTL -выход процессора, используемый для управления защелкой однонаправленного вывода данных DOUT[31:0]. Сигнал не доступен со стороны периферийных устройств ядра ARM7TDMI. DCTL в этом документе более подробно не описывается.

    Б.11.2 Ячейки цепи сканирования 1

    В таблице Б.4 приведен список данных, составляющих цепь сканирования 1 ядра ARM7TDMI.

    Таблица Б.4. Ячейки цепи сканирования 1

    Номер Сигнал Тип
    1 D[0] Вход/выход
    2 D[1] Вход/выход
    3 D[2] Вход/выход
    4 D[3] Вход/выход
    5 D[4] Вход/выход
    6 D[5] Вход/выход
    7 D[6] Вход/выход
    8 D[7] Вход/выход
    9 D[8] Вход/выход
    10 D[9] Вход/выход
    11 D[10] Вход/выход
    12 D[11] Вход/выход
    13 D[12] Вход/выход
    14 D[13] Вход/выход
    15 D[14] Вход/выход
    16 D[15] Вход/выход
    17 D[16] Вход/выход
    18 D[17] Вход/выход
    19 D[18] Вход/выход
    20 D[19] Вход/выход
    21 D[20] Вход/выход
    22 D[21] Вход/выход
    23 D[22] Вход/выход
    24 D[23] Вход/выход
    25 D[24] Вход/выход
    26 D[25] Вход/выход
    27 D[26] Вход/выход
    28 D[27] Вход/выход
    29 D[28] Вход/выход
    30 D[29] Вход/выход
    31 D[30] Вход/выход
    32 D[31] Вход/выход
    33 BREAKPT Вход

    Б.12 Регистры точек наблюдения

    Два блока точек наблюдения, называемые Точка наблюдения 0 и Точка наблюдения 1, содержат по три пары регистров:

    • значение адреса и адресная маска;
    • значение данных и маска данных;
    • значение управления и маска управления.

    Каждый регистр программируется раздельно и имеет уникальный адрес. Назначение и положение регистров показано в таблице Б.5.

    Таблица Б.5. Назначение и положение регистров EmbeddedICE

    Адрес Размер, бит Назначение
    00000 3 Управление отладкой
    00001 5 Статус отладки
    00100 6 Регистр управления отладочным коммуникационным каналом
    00101 32 Регистр данных отладочного коммуникационного канала
    01000 32 Значение адреса точки наблюдения 0
    01001 32 Адресная маска точки наблюдения 0
    01010 32 Значение данных точки наблюдения 0
    01011 32 Маска данных точки наблюдения 0
    01100 9 Значение управления точки наблюдения 0
    01101 8 Маска управления точки наблюдения 0
    10000 32 Значение адреса точки наблюдения 1
    10001 32 Адресная маска точки наблюдения 1
    10010 32 Значение данных точки наблюдения 1
    10011 32 Маска данных точки наблюдения 1
    10100 9 Значение управления точки наблюдения 1
    10101 8 Маска управления точки наблюдения 1

    Б.12.1 Программирование и считывание регистров точки наблюдения

    Регистр точки наблюдения программируется путем сдвига данных в цепь сканирования 2 логики EmbeddedICE. Цепь сканирования - 32-разрядный сдвиговый регистр, состоящий из:

    • 32 бит поля данных;
    • 5 бит адресного поля;
    • бита чтения/записи.

    Данная структура показана на рисунке Б.7.

    Структурная схема EmbeddedICE
    Рисунок Б.7. Структурная схема EmbeddedICE

    Записываемые данные помещаются сдвигом в 32-разрядное поле данных. Адрес регистра сдвигается в 5-разрядное адресное поле. Лог. 1 сдвигается в позицию бита чтения/записи.

    Регистр считывается путем сдвига его адреса в адресное поле и сдвига 0 в позицию бита чтения/записи. 32-разрядное поле данных игнорируется.

    Адреса регистров показаны в таблице Б.5.

    Прим.: чтение или запись фактически происходит, когда ТАР-контроллер вводит состояние "Модиф. РД".

    Б.12.2 Использование регистров масок

    Для каждого значения регистра в регистровой паре предусмотрен регистр маски в том же формате. Установка бита регистра маски равным 1 приводит к исключению из процесса сравнения соответствующего бита регистра значения.

    Например, если требуется точка наблюдения в конкретном месте памяти, но значение данных неважно, то в регистр маски данных необходимо запрограммировать значение 0xFFFFFFFF, т.е. устанавливая все биты равными 1 для игнорирования всех данных на шине.

    Прим.: маска является XNOR-маской (исключающее ИЛИ-НЕ), а не традиционной И-маской. Если маскирующий бит равен 1, то результат сравнения в этой позиции всегда положителен, независимо от значения регистра или входного значения.

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

    Б.12.3 Регистры управления

    Регистры значения управления и маски управления расположены идентично в младших 8-разрядах, как показано на рисунке Б.8.

    Формат значения и маски управления точки наблюдения
    Рисунок Б.8. Формат значения и маски управления точки наблюдения

    Бит 8 регистра значения управления - это бит ENABLE и он не может маскироваться.

    Биты имеют следующее назначение:

    nRW, сравнивается с сигналом записи ядра для определения направления активности шины. nRW = 0 в цикле чтения и = 1 в цикле записи.
    MAS[1:0], сравнивается с сигналом MAS[1:0] ядра для определения размера данных на шине (см. табл. Б.6).

    Таблица Б.6. Кодирование сигналов MAS[1:0]

    Бит 1 Бит 0 Размер данных
    0 0 Байт
    0 1 Полуслово
    1 0 Слово
    1 1 Зарезервировано

    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 Аппаратные точки прерывания

    Чтобы настроить блок точки наблюдения для работы с аппаратными точками прерываниями при выборке инструкций необходимо придерживаться следующей последовательности действий:

    1. Запрограммируйте адрес инструкции, которую необходимо снабдить точкой прерывания, в регистр значения адреса.
    2. В состоянии ARM, запишите в биты [1:0] регистра адресной маски значение 11. В состоянии Thumb, в биты [1:0] регистра адресной маски необходимо записать значение 01.
    3. Если требуется создание зависимой от данных точки прерывания, которая срабатывает при совпадении не только адреса, но и кода инструкции, то запрограммируйте регистр значения данных. Если сравнение данных не требуется, то в регистр маски данных необходимо записать 0xFFFFFFFF, т.е. установить все биты равными 1. В противном случае запишите в него 0x00000000.
    4. Запрограммируйте регистр значения управления с nOPC = 0.
    5. Запрограммируйте регистр маски управления с nOPC = 0.
    6. Если необходимо различать выборку инструкций в пользовательском и непользовательском режимах, то запрограммируйте соответствующим образом значения бита nTRANS и его маски.
    7. При необходимости аналогичным образом запрограммируйте биты EXTERN, RANGE и CHAIN.
    8. Запрограммируйте равными 1 значения маскирующих бит для неиспользуемых значений управления.

    Б.13.2 Программные точки прерывания

    Чтобы настроить блок точки наблюдения на генерацию программных точек прерывания при выборке инструкции, состоящей из особого битового набора, необходимо выполнить следующую последовательность:

    1. Программируем значение 0xFFFFFFFF в регистр адресной маски, устанавливая все биты в единичное значение, т.о., исключая адрес из сравнения.
    2. Программируем регистр значения данных специальным битовым набором, который был выбран для представления программной точки прерывания.

      При программировании программной точки прерывания в режиме Thumb необходимо повторить 16-битный набор в обеих частях регистра значения данных. Например, если битовый набор "0xdeee", то необходимо запрограммировать 0xDEEEDEEE. Если выполнена выборка 16-разрядной инструкции, то EmbeddedICE сравнивает только действительную половину шины данных с содержимым регистра значения данных. Таким образом, можно использовать один регистр точки наблюдения для захвата программных точек прерывания в верхней и нижней частях шины данных.

    3. Запишите в регистр маски данных значение 0x00000000.
    4. Запрограммируйте регистр значения управления с nOPC = 0.
    5. Запрограммируйте регистр маски управления с nOPC = 0 и всеми остальными битами равными 1.
    6. Если необходимо различать выборку инструкций в пользовательском и непользователськом режиме, то необходимо соответствующим образом запрограммировать бит nTRANS в регистре значения управления и регистре маски управления.
    7. При необходимости аналогичным образом программируются биты EXTERN, RANGE и CHAIN.

    Прим.: программировать регистр значения адреса не нужно.

    Установка точки прерывания

    Для установки программной точки прерывания:

    1. Считайте инструкцию по желаемому адресу и запомните её.
    2. Запишите специальный битовый набор, представляющий программную точку прерывания по этому адресу.

    Отмена точки прерывания

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

    Б.14 Программирование точек наблюдения

    Чтобы настроить блок точек наблюдения для работы в качестве точек наблюдения при доступе к данным необходимо придерживаться следующей последовательности:

    1. Запрограммируйте регистр значения адреса значением адреса, по которому необходимо установить точку наблюдения за доступом к данным.
    2. Запрограммируйте значение 0x00000000 в регистр адресной маски.
    3. Если требуется организовать зависимую от данных точку наблюдения, которая срабатывает при совпадении не только адреса, но считываемых или записываемых данных, то необходимо запрограммировать регистр значения данных. Если значение данных не важно, то в регистр маски данных необходимо записать 0xFFFFFFFF, устанавливая все биты равными 1. В противном случае, в регистр маски данных необходимо записать 0x00000000.
    4. Запрограммируйте регистр значения управления со следующими установками: nOPC = 1, nRW = 0 при чтении или nRW= 1 при записи, значение бит MAS[1:0] определяется размером данных.
    5. Запрограммируйте регистр маски управления со следующими установками: nOPC = 0, nRW = 0, MAS[1:0] = 0, а все остальные биты равными 1. Можно установить nRW или MAS[1:0] равными 1, если точка наблюдения должна срабатывать при доступе в любом направлении (чтение или запись) и с любым размером данных.
    6. Если необходимо различать доступы в пользовательском и непользовательском режимах, то необходимо запрограммировать соответствующим образом бит nTRANS в регистрах значения управления и маски управления.
    7. При необходимости аналогичным образом программируются биты EXTERN, RANGE и CHAIN.

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

    Б.15 Регистр управления отладкой

    Регистр управления отладкой имеет 3 битный размер. Биты управления записью возникают при записи в регистр с битом чтения/записи в ВЫСОКОМ состоянии. Биты управления чтением возникает в ходе чтения регистра с битом чтения/записи в НИЗКОМ состоянии.

    На рисунке Б.9 демонстрируется назначение каждого бита этого регистра.

    Формат регистра управления отладкой
    Рисунок Б.9. Формат регистра управления отладкой

    Если бит устанавливается бит 2 INTDIS, то сигнал разрешения прерывания ядра IFEN принимает НИЗКИЙ уровень. Таким образом, в ходе отладки или при установке бита INTDIS отключаются все прерывания IRQ и FIQ, а DBGACK имеет ВЫСОКИЙ уровень. Действие сигнала IFEN демонстрируется в таблице Б.7.

    Таблица Б.7. Сигналы управления прерываниями

    DBGACK INTDIS IFEN Прерывания
    НИЗКИЙ НИЗКИЙ ВЫСОКИЙ Разрешаются
    ВЫСОКИЙ x НИЗКИЙ Отклоняются
    x ВЫСОКИЙ НИЗКИЙ Отклоняются

    На рисунке Б.11 демонстрируется, что значение бита 1, записанное в регистр управления, синхронизировано и затем перед подачей к процессору подвергается операции ИЛИ с внешним сигналом DBGRQ. Выход элемента ИЛИ - сигнал DBGRQI, который выводится из макроячейки.

    Синхронизация между битом управления 1 DBGRQI помогает в многопроцессорных приложениях. Синхронизирующая защелка открывает, только если TAP-контроллер находится в состоянии "Запуск тестир./свободен". Это позволяет установиться введенным условиям отладки во всех процессорах в системе. После того, как все условия установятся во всех процессорах, они могут быть применены одновременно путем ввода состояния "Запуск тестир./свободен".

    В случае DBGACK значение DBGACK, поступающее из ядра, подвергается операции ИЛИ со значением, хранящимся в бите 0, для генерации внешнего значения DBGACK, которое могут наблюдать периферийные устройства ядра ARM7TDMI. Это позволяет отладочной системе сигнализировать остальной части системы, что ядро продолжает находится в состоянии отладки, даже при выполнении доступов на системной скорости, когда внутренний сигнал ядра DBGACK имеет НИЗКИЙ уровень.

    Б.16 Регистр статуса отладки

    Регистр статуса отладки имеет 5 битный размер. Если в него выполняется запись с установленным битом чтения/записи, то происходит запись битов статуса. Если он считывается со сброшенным битом чтения/записи, то считывается значение бит статуса. Формат регистра статуса отладки показан на рисунке Б.10.

    Формат регистра статуса отладки
    Рисунок Б.10. Формат регистра статуса отладки

    Назначение каждого бита в этом регистре следующее:

    Бит 4. Позволяет считать TBIT. Позволяет определить отладчику состояние процессора и, следовательно, определить, инструкция из какого набора выполняется.

    Бит 3. Позволяет отладчику определить завершение доступа к памяти из состояния отладки.

    Бит 2. Позволяет считать состояние сигнала разрешения прерывания ядра IFEN. Позволяет считать состояние сигнала NMREQ, поступающего из ядра, синхронизированного с TCK. Это позволяет отладчику определить завершение доступа к памяти из состояния отладки.

    Биты 1:0. Позволяет считать синхронизированные версии значений DBGRQ и DBGACK.

    Структура регистров статуса отладки и управления отладкой показана на рисунке Б.11.

    Структура регистру управления и статуса отладки
    Рисунок Б.11. Структура регистру управления и статуса отладки

    Б.17 Связывание точек прерывания и точек наблюдения

    Связать блоки точек наблюдения 1 и 0 можно с помощью входов CHAIN и RANGE. Использование CHAIN позволяет обеспечить срабатывание точки наблюдения 0, только если предварительно сработала точка наблюдения 1. Использование RANGE позволяет организовать проверку на попадание в диапазон путем сочетания выходов обеих точек наблюдения.

    Б.17.1 Пример связывания точек прерывания и точек наблюдения

    Примем следующие обозначения:

    Av[31:0] - значение в регистре значения адреса
    Am[31:0] - значение в регистре адресной маски
    A[31:0] - шина адреса ядра ARM7TDMI
    Dv[31:0] - значение в регистре значения данных
    Dm[31:0] - значение в регистре маски данных
    D[31:0] - состояние шины данных ядра ARM7TDMI
    Cv[8:0] - значение в регистре значения управления
    Cm[7:0] - значение в регистре маски управления
    C[9:0] - комбинированная шина управления ядра ARM7TDMI, другие регистры точки наблюдения и сигнал EXTERN.

    Сигнал CHAINOUT

    Сигнал CHAINOUT формирует следующим образом:

    WHEN (({Av[31:0],Cv[4:0]} XNOR {A[31:0],C[4:0]}) OR {Am[31:0],Cm[4:0]} == 0xFFFFFFFFF)
    CHAINOUT = ((({Dv[31:0],Cv[7:5]} XNOR {D[31:0],C[7:5]}) OR {Dm[31:0],Cm[7:5]}) == 0x7FFFFFFFF)
    

    Выход CHAINOUT регистра точки наблюдения 1 является входом CHAIN точки наблюдения 0. Этот вход CHAIN позволяет задавать сложные конфигурации точек наблюдения и точек прерывания.

    Прим.: для точки наблюдения 1 не предусмотрен вход CHAIN, а у точки наблюдения 0 нет выхода CHAIN.

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

    Выход адресного компаратора точки наблюдения используется для управления разрешением записи в защелку CHAINOUT. Вход в защелку является выходом компаратора данных из той же самой точки наблюдения. Выход защелки управляет входом CHAIN компаратора точки прерывания. Адрес YYY запоминается в регистре точке прерывания, а когда устанавливается вход CHAIN, то это означает совпадение адреса точки прерывания и точка прерывания срабатывает корректно.

    Б.17.2 Сигнал RANGEOUT

    Значение сигнала RANGEOUT определяется следующим образом:

    RANGEOUT = ((({Av[31:0],Cv[4:0]} XNOR {A[31:0],C[4:0]}) OR {Am[31:0],Cm[4:0]}) == 0xFFFFFFFFF) AND
    ((({Dv[31:0],Cv[7:5]} XNOR {D[31:0],C[7:5]}) OR Dm[31:0],Cm[7:5]}) == 0x7FFFFFFFF)
    

    Выход RANGEOUT регистра точки наблюдения 1 поступает к входу RANGE регистра точки наблюдения 0. Вход RANGE позволяет связать две точки наблюдения вместе, чтобы образовать диапазон точек прерывания.

    Например, если точка прерывания возникает, когда адрес относится к первым 256 байтам памяти, но не к первым 32 байтам, то программировать точки наблюдения необходимо следующим образом:

    Для точки наблюдения 1:

    1. Программируем точку наблюдения 1 значением адреса 0x00000000 и адресной маской 0x0000001F.
    2. Сбрасываем бит ENABLE.
    3. Программируем все остальные регистры точки наблюдения 1 обычным способом, как точки прерывания. Адрес в пределах первых 32 байтах вызывает переход в ВЫСОКОЕ состояние выхода RANGE, но не вызывает срабатывание точки прерывания.

    Для точки наблюдения 0:

    1. Программируем точку наблюдения 0 значением адреса 0x00000000 и адресной маской 0x000000FF.
    2. Устанавливаем бит ENABLE.
    3. Программируем бит RANGE на совпадение с 0.
    4. Программируем все остальные регистры точки наблюдения 0 обычным способом, как точки прерывания. Если точка наблюдения 0 срабатывает, а точка наблюдения 1 нет, то вход RANGE точки наблюдения 0 равен 0, то точка прерывания срабатывает.

    Б.18 Синхронизация EmbeddedICE

    EmbeddedICE оцифровывает входы EXTERN[1] и EXTERN[0] по падающим фронтам ECLK. Поэтому, для этих сигналов необходимо обеспечить достаточность времени установления и удержания.

    См. раздел 7 "Статические и динамические характеристики" для изучения деталей по требуемым временам установления и удержания для этих сигналов.

    Б.19 Ограничения по программированию

    Блоки точек наблюдения логики EmbeddedICE должны программироваться, только если синхронизация ядра остановлена. Это может быть достигнуто путем перевода ядра в состояние отладки. Причиной данного ограничения является возможность асинхронно установиться сигналу BREAKPT на входе в ядро, если ядро продолжит работу на частоте ECLK, когда логика EmbeddedICE будет переведена на синхронизацию на частоте TCK.

    Данное ограничение можно не учитывать, если в качестве MCLK и TCK выступает один и тот же сигнал синхронизации или если известно, что условие точки наблюдения или точки прерывания возникает только по истечении некоторого времени после программирования логики EmbeddedICE.

    Прим.: данное ограничение в любом случае не распространяется на регистр управления отладкой или регистр статуса.



    <-- Предыдущая страница Оглавление Следующая страница -->