Раздел 16
Режим внутрисхемной отладки
Большинство микроконтроллеров семейства MAXQ содержит встроенный аппаратный модуль отладки и встроенное ПЗУ, содержащее прикладную программу, разработанную для обеспечения возможности пользователям осуществлять внутрисхемную отладку. Режим внутрисхемной отладки использует для обмена данными между ведущим хостом и микроконтроллером семейства MAXQ JTAG- совместимый порт доступа для тестирования (Test Access Port - TAP). На рисунке 54 показана структурная схема встроенного аппаратного модуля внутрисхемной отладки. Аппаратный и программный модули внутрисхемного отладчика включают в себя:
- автомат отладки
- набор регистров, обеспечивающих способность установить контрольные точки в регистрах, прикладной программе или данных
- набор сервисных подпрограмм отладки, записанных в ПЗУ
Вместе эти аппаратные и программные средства позволяют реализовать два основных встроенных режима отладки:
- Фоновый режим позволяет главному хосту конфигурировать и устанавливать встроенную внутрисхемную отладку, в то время как микроконтроллер продолжает выполнять прикладную программу в нормальном режиме. Режим отладки может быть вызван из фонового режима.
- Режим отладки позволяет автомату отладчика взять под свой контроль вычислительное ядро, и осуществляя доступ для чтения-записи к внутренним регистрам и памяти, а так же осуществляя пошаговое отслеживание выполнения прикладной программы.
Рисунок 54. Структурная схема внутрисхемного отладчика
Встроенный автомат отладчика в микроконтроллерах семейства MAXQ реализован в виде автономного аппаратного блока. Когда вычислительное ядро выполняет прикладную пользовательскую программу, автомат отладчика может быть активизирован для слежения за внутренней активностью и взаимодействия с выбранными внутренними регистрами. Эта характеристика позволяет пользователю использовать встроенный автомат отладчика для отладки фактической системы вместо эмулятора, использующего внешние аппаратные модули, копирующего режим работы микроконтроллера, но вне реальной среды.
Для активизации линии связи между ведущим хостом и автоматом отладчика микроконтроллера в регистр команд ТАР при помощи последовательности IR-Scan должна быть загружена команда Debug (010b). После того, как эта команда защелкивается в параллельном регистре команд (IR2:0) и распознается контроллером ТАР в состоянии Update-IR, активизируется 10- битный регистр сдвига в качестве канала связи для последовательности DR-Scan. Регистр команд ТАР сохраняет команду Debug до тех пор, пока новая команда не будет загружена через IR-Scan или пока контроллер ТАР не будет сброшен в состояние Test-Logic-Reset.
После этого ведущий хост может передавать и принимать данные через 10- битный регистр сдвига, подключаемый в режиме DR-Scan между выводами TDI и TDO. Как в фоновом режиме, так и в режиме отладки, обмен данными (команды, входные и выходные данные и данные состояния) осуществляется через этот канал. Каждый 10 битный пакет при обмене между хостом и микроконтроллером MAXQ состоит из двух битов состояния и одного байта команды или данных. 10- битное слово всегда передается младшим значащим битом вперед, как это показано ниже.
Часть 10- битного регистра сдвига, содержащая байт данных, непосредственно соединена с параллельным регистром ICDB. Регистр ICDB функционирует как регистр удержания данных при операциях передачи и приема. По спадающему фронту TCK в состоянии Update-DR выходные данные загружаются из параллельного регистра ICDB в регистр сдвига отладчика, а входные данные регистра сдвига защелкиваются в параллельный регистр ICDB.
Работа в фоновом режиме
После загрузки в регистр команд инструкции Debug (IR2:0 = 010b), хост может связаться с микроконтроллером MAXQ в фоновом режиме, используя DR-Scan последовательность ТАР, не нарушая режим работы вычислительного ядра. Однако, обратите внимание, что внутрисистемное программирование JTAG также требует использования 10- битного регистра сдвига отладчика и, если активизировано (SPE, PSS1:0 = 100b), имеет приоритет над фоновым режимом связи. При работе в фоновом режиме биты состояния всегда сбрасываются в ноль (00b - не отладка), что указывает, что микроконтроллер MAXQ готов принять команды фонового режима.
В фоновом режиме хост может выполнять следующие действия:
- читать/записывать внутренние контрольные точки регистров (BP0-BP5)
- читать/записывать внутренние регистры внутрисхемного отладчика (ICDC, ICDF, ICDA, ICDD)
- отслеживать прохождение контрольных точек
- непосредственно вызывать режим отладки
В таблице 23 приведены команды фонового режима, поддерживаемые микроконтроллером MAXQ. Коды, не приведенные в этой таблице не поддерживаются в фоновом режиме и обрабатываются как команды, не вызывающие никаких действий.
Таблица 23. Команды фонового режима
Код |
Команда |
Действие |
0000-0000 |
No Operation |
No Operation. Сброс в состояние по умолчанию регистра сдвига отладчика. |
0000-0001 |
Read ICDC |
Read Control Data from the ICDC. Содержимое регистра ICDC загружается в регистр сдвига отладчика через регистр ICDB для считывания их хостом. Эта команда требует одного последующего трансфертного цикла. |
0000-0010 |
Read ICDF |
Read Flags from the ICDF. Содержимое регистра ICDF (один байт) загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует одного последующего трансфертного цикла. |
0000-0011 |
Read ICDA |
Read Data from the ICDA. Содержимое регистра ICDA загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-0100 |
Read ICDD |
Read Data from the ICDD. Содержимое регистра ICDD загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-0101 |
Read BP0 |
Read Data from the ВР0. Содержимое регистра ВР0 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-0110 |
Read BP1 |
Read Data from the ВР1. Содержимое регистра ВР1 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-0111 |
Read BP2 |
Read Data from the ВР2. Содержимое регистра ВР2 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-1000 |
Read BP3 |
Read Data from the ВР3. Содержимое регистра ВР3 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-1001 |
Read BP4 |
Read Data from the ВР4. Содержимое регистра ВР4 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0000-1010 |
Read BP5 |
Read Data from the ВР5. Содержимое регистра ВР5 загружается в регистр сдвига отладчика через ICDB регистр для считывания хостом. Эта команда требует двух циклов передачи. |
0001-0001 |
Write ICDC |
Write Control Data to the ICDC. Содержимое регистра ICDB загружается в регистр ICDC. |
0001-0011 |
Write ICDA |
Write Control Data to the ICDA. Содержимое регистра ICDB загружается в регистр ICDA. |
0001-0100 |
Write ICDD |
Write Control Data to the ICDD. Содержимое регистра ICDB загружается в регистр ICDD. |
0001-0101 |
Write BP0 |
Write Data to the BP0. Содержимое регистра ICDB загружается в регистр BP0 автоматом отладчика в конце цикла передачи данных. |
0001-0110 |
Write BP1 |
Write Data to the BP1. Содержимое регистра ICDB загружается в регистр BP1 автоматом отладчика в конце цикла передачи данных. |
0001-0111 |
Write BP2 |
Write Data to the BP2. Содержимое регистра ICDB загружается в регистр BP2 автоматом отладчика в конце цикла передачи данных. |
0001-1000 |
Write BP3 |
Write Data to the BP3. Содержимое регистра ICDB загружается в регистр BP3 автоматом отладчика в конце цикла передачи данных. |
0001-1001 |
Write BP4 |
Write Data to the BP4. Содержимое регистра ICDB загружается в регистр BP4 автоматом отладчика в конце цикла передачи данных. |
0001-1010 |
Write BP5 |
Write Data to the BP5. Содержимое регистра ICDB загружается в регистр BP5 автоматом отладчика в конце цикла передачи данных. |
0001-1111 |
Debug |
Debug Command. Эта команда переводит автомат отладчика в режим отладки и останавливает работу вычислительного ядра после команды, при выполнении которой была декодирована команда перехода в режим отладки. |
Регистры контрольной точки
Микроконтроллеры семейства MAXQ содержат шесть регистров контрольной точки (BP0-BP5), которые настраиваются хостом для установки различных типов механизмов контрольной точки. Первые четыре регистра контрольной точки (BP0-BP3) являются 16- разрядными регистрами, которые конфигурируются как контрольные точки по адресам памяти программы. Когда они активны, автомат отладчика останавливает выполнение программы, когда содержимое этого регистра совпадает с адресом подлежащей к выполнению команды. Два последних 16- разрядных регистра контрольной точки (BP4, BP5) настраиваются в одно из двух возможных состояний. Они могут быть настроены как контрольные точки по адресам памяти программы или как контрольные точки доступа к регистрам. В любом случае, если они активны и происходит условие соответствия, то автомат отладки формирует условие останова. Ниже приведены шесть регистров контрольных точек.
15 |
|
|
|
|
|
|
8 |
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP0) Register) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP1) Register) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP2) Register) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP3) Register) |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Сброс при включении питания и при сбросе Test-Logic-Reset |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Эти регистры доступны только в фоновом режиме командам чтения/записи. Эти четыре регистра обслуживаются как адреса контрольных точек памяти программы. Когда бит DME установлен в фоновом режиме, то автомат отладки отслеживает адреса загружаемых в вычислительное ядро команд. Если адрес загружаемой команды совпадает с содержимым одного из регистров контрольной точки, то автомат отладки перехватывает контроль и переходит в режим отладки. |
15 |
|
|
|
|
|
|
8 |
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP4) Register) когда (REGE = 0) |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP4) Register) когда (REGE = 1) |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Сброс при включении питания и при сбросе Test-Logic-Reset |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
Этот регистр доступен только в фоновом режиме командам чтения/записи.(Когда REGE = 0) Этот регистр обрабатывается как одна из контрольных точек адреса памяти данных. Когда DME установлен в фоновый режим, то автомат отладчика отслеживает адрес памяти данных. если адреса совпадут, то автомат отладки перехватывает у вычислительного ядра контроль и переходит в режим отладки.(Когда REGE = 1) Этот регистр обслуживается как один из двух регистров контрольных точек. Перехват управления происходит при обращении к регистру, адрес которого совпадает с данными этого регистра. |
Module Specifier 3:0 {0-15}.Номер модуля регистра. |
Register Index within Module {0-31}Номер индекса регистра в пределах модуля |
15 |
|
|
|
|
|
|
8 |
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP5) Register) когда (REGE = 0) |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
Регистр контрольной точки 0 (Breakpoint 0 (BP5) Register) когда (REGE = 1) |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Сброс при включении питания и при сбросе Test-Logic-Reset |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
Этот регистр доступен только в фоновом режиме командам чтения/записи.(Когда REGE = 0) Этот регистр обрабатывается как одна из контрольных точек адреса памяти данных. Когда DME установлен в фоновый режим, то автомат отладчика отслеживает адрес памяти данных. если адреса совпадут, то автомат отладки перехватывает у вычислительного ядра контроль и переходит в режим отладки.(Когда REGE = 1) Этот регистр обслуживается как один из двух регистров контрольных точек. Перехват управления происходит при обращении к регистру, адрес которого совпадает с данными этого регистра.
Module Specifier 3:0 {0-15}..Номер модуля регистра. |
Register Index within Module {0-31}Номер индекса регистра в пределах модуля |
Условие 2: Комбинации битов, записанные в регистр получатель соответствуют этим битам, определенным для сравнения регистром данных ICDD и регистром маски ICDA. Сравниваются только эти биты регистров ICDD и ICDA. Когда все биты регистра ICDA сброшены в 0, то условие 2 становится несущественным. |