Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ

реклама

 




Мероприятия:




Использование контрольных точек

Все регистры контрольных точек (BP0-BP5) при сбросе при включении питания и при входе автомата ТАР в состояние Test-Logic-Reset по умолчанию имеют значение FFFFh. Регистры контрольных точек доступны только фоновым командам чтения/записи, передаваемым по линии связи ТАР. Вычислительному ядру регистры контрольных точек для чтения/записи не доступны.

Установка бита Debug Mode Enable (DME) в регистре ICDC в логическую 1 активизирует все шесть регистров контрольных точек для проверки соответствия. Состояние бита Break-On Register Enable (REGE) регистра ICDC определяет, должны ли контрольные точки BP4 и BP5 использоваться как контрольные точки адресов памяти данных (REGE = 0) или как контрольные точки регистров (REGE = 1).

При использовании контрольных точек регистров важно понять, что действия режима Отладки (например, чтение памяти данных, запись в память данных и т.д.) требует использования ICDA и ICDD для того, чтобы передать из информации между хостом и подпрограммами ПЗУ микроконтроллера MAXQ. Это означает, что, если регистры контрольных точек должны остаться активными, то их содержимое должно быть сохранено и восстановлено перед возвращением в фоновый режим.

При достижении контрольной точки автомат отладчика останавливает выполнение прикладной программы и микроконтроллер MAXQ переводится в режим отладки. Если достижение контрольной точки происходит на команде, которая активирует регистр PFX, то останов откладывается до окончания выполнения префиксной операции. Хост может обнаружить переход в режим отладки путем отслеживания битов состояния 10- битного слова, сформированного на выводе TDO. При переходе в режим отладки биты состояния изменятся из состояния Non-Debug (00b), ассоциируемое с фоновым режимом, в состояние Debug-Idle (01b). Также режим отладки может быть вручную инициализирован хостом путем формирования фоновой команды 'Debug'.

Режим отладки

Есть два способа входа в режим отладки из фонового режима:

  • Передача по порту связи ТАР от хоста команды 'Debug', или
  • при помощи автомата контрольных точек.

Хост может передать автомату отладчика фоновую команду Debug. Этот прямой вход в режим отладки является не детерминированным. Время реакции зависит от занятости системы при передаче команды. Автомат контрольных точек обеспечивает более управляемую реакцию, но требует предварительной настройки контрольных точек в фоновом режиме. Не зависимо от того, как был осуществлен переход в режим отладки, автомат отладчика берет вычислительное ядро под свой контроль. Вход в режим отладки подобен прерыванию, за исключением того, что переход осуществляется по адресу x8010h, который постоянно хранится в сервисном ПЗУ, вместо адреса, указанного в регистре IV, который используется при прерывании. При входе в режим отладки выполняются следующие действия:

  1. блокируется выполнение следующей команды
  2. адрес возврата передается в стек
  3. в IP загружается значение x8010h
  4. бит IGE сбрасывается в 0, что позволяет заблокировать прерывания
  5. вычислительное ядро останавливается

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

Команды режима отладки

Автомат отладчика биты состояния регистра сдвига данных в состояние 01b (Debug-Idle), что указывает на то, что он готов принять команды отладки от хоста.

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

  • чтение карты регистров
  • чтение стека программы
  • чтение/запись регистров
  • чтение/запись памяти данных
  • инициализировать выполнение вычислительным ядром одного шага
  • вернуться в режим отладки
  • разблокировать пароль

Только операции непосредственно управляемые автоматом отладчика инициализируют один шаг и возврат. Все остальные действия обслуживаются подпрограммами, хранящимися в сервисном ПЗУ. Эти действия требуют, чтобы несколько байтов были переданы или получены хостом, однако любое действие всегда начинается с передачи хостом байта команды. Этот байт команды декодируются автоматом отладчика для определения величины, последовательности и адреса для последующих байтов, полученных от хоста. несмотря на то, что нет никакого временного ограничения на передачу данных и команды, автомат отладчика все равно должен принять правильное количество байтов перед выполнением той или иной команды. Если нарушилась последовательность передачи данных и команды, то имеется только один путь продолжения работы: изменение регистра команд (IR2:0) и перезагрузка команды Debug. После принятия команды и вспомогательных данных автомат отладчика начинает выполнять следующие действия:

  • обновляет командные биты (CMD3:0) в регистре ICDC для обработки запроса хоста,
  • активизирует ПЗУ, если оно было не активным,
  • осуществляет переход по адресу ПЗУ x8010h и
  • устанавливает в битах состояния регистра сдвига данных значение 10b (Debug-Busy)

Код ПЗУ выполняет чтение битов CMD3:0 регистра ICDC для определения того, какое действие необходимо выполнить. Некоторые команды могут быть обработаны ПЗУ без принятия данных от хоста, в то время как другие (например, Unlock Password), требуют передачи хостом дополнительных данных. Некоторые команды должны передать хосту только информацию об окончании выполнения, а другие (например, Read register map) - должны передать несколько байтов данных. Для контроля потока передаваемых данных хост должен использовать биты состояния, чтобы определить, когда ПЗУ готово принять дополнительные данные, или когда оно осуществляет передачу данных. Прикладная программа сервисного ПЗУ определяет когда новые данные доступны или когда она может передавать следующие данные, производя анализ состояния флага TXC. Флаг TXC - важный индикатор между автоматом отладчика и прикладной программой сервисного ПЗУ. Прикладная программа сервисного ПЗУ устанавливает флаг TXC в 1 для того, чтобы указать, что в регистр ICDB были загружены достоверные данные. Автомат отладчика сбрасывает флаг TXC в 0 для того, чтобы указать на завершение цикла сдвига данных, разрешая, таким образом, ПЗУ продолжить выполнение текущей операции. Сервисное ПЗУ сигнализирует об окончании выполнения текущей задачи путем установки в логическую 1 бита ROM Operation Done (ROD) регистра SC. Бит ROD сбрасывается автоматом отладчика после его распознавания.

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

Таблица 24. Команды режима отладки

Код команды Команда Действие
0010-0000 No Operation Пустая команда (никакое действие не выполняется)
0010-0001 Read Register Map Считывание данных из внутреннего регистра. Эта команда приводит к тому, что автомат отладчика устанавливает биты CMD3:0 регистра ICDC в состояние 0001b и осуществляет переход к команде, находящейся в ПЗУ по адресу x8010h. Подпрограмма сервисного ПЗУ загрузит регистр данных в регистр ICDB, из которого хост сможет сравнить/считать данные.
0010-0010 Read Data Memory Считывание данных из памяти данных. Эта команда требует четыре трансфертных цикла, два для установки адреса и два для считывания слова счетчика, начинающегося с младшего значащего байта и заканчивающегося старшим значащим байтом. Адрес помещается в регистр ICDA, а считанное слово - в регистр ICDD, которые в дальнейшем обрабатываются автоматом отладчика. Эта информация непосредственно доступна коду ПЗУ. По окончании этой команды автомат отладчика устанавливает в битах CMD3:0 значение 0010b и формирует переход по адресу x8010h. Подпрограмма сервисного ПЗУ отладчика загружает в регистр ICDB данные из памяти, соответствующие загруженному из хоста адресу.
0010-0011 Read Program Stack Считывание данных из стека программы. Эта команда требует четыре трансфертных цикла, два для установки адреса и два для считывания слова счетчика, начинающегося с младшего значащего байта и заканчивающегося старшим значащим байтом. Адрес помещается в регистр ICDA, а считанное слово - в регистр ICDD, которые в дальнейшем обрабатываются автоматом отладчика. Эта информация непосредственно доступна коду ПЗУ. По окончании этой команды автомат отладчика устанавливает в битах CMD3:0 значение 0010b и формирует переход по адресу x8010h. Подпрограмма сервисного ПЗУ отладчика загрузит данные из стека в соответствии с информацией, принятой в регистры ICDA и ICDD. Перед каждой такой операцией.
0010-0100 Write Register Запись данных в выбранный регистр. Эта команда требует четыре трансфертных цикла, два для установки адреса и два для считывания слова счетчика, начинающегося с младшего значащего байта и заканчивающегося старшим значащим байтом. Адрес помещается в регистр ICDA, а считанное слово - в регистр ICDD, которые в дальнейшем обрабатываются автоматом отладчика. Эта информация непосредственно доступна коду ПЗУ. По окончании этой команды автомат отладчика устанавливает в битах CMD3:0 значение 0010b и формирует переход по адресу x8010h. Подпрограмма сервисного ПЗУ отладчика загрузит в выбранный регистр полученные данные.
0010-0101 0010-0101
Write Data Memory
Запись данных в выбранную область памяти данных. Эта команда требует четыре трансфертных цикла, два для установки адреса и два для считывания слова счетчика, начинающегося с младшего значащего байта и заканчивающегося старшим значащим байтом. Адрес помещается в регистр ICDA, а считанное слово - в регистр ICDD, которые в дальнейшем обрабатываются автоматом отладчика. Эта информация непосредственно доступна коду ПЗУ. По окончании этой команды автомат отладчика устанавливает в битах CMD3:0 значение 0010b и формирует переход по адресу x8010h. Подпрограмма сервисного ПЗУ отладчика загрузит |ICDA и ICDD.
0010-0110 Trace Команда трассировки. Эта команда позволяет вычислительному ядру выполнить один шаг и не требует трансфертных циклов. Эта команда инициализирует следующую последовательность действий: выход из режима отладки, выполнение вычислительным ядром одного цикла, возвращение в режим отладки.
0010-0111 Return Команда возврата. Эта команда прекращает режим отладки и переводит автомат отладчика в фоновый режим. Эта команда позволяет вычислительному ядру вернуться в нормальный режим из точки, где произошло последнее прерывание.
0010-1000 Unlock Password Снятие защиты паролем. Эта команда требует 32 трансфертных цикла, каждый из которых содержит байт значения, которое должно быть сравнено с паролем памяти программы с целью очистки бита PWL и получения полного доступа к функциям отладчика и загрузчика. После получения этой команды, автомат отладчика загружает в биты CMD3:0 bit значение 1000b и вызывает переход по адресу x8010h ПЗУ программы. При каждом приеме данные загружаются в регистр ICDB, начиная с младшего значащего слова и заканчивая старшим значащим словом.
0010-1001 Read Register Считывание данных из выбранного внутреннего регистра. Эта команда требует двух трансфертных циклов, начинающихся с младшего значащего байта адреса и заканчивающихся старшим значащим байтом адреса. Адрес загружается автоматом отладчика в регистр ICDA. Эта информация непосредственно доступна коду ПЗУ. После загрузки данной команды, автомат отладчика устанавливает в битах CMD3:0 значение 1001b и вызывает переход по адресу x8010h ПЗУ программы. Подпрограмма сервисного ПЗУ отладчика принимает 16- битные данные и передает их младшим значащим айтом вперед.

Взаимодействие при выполнении команды Read Register Map

Команда read register map считывает данные, содержащиеся во всех внутренних системных и периферийных регистрах. Хост не задает адрес считываемого регистра, а получает данные, содержащиеся во всех регистрах, начиная с модуля 0. Данные загружаются ПЗУ в 8- битный регистр ICDB и смещаются на выход при каждом трансфертном цикле. Таким образом, для выгрузки данных из 16- битного регистра требуется два трансфертных цикла. Для смещения одного байта данных хост инициализирует каждый трансфертный цикл и считывает данные после правильной установки данных, определяя это состояние по установке в битах состояния значения 11b. В конце каждого трансфертного цикла, автомат отладчика сбрасывает флаг TXC, что позволяет подпрограмме сервисного ПЗУ определить момент, когда необходимо загружать следующий байт в регистр ICDB. После загрузки данных в регистр ICDB ПЗУ устанавливает флаг TXC. Этот процесс повторяется до тех пор, пока содержимое всех регистров не будет выгружена хосту. Окончание передачи хост определяет по битам состояния, в которых устанавливается значение, соответствующее состоянию Debug-Idle. Это указывает, что автомат отладчика готов к работе в другом режиме.

Работа в пошаговом режиме (трассировка)

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

  1. Установка статуса 10b (Debug-Bussy).
  2. Возвращение адреса из стека.
  3. Установка бита IGE в 1 (при условии, что режим отладки был инициализирован когда IGE был равен 1).
  4. Загрузка в вычислительное ядро команды, находящейся по возвращенному адресу.
  5. Остановка вычислительного ядра после выполнения команды.
  6. Блокирование загрузки следующей команды в вычислительное ядро.
  7. Помещение адреса возврата в стек.
  8. Загрузка в IP значения x8010h.
  9. Сброс бита IGE в 0, что позволяет блокировать прерывания.
  10. Остановка вычислительного ядра.
  11. Установка статуса Debug-Idle.

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

Возврат

Чтобы выйти из режима отладки и вернуть автомат отладчика в фоновый режим, хост должен передать автомату отладчика команду Return. Эта команда вызывает выполнение следующей последовательности действий:

  1. Возвращение адреса из стека.
  2. Установка бита IGE в 1, если до входа в режим отладки он был установлен в 1.
  3. Загрузка в вычислительное ядро команды, находящейся в ПЗУ по возвращенному адресу.
  4. Разрешение вычислительному ядру работы в нормальном режиме.
  5. Установка значения битов состояния 00b (Non-Debug).

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

Особые замечания о режиме отладки

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

  • Автомат отладчика не может работать надежно, когда вычислите тельное ядро настроено на работу в режиме управления питанием (режим деления системных синхроимпульсов на 256). Для увеличения надежности работы автомата отладчика в PMM бит SWB должен быть установлен в 1. Когда SWB = 1, при входе в режим отладки (при достижении контрольной точки или при получении команды Debug) происходит переключение в режим деления системных синхроимпульсов на 1 (отсутствие деления), что позволяет автомату отладчика работать правильно. Это позволяет правильно настроить даже те контрольные точки прикладной программы, достижение которых будет при нахождении микроконтроллера в режиме PMM. Однако, это не позволяет правильно вернуться в режим PMM.
  • Особые предостережения должны быть реализованы при использовании команды Write Register для записи битов, глобально затрагивающих работоспособность системы (например, биты IGE, STOP). Если команда записи регистра используется для вызова режима останова (установка бита STOP в 1), то вывод RST может быть использован для выхода из режима отладки и возвращения в фоновый режим автомата отладчика.
  • Одношаговый проход через команду изменения бита IGE приводит к отмене установки этого бита.
  • Одношаговый проход через команду, которая устанавливает бит STOP в 1 когда IGE = 1 позволяет разрешить прерывание, позволяющее выйти из этого режима.
  • При разработке системы расположение карты памяти данных очень важно, если планируется использовать режим внутрисхемной отладки. В режиме отладки верхние 32 байта памяти могут использоваться сервисной подпрограммой отладчика. В этом случае содержимое этих регистров может быть потеряно безвозвратно.
  • Для режима отладки необходима хотя бы одна доступная ячейка стека. Если стек полон, то самые старые адреса возвратов будут утеряны.
  • При входе в режим отладки кристаллический счетчик запуска не блокируется. Если кристаллический счетчик запуска переполнится в активном режиме отладки, то помехоустойчивый коммутатор выберет нужный источник синхронизации. Важно, чтобы пользователь обнаружил этот режим, так как синхроимпульсы ТАР должны быть не быстрее, чем 1/8 частоты системных синхроимпульсов.
  • В активном режиме отладки работа от внешних источников синхронизации любых периферийных модулей ненадежна, так как системные синхроимпульсы в этом режиме остановлены.
  • Режим управления питанием не может быть вызван в первой команде, выполненной при возвращении из активного режима отладки. В этом случае бит PMME не будет установлен.


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





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники