Глава 5. Меню - Отладка (Debug)
В процессе разработки одной из наиболее часто повторяемых операций является периодическое изменение программного кода и его проверка. Программа HT-IDE3000 обладает рядом возможностей, позволяющих облегчить процесс отладки и сэкономить время на разработку. Встроенные функции включают пошаговую отладку, символические точки останова, автоматическую пошаговую отладку, трассировщик по условию и т.д. После успешного создания прикладной программы (см. параграф Создание файлов задач проекта) в активном окне будет показана и выделена первая исполняемая строка исходного проекта (Рис. 5-1). Далее можно использовать команды отладчика.
Рис. 5-1
Сброс системы HT-IDE3000
Существует 4 способа сброса системы HT-IDE3000:
- Сброс по включению питания (Power On Reset) при включении адаптера или нажатии кнопки сброса на HT-ICE
- Нажатие кнопки сброса на отлаживаемом устройстве
- Программный сброс по команде Сброс (Reset) меню Отладка (Debug) программы HT-IDE3000 (Рис. 5-2)
- Программный сброс по команде Сброс по включению питания (Power-on Reset) меню Отладка (Debug) программы HT-IDE3000 (Рис. 5-2)
Рис. 5-2
Действия, выполняемые при осуществлении способов сброса, перечисленных выше, перечислены в Таблице 5-1.
Таблица 5-1
Действия |
Сброс по включению питания (Power On Reset) |
Нажатие кнопки сброса на отлаживаемом устройстве |
Программный сброс по команде Сброс (Reset) |
Программный сброс по команде Сброс по включению питания (Power-on Reset) |
Очистка регистров |
* |
* |
* |
* |
Очистка опций |
Да |
Нет |
Нет |
Нет |
Очистка PD, TO |
Да |
Нет |
Нет |
Да |
Программный счётчик (PC) |
** |
0 |
0 |
0 |
Останов эмуляции |
** |
Нет (***) |
Да |
Да |
Поиск программатора |
Да |
Нет |
Нет |
Нет |
Примечания
- (*) : См. параметры в документации на конкретную серию МК.
- (**) : Значение программного счётчика PC равно нулю, эмуляция остановлена.
- (***) : Если осуществлён сброс на отлаживаемом устройстве, МК перейдёт к выполнению программы после завершения процедуры сброса.
- PC - программный счётчик
- PD - флаг сброса питания
- TO - флаг таймаута
Сброс подачей команд HT-IDE3000
- Выберите команду Сброс (Reset) в меню Отладка (Debug) или нажмите соответствующую кнопку на панели инструментов для осуществления программного сброса
- Выберите команду Сброс по включению питания (Power On Reset) в меню Отладка (Debug) или нажмите соответствующую кнопку на панели инструментов для осуществления программного сброса по включению питания
Сброс при помощи отлаживаемой платы
Используйте вывод µ_RES (ножка 03-C) DIN-разъёма при формировании сброса микроконтроллера. Действия, выполняемые при аппаратном сбросе, перечислены в Таблице 5-1.
Эмуляция прикладных программ
После успешного завершения компиляции программы следует выполнить команду Build (Выполнить) или Rebuild All (Выполнить всё по новой). В случае успешного выполнения в активном окне будет показана и выделена первая выполняемая строка программы (Рис. 5-1). С этого момента можно осуществлять эмуляцию выполняемой программы с помощью команд отладки программы HT-IDE3000.
Примечание: Во время эмуляции программы должен быть открыт соответствующий проект.
Запуск эмуляции программы
- Выберите команду Запуск (Go) в меню Отладка (Debug)
или используйте горячую клавишу F5
или нажмите соответствующую кнопку на панели инструментов
Во время эмуляции можно активизировать другие окна. Программа HT-IDE3000 автоматически остановит эмуляцию при достижении условия останова. В противном случае, эмуляция будет продолжена до завершения пользовательской программы. В процессе эмуляции кнопка Останов (Stop) выделяется красным цветом. Нажатие этой кнопки останавливает эмуляцию.
Останов эмуляции прикладных программ
Существует три способа останова эмуляции:
- Установка точки останова перед запуском эмуляции
- Выбор команды Останов (Stop) в меню Отладка (Debug) или нажатие горячей клавиши Alt+F5
- Нажатие кнопки Останов на панели инструментов
Запуск программы до определённой строки
При отладке программы можно остановить эмуляцию на определённой строке. Это осуществляется описанными ниже способами. Все инструкции между текущей и выбранной строкой, за исключением условных, будут выполнены. Обратите внимание, что программа может не перейти к выделенной строке из-за условных переходов и других подобных ситуаций.
- Переместите курсор к выбранной строке (или выделите эту строку)
- Выберите команду Запуск до курсора (Go to Cursor) в меню Отладка (Debug) или нажмите горячую клавишу F7 или нажмите кнопку Запуск до курсора (Go to Cursor) на панели инструментов
Непосредственный переход на определённую строку
Если результат выполняемых инструкций между текущей и выбранной строкой не имеет значения, можно осуществить непосредственный переход к выбранной строке. Выполнение этой команды не изменяет содержимого памяти данных, регистров и состояния МК, за исключением программного счётчика. Следующей будет выполнена команда, находящаяся на выбранной строке.
- Переместите курсор к выбранной строке (или выделите эту строку)
- Выберите команду Переход к курсору (Jump to Cursor) в меню Отладка (Debug)
Пошаговый режим
В описанных выше случаях можно наблюдать и анализировать результат выполнения группы инструкций. Также можно смотреть результат выполнения каждой инструкции, т.е. исполнять их пошагово.
Программа HT-IDE3000 имеет два пошаговых режима, ручной и автоматический. В ручном режиме HT-IDE3000 осуществляет один "шаг" при каждом выполнении команды пошаговой отладки. В автоматическом режиме программа HT-IDE3000 сама запускает команды пошаговой отладки непрерывно, до тех пор, пока не будет осуществлена команда останова эмуляции Останов (Stop) из меню Отладка (Debug). В этом режиме все пользовательские точки останова отключены. Можно установить быстрый (FAST) режим автоматической пошаговой отладки, либо установить шаг 0.5, 1, 2, 3, 4 или 5 секунд. Кроме этого, существуют 3 команды пошаговой отладки, носящих названия Вход в процедуру (Step Into), Перешагивание (Step Over) и Выход из процедуры (Step Out).
- По команде Вход в процедуру (Step Into) выполняется одна инструкция. При вызове процедуры CALL по команде Вход в процедуру (Step Into) осуществляется переход на первую строчку вызываемой процедуры
- По команде Перешагивание (Step Over) также выполняется одна инструкция, но при вызове процедуры CALL, выполняемая процедура будет пропущена и будет осуществлён переход на следующую, после команды CALL инструкцию. Все инструкции, содержащиеся в процедуре, будут выполнены, содержимое регистров и состояние МК при этом могут измениться.
- Команда Выход из процедуры (Step Out) используется только в пределах выполнения процедуры. По ней исполняются все инструкции от текущей и до выхода из процедуры RET (включая саму инструкцию RET), останов осуществляется на следующей после CALL инструкции.
Примечание: Команду Выход из процедуры (Step Out) следует использовать только в том случае, когда текущее положение курсора находится внутри процедуры, в противном случае результат выполнения команды непредсказуем.
Варианты пошаговой отладки Вход в процедуру (Step Into) либо Перешагивание (Step Over) для автоматического режима устанавливаются при помощи подменю Отладка (Debug) в меню Опции (Options)
- Для запуска автоматической пошаговой отладки
Выберите команду Пошаговое выполнение (Stepping) в меню Отладка (Debug)
Установите требуемую скорость выполнения шагов (также, командой Отладка (Debug) меню Опции (Options) выберите требуемый режим)
- Для остановки автоматической пошаговой отладки
Выберите команду Останов (Stop) в меню Отладка (Debug)
- Для смены режима при автоматической пошаговой отладке
- Выберите команду Отладка (Debug) меню Опции (Options)
- Выберите режим Вход в процедуру (Step Into) либо Перешагивание (Step Over) в командном окне пошаговой отладки (Stepping)
- Для запуска пошаговой отладки в режиме Вход в процедуру (Step Into)
Выберите команду Вход в процедуру (Step Into) в меню Отладка (Debug) или используйте горячую клавишу F8 либо нажмите соответствующую кнопку на панели инструментов
- Для запуска пошаговой отладки в режиме Перешагивание (Step Over)
Выберите команду Перешагивание (Step Over) в меню Отладка (Debug) или используйте горячую клавишу F10 либо нажмите соответствующую кнопку на панели инструментов
- Для запуска пошаговой отладки в режиме Выход из процедуры (Step Over)
Выберите команду Выход из процедуры (Step Over) в меню Отладка (Debug) или используйте горячую клавишу Shift+F7 либо нажмите соответствующую кнопку на панели инструментов
Точки останова
Программа HT-IDE3000 обладает мощным механизмом управления точками останова с использованием адреса в программе, номера строки в исходном файле, символических точек останова и т.д.
Свойства точек останова
Ниже перечислены основные особенности механизма реализации точек останова в программе HT-IDE3000:
- Одновременно можно установить до 3 точек останова с равным приоритетом.
- Все точки останова после их установки записываются в список точек останова, хотя не все из них могут быть активны в данный момент. Их можно будет активизировать позднее, до тех пор, пока они не будут удалены, они будут находиться в списке.
- В список можно добавить до 20 точек останова. Для добавления следующей, 21-ой точки останова, одну из существующих следует удалить.
- Точки останова могут устанавливаться в программной области, либо в области данных, в том числе в формате "двоичные данные с незначащими битами".
- Когда для инструкции установлена активная точка останова, программа HT-ICE остановится на этой инструкции, не выполняя её, т.е. следующей выполняемой будет данная инструкция. Даже в том случае, когда на команду установлена активная точка останова, программа HT-ICE может не остановиться в данной точке в результате выполнения условных переходов. Если активная точка останова находится в области памяти данных (ОЗУ), инструкция, в результате которой выполняется заданное условие, будет исполнена. Программа HT-ICE остановится на следующей инструкции.
Описание точек останова
Описание точек останова состоит из нескольких частей. Описывать все части необязательно (Рис. 5-3):
- Область
Область расположения точки останова, программная память (ПЗУ) или память данных (ОЗУ).
- Расположение
Расположение точки останова. В следующем параграфе будет дано описание формата расположения.
- Содержимое
Содержимое данных для точки останова. Эта опция имеет силу только в том случае, когда в качестве Области выбрана память данных (ОЗУ). Отметьте условие для срабатывания точки останова - Чтение (Read) или Запись (Write).
- Внешний сигнал
Точка останова по внешнему сигналу. Существует 4 внешних сигнала, ET0, ET1, ET2 и ET3 на разъёме JP3 на интерфейсной карте сопряжения.
Формат описания - расположение
Для описания расположения существуют следующие допустимые форматы:
- Абсолютный адрес (в пространстве программной памяти или памяти данных). Имеется четыре допустимых типа представления, носящих название десятичное, шестнадцатеричное (суффикс "H" или "h"), двоичное и двоичное с незначащими битами. Например,
20, 14h, 00010100b, 10xx0011
представляет собой десятичное число 20, шестнадцатеричное 14h, двоичное 00010100b и двоичное с незначащими битами 4 и 5.
Примечание Незначащие биты указываются в двоичном формате.
- Номер строки, включающий или не включающий название файла, в следующем виде:
[название исходного файла!].номер строки
где в качестве название исходного файла можно указать имя исходного файла. Если имя файла не указано, будет использован текущий активный файл. Восклицательный знак необходим лишь в том случае, когда имя файла указано. Разделительная точка ставится перед номером строки (он должен быть в десятичном виде) всегда.
Пример:
C:\HIDE\USER\GE.ASM!.42
Установит точку останова на 42-ой строке файла с названием GE.ASM в директории \HIDE\USER на диске C.
Пример:
.48
установит точку останова на 48-ой строке текущего активного файла.
- Символ в программе с указанием, либо без указания имени файла в следующем виде:
[название исходного файла!].название символа
формат аналогичен предыдущему примеру, за исключением того, что номер строки заменён названием символа. Допустимы следующие названия символов:
- Название метки
- Название секции
- Имя процедуры
- Динамические имена переменных, определённые в области данных
Формат описания - содержимое и внешние сигналы
Формат описания содержимого и внешних сигналов, аналогично формату расположения, имеет 4 типа представления - десятичное, шестнадцатеричное, двоичное и двоичное с незначащими битами.
Формат списка точек останова
Список точек останова содержит все точки, которые были добавлены, как активные, так и неактивные. Для добавления точек останова в список используется кнопка Добавить (Add), для удаления - кнопка Удалить (Delete). Формат описания точек останова в списке следующий:
<статус> {<область и чтение/запись >, <расположение>,<содержимое данных >, <внешний сигнал >}
где <статус> - текущий статус точки останова, "+" - активна (разрешена), "-" - неактивна (запрещена). <область и чтение/запись> представляет собой тип области и режим, "C" - программная память (ПЗУ), "D/R" - чтение из памяти данных (ОЗУ), "D/W" - запись в память данных (ОЗУ), "D/RW" - чтение либо запись памяти данных (ОЗУ). <расположение>, <содержимое данных> и <внешний сигнал> имеют такой же формат отображения, как и при его вводе.
Как установить точку останова
Существует два способа установки/разрешения точек останова. Первый - выбором команды Точка останова (Breakpoint) меню Отладка (Debug), второй - использованием кнопки Снять/установить точку останова (Toggle Breakpoint) на панели инструментов. При использовании механизма точек останова следует соблюдать следующие правила:
- Если точка останова, которую следует установить, не находится в списке (Рис. 5-3), следует сначала добавить её в список, используя необходимые описания.
- Если точка останова уже находится в списке, следует активизировать её.
- Для подтверждения нажать OK. В противном случае, изменения не вступят в силу.
- При использовании кнопки Снять/Установить точку останова (Toggle Breakpoint) на панели инструментов, следует, прежде всего установить курсор на требуемую позицию, после чего нажать кнопку. Аналогичные действия следует осуществить для отключения (деактивации) точки останова.
Добавление точки останова
Выберите команду Точка останова (Breakpoint) меню Отладка (Debug) (или нажмите горячую клавишу Ctrl+B). При этом появится диалоговое окно точек останова (Рис. 5-3)
- Задайте требуемые описания точки останова
Определите Область (Space) и Расположение (Location)
Задайте Содержимое (Content) и отметьте чтение (Read) и/или Запись (Write), если в качестве области задана область данных (ОЗУ)
При необходимости определите внешние сигналы (External signals)
- Нажмите кнопку Добавить (Add) чтобы добавить точку останова в список.
- Для подтверждения нажмите OK
Примечание: Если число активных точек останова не превышает 3, вновь добавленные точки вступают в силу автоматически после добавления.
Если список точек останова заполнен, т.е. содержит 20 точек, кнопка Добавить (Add) не будет активной, дальнейшее добавление точек невозможно.
Рис. 5-3
Удаление точки останова
- Выберите команду Точка останова (Breakpoint) меню Отладка (Debug) (или нажмите горячую клавишу Ctrl+B). При этом появится диалоговое окно точек останова (Рис. 5-3)
- Выберите или выделите точку останова, которая должна быть удалена в списке точек останова
- Нажмите кнопку Удалить (Delete) для удаления выбранной точки из списка
- Нажмите кнопку OK для подтверждения операции
Удаление всех точек останова
- Выберите команду Точка останова (Breakpoint) меню Отладка (Debug) (или нажмите горячую клавишу Ctrl+B). При этом появится диалоговое окно точек останова (Рис. 5-3)
- Выберите кнопку Очистить Все (Clear All) для удаления всех точек останова из списка
- Нажмите кнопку OK для подтверждения операции
- Вместо перечисленных выше операций можно воспользоваться кнопкой очистить Все Точки Останова (Clear All Breakpoint) на панели инструментов.
Разрешение (запрет) точки останова
- Выберите команду Точка останова (Breakpoint) меню Отладка (Debug) (или нажмите горячую клавишу Ctrl+B). При этом появится диалоговое окно точек останова (Рис. 5-3)
- Выберите разрешённую (запрещённую) точку останова в списке
- Нажмите кнопку Разрешить (Запретить) (Enable (Disable)), для разрешения (запрета) соответствующей точки останова
- Нажмите кнопку OK для подтверждения операции
Получить консультации и преобрести компоненты вы сможете у официального дистрибьютора фирмы Holtek Semiconductor компании ChipSelect, |
|