Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI |
|
||||||||||||||||||||||||||||
Отладочный интерфейсВ данном разделе приведено описание отладочного интерфейса процессора ARM7TDMI в следующей последовательности:
В разделе также описывается модуль эмуляции EmbeddedICE, который входит в состав процессора ARM7TDMI, в следующих параграфах:
1. Общие сведения об отладочном интерфейсе Отладочный интерфейс процессора ARM7TDMI выполнен на основе стандарта IEEE 1149.1 - 1990, Стандарт архитектуры порта доступа к функциям тестирования и граничного сканирования. Рекомендуется обратиться к данному стандарту для ознакомления с толкованием используемых терминов и для изучения состояний контроллера Порта доступа к функциям тестирования (TAP-контроллер). Блок-схема изменений состояний TAP-контроллера представлена на рисунке 5.2. Процессор ARM7TDMI содержит аппаратные расширения для выполнения расширенных функций отладки. Это существенно упрощает разработку программного обеспечения, операционных систем и собственно аппаратной части. Отладочные расширения позволяют перевести ядро в состояние отладки. В состоянии отладки ядро останавливается и изолируется от остальной части системы. Это позволяет проверить внутреннее состояние ядра и внешнее состояние системы, когда остальная часть системы функционирует в нормальном режиме. По завершении отладки отладчик восстанавливает состояние ядра и системы, после чего возобновляется выполнение программы. 1.1 Стадии отладки Запрос, поступивший через один из сигналов интерфейса отладки или внутренний функциональный блок, именуемый логикой эмуляции EmbeddedICE Logic, переводит процессор ARM7TDMI в состояние отладки. Ниже приведены события, которые активизируют отладку:
После перевода в состояние отладки внутреннее состояние процессора ARM7TDMI может управляться с помощью последовательного интерфейса JTAG. Он позволяет загружать в последовательном формате инструкции в конвейер процессора без использования внешней шины данных. Например, после перевода в состояние отладки, инструкция Многократной записи (STM) может быть помещена на конвейер инструкций и это приведет к экспорту содержимого регистров ядра ARM7TDMI. Эти данные могут быть переданы в последовательном формате отладчику, не нарушая работы остальной части системы. 1.2 Синхронизация Ядро ARM7TDMI использует два сигнала синхронизации:
В нормальном режиме работы ядро тактируется сигналом MCLK, а внутренняя логика удерживает DCLK в низком состоянии. Если процессор ARM7TDMI находится в состоянии отладки, то ядро синхронизируется DCLK под управлением цифрового автомата TAP-контроллера, а MCLK может работать вхолостую. Выбранный сигнал синхронизации присутствует на выходе внешней синхронизации ECLK для использования внешней системой. Прим.: nWAIT не оказывает должного влияния, если ядро ЦПУ находится в состоянии отладки и тактируется сигналом DCLK. 2. Отладочные системы На рисунке 5.1 показана типичная отладочная система с использованием ядра ARM.
Отладочная система обычно состоит из трех частей:
Отладчик и преобразователь протокола являются системно-зависимыми. 2.1 Отладчик В качестве отладчика выступает компьютер, на котором запущена отладочная программа, например, ARM Debugger for Windows (ADW). Отладчик позволяет вводить такие команды высокого уровня, как установка точки прерывания или проверка содержимого памяти. 2.2 Преобразователь протокола Преобразователь протокола отвечает за преобразование команды высокого уровня отладчика в команды низкого уровня интерфейса JTAG процессора ARM7TDMI. Как правило, подключение к компьютеру выполняется через расширенный параллельный порт (ЕРР). Процессор ARM7TDMI содержит аппаратные расширения, которые упрощают отладку на самом низком уровне. Отладочные расширения:
2.3 Отлаживаемое целевое устройство Основные блоки отлаживаемого целевого устройства показаны на рисунке 5.2.
Ядро ЦПУ ARM Ядро содержит аппаратную часть, поддерживающая отладку. Логика EmbeddedICE Это набор регистров и компараторов, используемых для генерации отладочных исключительных ситуаций, как, например, точки прерывания. Описание этого блока приведено в параграфе "Общие сведения о логике эмуляции EmbeddedICE". TAP-контроллер ТАР-контроллер управляет действием цепей сканирования через последовательный интерфейс JTAG. 3. Сигналы интерфейса отладки Отладочный интерфейс состоит из трех основных внешних сигналов:
Прим.: Для полного разрешения отладочных функций процессора DBGEN необходимо перевести в высокое состояние. См. "Отключение EmbeddedICE". 3.1 Переход в состояние отладки Процессор ARM7TDMI переходит в состояние отладки после запроса со стороны точек прерывания или точек наблюдения, а также при запросе отладки. Для программирования условий активизации точек прерывания или точек наблюдения необходимо использовать логику EmbeddedICE. Альтернативно, вы можете использовать сигнал BREAKPT, который позволяет внешней логике устанавливать точки прерывания или точки наблюдения, а также контролировать:
Временная диаграмма аналогична внешне-сгенерированным точкам прерывания и наблюдения. Данные должны быть действительными по падающему фронту MCLK. Если инструкцию необходимо снабдить точкой прерывания, то сигнал BREAKPT должен иметь высокий уровень при следующем нарастающем фронте MCLK. Аналогично, при чтении или записи данных установка BREAKPT во время нарастающего фронта MCLK маркирует данные, как точка наблюдения. Когда процессор переходит в состояние отладки, устанавливается сигнал DBGACK. Временная диаграмма внешне-сгенерированных точек прерывания показана на рисунке 5.3.
Вход в состояние отладки по точке прерывания Ядро ARM7TDMI определяет, что инструкция содержит точку прерывания еще при поступлении на конвейер, но ядро переходит в состояние отладки только при достижении такой инструкцией ступени исполнения. Инструкция с точкой прерывания не выполняется. Вместо этого процессор переходит в состояние отладки. Внутреннее состояние, которое вы можете проверить после перехода в состояние отладки, соответствует состоянию после выполнения инструкции предшествующей точке прерывания. После завершения проверки состояния необходимо удалить точку прерывания. Как правило, это происходит автоматически под управлением отладчика, который также возобновляет выполнение программы с инструкции, на которой было прервано выполнение программы. Прим.: Процессор переходит в состояние отладки независимо от выполнения условия. Инструкция с точкой прерывания не вызывает переход ядра ARM7TDMI в состояние отладки в следующих случаях:
Вход в состояние отладки по точке наблюдения Точки наблюдения активизируются при осуществлении доступа к данным. Точки наблюдения проверяются постоянно, но не всегда вводят состояние отладки незамедлительно. Как минимум во всех случаях ожидается завершение выполнения текущей инструкции. Если текущая инструкция - многословное чтение или запись (LDM или STM), то до срабатывания точки наблюдения пройдет еще множество циклов. При срабатывании точки наблюдения завершается выполнение текущей инструкции, после чего выполняются все изменения состояния ядра, считываемые данные помещаются в регистры назначения и выполняется основная обратная запись. Прим.: Точки наблюдения похожи на Авар. данные. Отличие заключается в том, что при возникновении ситуации Авар. данных, несмотря на завершение выполнения инструкции, процессор предотвращает любые последующие изменения состояния процессора ARM7TDMI. Данное действие позволяет вызвать обработчик аварийной исключительной ситуации, устранить причину аварийной ситуации и повторно выполнить инструкцию. Если точка наблюдения срабатывает после начала обработки исключительной ситуации, то ядро вводит состояние отладки в том же режиме, что и исключительная ситуация. Вход в состояние отладки по запросу отладки Процессор ARM7TDMI может быть переведен в состояние отладки при запросе отладки одним из следующих способов:
Вывод 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. Это выполняется отладчиком следующим образом:
В этом случае ядро автоматически возвращается к синхронизации сигналом MCLK и запускает выборку инструкций из памяти на частоте MCLK. См. "Выход из состояния отладки".
4.2 Переключение синхронизации в процессе тестирования Когда последовательная тестовая комбинация поступает в ядро ARM7TDMI через интерфейс JTAG, то процессор должен тактироваться сигналом DCLK, а MCLK должен находится в низком состоянии. Вход в состояние тестирования выполняется менее автоматически, чем в состояние отладки и, поэтому, необходимо принять меры, чтобы предотвратить ложную синхронизацию. TAP-контроллер может использоваться для проверки процессора. Если выбраны цепь сканирования 0 и INTEST, то DCLK генерируется, когда цифровой автомат находится в состоянии RUN-TEST/IDLE (запуск тестирования/холостой ход). В состоянии EXTEST DCLK не генерируется. При выходе из состояния тестирования необходимо ввести в ТАР-контроллер инструкцию RESTART, после чего возобновляется работа MCLK. После проверки INTEST необходимо убедиться, что перед возвращением к нормальной работе ядро находится в восприимчивом состоянии. Наиболее безопасными способами для этого являются следующие:
5. Определение состояния ядра и системы Когда ядро находится в состоянии отладки, можно проверить состояние ядра и системы путем размещения нескольких инструкций чтения и записи на конвейере инструкций. Перед тем как проверить состояние ядра и системы, отладчик путем проверки 4-го бита регистра статуса отладки логики EmbeddedICE должен определить, процессор введен в состояние отладки из состояния Thumb или ARM. Если этот бит равен 1, то ядро введено в состояние отладки из состояния Thumb. Более детальная информация по определению состояния ядра приведена в параграфе "Определение состояния ядра и системы". 6. Общие сведения о логике EmbeddedICE Логика EmbeddedICE процессора ARM7TDMI поддерживает встроенные функции отладки ядра ARM7TDMI. Логика EmbeddedICE программируется последовательно с помощью ТАР-контроллера процессора ARM7TDMI. На рисунке 5.5 иллюстрируется соотношение между ядром, логикой EmbeddedICE и TAP-контроллером с указанием только используемых сигналов.
Логика EmbeddedICE содержит:
Регистр управления отладкой и регистр состояния отладки полностью управляют работой EmbeddedICE. Вы можете запрограммировать один блок или оба блока точек наблюдения для приостановки выполнения инструкций ядром. Выполнение приостанавливается, когда значения, запрограммированные в EmbeddedICE, совпадают с текущими значениями на шине адреса, шине данных и различными сигналами управления. Прим.: Можно маскировать любой бит для его исключения из процесса сравнения. Каждый блок точек наблюдения можно конфигурировать как блок точек наблюдения или как блок точек прерывания. Точки прерывания и точки наблюдения могут быть зависимыми от данных. 7. Отключение EmbeddedICE Логика EmbeddedICE отключается путем установки низкого уровня на DBGEN. Замечание: если на вход DBGEN подать непрерывный низкий уровень, то это приведет к отключению логики EmbeddedICE. Однако этим лучше не пользоваться для повышения безопасности системы. Если DBGEN в низком состоянии, то:
8. Отладочный коммуникационный канал Логика EmbeddedICE процессора ARM7TDMI содержит DCC для передачи информации между целевым отлаживаемым устройством и отладчиком. Он реализован как сопроцессор 14 (CP14). DCC содержит:
Данные регистры размещены в фиксированных позициях карты регистров логики EmbeddedICE, как показано на рисунке 5.7. Доступ к регистрам со стороны процессора выполняется с помощью инструкций MCR и MRC к сопроцессору 14. 8.1 DCC-регистры DCC-регистр управления доступен только для чтения. Он управляет синхронизированным подтверждением связи между процессором и отладчиком. Формат регистра управления показан на рисунке 5.6.
Ниже приведено назначение каждого бита регистра:
Если смотреть со стороны отладчика, то доступ к регистрам выполняется через цепь сканирования 2 обычным образом. Со стороны процессора, доступ к данным регистрам выполняется с помощью инструкций передачи регистра сопроцессора. Доступ к DCC-регистрам необходимо осуществлять с помощью инструкций из таблицы 5.1. Таблица 5.1. Инструкции доступа к DCC-регистру
Поскольку набор инструкций Thumb не содержит сопроцессорных инструкций, то в этом случае рекомендуется выполнять доступ с помощью инструкции SWI. 8.2 Связь через DCC DCC позволяет принять и отправить сообщение. Отправка сообщения в отладчик Когда процессору необходимо отправить сообщение в отладчик, он должен убедится в том, что регистр записи данных свободен. Это выполняется путем опроса бита W в регистре управления, который должен быть сброшен. Процессор считывает регистр управления для проверки состояния бита 1:
Поскольку передача данных выполняется от процессора к DCC-регистру записи данных, то устанавливается бит W в DCC-регистре управления. Когда отладчик опрашивает данный регистр, он наблюдает синхронизированные версии бит R и W. Если отладчик определяет, что бит W установлен, то он может считать DCC-регистр записи данных и выполнить его последовательный вывод. По завершении чтения данного регистра данных происходит сброс бита W в DCC-регистре управления. На данном этапе коммуникационный процесс может начаться заново. Прием сообщения из отладчика Передача сообщения из отладчика похожа на отправку сообщения в отладчик. В этом случае, отладчик опрашивает бит R в DCC-регистре управления:
Если DCC-регистр чтения данных свободен, то данные записываются в него с помощью интерфейса JTAG. Со стороны процессора бит R DCC-регистра управления используется следующим образом. Процессор опрашивает DCC-регистр управления. Если бит R установлен, то имеются данные, которые могут быть считаны с помощью инструкции MRC в сопроцессор 14. После выполнения чтения сбрасывается бит R в DCC-регистре управления. Когда отладчик опрашивает данный регистр и определяет, что бит R сброшен, то это означает, что данные были приняты и процесс можно повторить заново. Использование DCC с управлением по прерываниям Альтернативным и потенциально более эффективным методом опроса регистра управления является использование выходов COMMTX и COMMRX процессора ARM7TDMI. Вы можете использовать данные выходы для прерывания процессора, когда:
Данные выходы, как правило, подключаются к системному контроллеру прерываний, управляя входами nIRQ и nFIQ процессора ARM7TDMI.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|