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

 
Пересюхтюмя


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





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





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


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





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


Отладочный интерфейс

В данном разделе приведено описание отладочного интерфейса процессора ARM7TDMI в следующей последовательности:

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

1. Общие сведения об отладочном интерфейсе

Отладочный интерфейс процессора ARM7TDMI выполнен на основе стандарта IEEE 1149.1 - 1990, Стандарт архитектуры порта доступа к функциям тестирования и граничного сканирования. Рекомендуется обратиться к данному стандарту для ознакомления с толкованием используемых терминов и для изучения состояний контроллера Порта доступа к функциям тестирования (TAP-контроллер). Блок-схема изменений состояний TAP-контроллера представлена на рисунке 5.2.

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

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

1.1 Стадии отладки

Запрос, поступивший через один из сигналов интерфейса отладки или внутренний функциональный блок, именуемый логикой эмуляции EmbeddedICE Logic, переводит процессор ARM7TDMI в состояние отладки. Ниже приведены события, которые активизируют отладку:

  • точка прерывания, выборка инструкции
  • точка наблюдения (watchpoint), доступ к данным
  • внешний запрос отладки.

После перевода в состояние отладки внутреннее состояние процессора ARM7TDMI может управляться с помощью последовательного интерфейса JTAG. Он позволяет загружать в последовательном формате инструкции в конвейер процессора без использования внешней шины данных. Например, после перевода в состояние отладки, инструкция Многократной записи (STM) может быть помещена на конвейер инструкций и это приведет к экспорту содержимого регистров ядра ARM7TDMI. Эти данные могут быть переданы в последовательном формате отладчику, не нарушая работы остальной части системы.

1.2 Синхронизация

Ядро ARM7TDMI использует два сигнала синхронизации:

  • MCLK - синхронизация памяти;
  • DCLK - внутренняя синхронизация отладки, генерируемая тестовой синхронизацией TCK.

В нормальном режиме работы ядро тактируется сигналом MCLK, а внутренняя логика удерживает DCLK в низком состоянии.

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

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

2. Отладочные системы

На рисунке 5.1 показана типичная отладочная система с использованием ядра ARM.

Типичная отладочная система
Рисунок 5.1. Типичная отладочная система

Отладочная система обычно состоит из трех частей:

  1. Отладчик
  2. Преобразователь протокола
  3. Отлаживаемое целевое устройство

Отладчик и преобразователь протокола являются системно-зависимыми.

2.1 Отладчик

В качестве отладчика выступает компьютер, на котором запущена отладочная программа, например, ARM Debugger for Windows (ADW). Отладчик позволяет вводить такие команды высокого уровня, как установка точки прерывания или проверка содержимого памяти.

2.2 Преобразователь протокола

Преобразователь протокола отвечает за преобразование команды высокого уровня отладчика в команды низкого уровня интерфейса JTAG процессора ARM7TDMI.

Как правило, подключение к компьютеру выполняется через расширенный параллельный порт (ЕРР).

Процессор ARM7TDMI содержит аппаратные расширения, которые упрощают отладку на самом низком уровне. Отладочные расширения:

  • позволяют приостановить выполнение программы;
  • проверить и модифицировать внутреннее состояние ядра;
  • просмотреть и изменить состояние системы памяти;
  • возобновить выполнение программы.

2.3 Отлаживаемое целевое устройство

Основные блоки отлаживаемого целевого устройства показаны на рисунке 5.2.

Блок-схема ARM7TDMI
Рисунок 5.2. Блок-схема ARM7TDMI

Ядро ЦПУ ARM

Ядро содержит аппаратную часть, поддерживающая отладку.

Логика EmbeddedICE

Это набор регистров и компараторов, используемых для генерации отладочных исключительных ситуаций, как, например, точки прерывания. Описание этого блока приведено в параграфе "Общие сведения о логике эмуляции EmbeddedICE".

TAP-контроллер

ТАР-контроллер управляет действием цепей сканирования через последовательный интерфейс JTAG.

3. Сигналы интерфейса отладки

Отладочный интерфейс состоит из трех основных внешних сигналов:

  • BREAKPT и DBGRQ - системные запросы процессора на ввод состояния отладки;
  • DBGACK - используется для сигнализации о нахождении ядра в состоянии отладки.

Прим.: Для полного разрешения отладочных функций процессора DBGEN необходимо перевести в высокое состояние. См. "Отключение EmbeddedICE".

3.1 Переход в состояние отладки

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

  • шину адреса
  • шину данных
  • сигналы управления.

Временная диаграмма аналогична внешне-сгенерированным точкам прерывания и наблюдения. Данные должны быть действительными по падающему фронту MCLK. Если инструкцию необходимо снабдить точкой прерывания, то сигнал BREAKPT должен иметь высокий уровень при следующем нарастающем фронте MCLK. Аналогично, при чтении или записи данных установка BREAKPT во время нарастающего фронта MCLK маркирует данные, как точка наблюдения.

Когда процессор переходит в состояние отладки, устанавливается сигнал DBGACK.

Временная диаграмма внешне-сгенерированных точек прерывания показана на рисунке 5.3.

Вход в состояние отладки
Рисунок 5. Вход в состояние отладки

Вход в состояние отладки по точке прерывания

Ядро ARM7TDMI определяет, что инструкция содержит точку прерывания еще при поступлении на конвейер, но ядро переходит в состояние отладки только при достижении такой инструкцией ступени исполнения.

Инструкция с точкой прерывания не выполняется. Вместо этого процессор переходит в состояние отладки.

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

Прим.: Процессор переходит в состояние отладки независимо от выполнения условия.

Инструкция с точкой прерывания не вызывает переход ядра ARM7TDMI в состояние отладки в следующих случаях:

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

Вход в состояние отладки по точке наблюдения

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

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

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

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

Вход в состояние отладки по запросу отладки

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

  • путем программирования логики EmbeddedICE (см. "Программирование точек прерывания" и "Программирование точек наблюдения")
  • путем установки вывода DBGRQ.

Вывод DBGRQ - асинхронный вход и, поэтому, он вступает в силу с учетом синхронизации внутри процессора ARM7TDMI. Следуя синхронизации, ядро, как правило, вводит состояние отладки по окончании текущей инструкции. Однако, если текущая инструкция - доступ к сопроцессору с ожиданием состояния занятости, то выполнение инструкции прекращается и процессор ARM7TDMI вводит состояние отладки незамедлительно. Это аналогично действию nIRQ и nFIQ.

3.2 Действие процессора в состоянии отладки

Когда ядро ARM7TDMI вводит состояние отладки, сигналы nMREQ и SEQ индицируют внутренние циклы. Это позволяет оставшейся части системы памяти игнорировать ядро и функционировать в нормальном режиме. Поскольку, оставшаяся часть системы продолжает функционировать, то ARM7TDMI игнорирует аварийные ситуации и прерывания.

Система не должна изменять сигнал BIGEND в процессе отладки, поскольку отладчик не подозревает о реконфигурации ядра.

nRESET должен оставаться стабильным в процессе отладки, т.к. сброс ядра в состоянии отладки вызывает потерю слежения за ядром со стороны отладчика.

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

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

4. Домены синхронизации ядра ARM7TDMI

Синхронизация ARM7TDMI описана в параграфе "Синхронизация".

4.1 Переключение синхронизации в состоянии отладки

При переходе процессора ARM7TDMI в состояние отладки происходит автоматическое переключение сигналов синхронизации с MCLK на DCLK, после чего устанавливается сигнал DBGACK во время высокого полупериода MCLK. Переключение между двумя сигналами синхронизации возникает при следующем падающем фронте MCLK. Это демонстрируется на рисунке 5.4.

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

  1. Вводится последняя инструкция отладочной последовательности в цепь сканирования шины данных и синхронизируется путем установки DCLK.
  2. В регистр инструкции ТАР-контроллера записывается команда RESTART.

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

См. "Выход из состояния отладки".

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

4.2 Переключение синхронизации в процессе тестирования

Когда последовательная тестовая комбинация поступает в ядро ARM7TDMI через интерфейс JTAG, то процессор должен тактироваться сигналом DCLK, а MCLK должен находится в низком состоянии.

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

TAP-контроллер может использоваться для проверки процессора. Если выбраны цепь сканирования 0 и INTEST, то DCLK генерируется, когда цифровой автомат находится в состоянии RUN-TEST/IDLE (запуск тестирования/холостой ход). В состоянии EXTEST DCLK не генерируется.

При выходе из состояния тестирования необходимо ввести в ТАР-контроллер инструкцию RESTART, после чего возобновляется работа MCLK. После проверки INTEST необходимо убедиться, что перед возвращением к нормальной работе ядро находится в восприимчивом состоянии. Наиболее безопасными способами для этого являются следующие:

  • выбор RESTART, что вызывает системный сброс
  • вставка инструкции MOV PC, #0 в конвейер инструкций перед возвратом в обычное состояние.

5. Определение состояния ядра и системы

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

Перед тем как проверить состояние ядра и системы, отладчик путем проверки 4-го бита регистра статуса отладки логики EmbeddedICE должен определить, процессор введен в состояние отладки из состояния Thumb или ARM. Если этот бит равен 1, то ядро введено в состояние отладки из состояния Thumb.

Более детальная информация по определению состояния ядра приведена в параграфе "Определение состояния ядра и системы".

6. Общие сведения о логике EmbeddedICE

Логика EmbeddedICE процессора ARM7TDMI поддерживает встроенные функции отладки ядра ARM7TDMI.

Логика EmbeddedICE программируется последовательно с помощью ТАР-контроллера процессора ARM7TDMI. На рисунке 5.5 иллюстрируется соотношение между ядром, логикой EmbeddedICE и TAP-контроллером с указанием только используемых сигналов.

ARM7TDM, TAP-контроллер и логика EmbeddedICE
Рисунок 5.5. ARM7TDM, TAP-контроллер и логика EmbeddedICE

Логика EmbeddedICE содержит:

  • два блока реально-временных точек наблюдения
  • два раздельных регистра:
    - регистр управления отладкой
    - регистр состояния отладки.
  • Отладочный коммуникационный канал (DCC).

Регистр управления отладкой и регистр состояния отладки полностью управляют работой EmbeddedICE.

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

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

Каждый блок точек наблюдения можно конфигурировать как блок точек наблюдения или как блок точек прерывания.

Точки прерывания и точки наблюдения могут быть зависимыми от данных.

7. Отключение EmbeddedICE

Логика EmbeddedICE отключается путем установки низкого уровня на DBGEN.

Замечание: если на вход DBGEN подать непрерывный низкий уровень, то это приведет к отключению логики EmbeddedICE.

Однако этим лучше не пользоваться для повышения безопасности системы.

Если DBGEN в низком состоянии, то:

  • BREAKPT и DBGRQ поступают в ядро в низком состоянии
  • DBGACK выходит из ядра ARM7TDMI в низком состоянии
  • прерывания обходят процессор, не задерживаясь логикой отладки
  • логика EmbeddedICE переходит в маломощный режим.

8. Отладочный коммуникационный канал

Логика EmbeddedICE процессора ARM7TDMI содержит DCC для передачи информации между целевым отлаживаемым устройством и отладчиком. Он реализован как сопроцессор 14 (CP14).

DCC содержит:

  • 32-разрядный коммуникационный регистр чтения данных
  • 32-разрядный коммуникационный регистр записи данных
  • 6-разрядный коммуникационный регистр управления для синхронизированного подтверждения установления связи между процессором и асинхронным отладчиком.

Данные регистры размещены в фиксированных позициях карты регистров логики EmbeddedICE, как показано на рисунке 5.7. Доступ к регистрам со стороны процессора выполняется с помощью инструкций MCR и MRC к сопроцессору 14.

8.1 DCC-регистры

DCC-регистр управления доступен только для чтения. Он управляет синхронизированным подтверждением связи между процессором и отладчиком. Формат регистра управления показан на рисунке 5.6.

Формат DCC-регистра управления
Рисунок 5.6. Формат DCC-регистра управления

Ниже приведено назначение каждого бита регистра:

Биты 31:28 Содержит фиксированную комбинацию, которая определяет номер версии EmbeddedICE, в данном случае 0001.
Биты 27:2 Зарезервировано.
Бит 1 Если W сброшен, то DCC-регистр записи данных готов для получения данных от процессора. Если W установлен, то данные в DCC-регистре записи данных готовы для сканирования отладчиком.
Бит 0 Если R сброшен, DCC-регистр чтения данных свободен и данные могут быть помещены в него из отладчика.
Если R установлен, то DCC-регистр чтения данных не могут быть считаны процессором и отладчик должен ожидать.

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

Доступ к DCC-регистрам необходимо осуществлять с помощью инструкций из таблицы 5.1.

Таблица 5.1. Инструкции доступа к DCC-регистру

Инструкции Описание
MRC CP14, 0, Rd, C0, C0, 0 Помещает значение из DCC-регистра управления в регистр назначения (Rd)
MCR CP14, 0, Rn, C1, C0, 0 Запись значения из регистра-источника (Rn) в DCC-регистр записи данных
MRC CP14, 0, Rd, C1, C0, 0 Возвращает значение из DCC-регистра чтения данных в Rd

Поскольку набор инструкций Thumb не содержит сопроцессорных инструкций, то в этом случае рекомендуется выполнять доступ с помощью инструкции SWI.

8.2 Связь через DCC

DCC позволяет принять и отправить сообщение.

Отправка сообщения в отладчик

Когда процессору необходимо отправить сообщение в отладчик, он должен убедится в том, что регистр записи данных свободен. Это выполняется путем опроса бита W в регистре управления, который должен быть сброшен.

Процессор считывает регистр управления для проверки состояния бита 1:

  • Если бит W сброшен, то коммуникационный регистр записи данных свободен.
  • Если W установлен, то предварительно записанные данные не могут быть считаны отладчиком. В этом случае процессор должен продолжить опрос регистра управления до сброса бита W.

Поскольку передача данных выполняется от процессора к DCC-регистру записи данных, то устанавливается бит W в DCC-регистре управления. Когда отладчик опрашивает данный регистр, он наблюдает синхронизированные версии бит R и W. Если отладчик определяет, что бит W установлен, то он может считать DCC-регистр записи данных и выполнить его последовательный вывод. По завершении чтения данного регистра данных происходит сброс бита W в DCC-регистре управления. На данном этапе коммуникационный процесс может начаться заново.

Прием сообщения из отладчика

Передача сообщения из отладчика похожа на отправку сообщения в отладчик. В этом случае, отладчик опрашивает бит R в DCC-регистре управления:

  • если бит R сброшен, то DCC-регистр чтения данных свободен и данные могут быть считаны процессором;
  • если бит R установлен, то данные находятся в стадии накопления и отладчик должен ожидать.

Если DCC-регистр чтения данных свободен, то данные записываются в него с помощью интерфейса JTAG.

Со стороны процессора бит R DCC-регистра управления используется следующим образом.

Процессор опрашивает DCC-регистр управления. Если бит R установлен, то имеются данные, которые могут быть считаны с помощью инструкции MRC в сопроцессор 14. После выполнения чтения сбрасывается бит R в DCC-регистре управления. Когда отладчик опрашивает данный регистр и определяет, что бит R сброшен, то это означает, что данные были приняты и процесс можно повторить заново.

Использование DCC с управлением по прерываниям

Альтернативным и потенциально более эффективным методом опроса регистра управления является использование выходов COMMTX и COMMRX процессора ARM7TDMI. Вы можете использовать данные выходы для прерывания процессора, когда:

  • слово доступно для чтения из DCC-регистра чтения данных
  • DCC-регистр записи данных свободен и доступен для использования.

Данные выходы, как правило, подключаются к системному контроллеру прерываний, управляя входами nIRQ и nFIQ процессора ARM7TDMI.



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