Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пособие HCS12 & Elvis II v.7.01

.pdf
Скачиваний:
223
Добавлен:
03.05.2015
Размер:
4.14 Mб
Скачать

Рис. 4.11. Окно симулятора/отладчика среды CodeWarrior Development Studio for S12(X)

На экране Вы увидите главное окно приложения, которое разделено на 7 частей (дочерних окон). В каждой такой малой области отображается определённый тип данных: исходный текст программы, значения регистров центрального процессора, двоичные коды в памяти и др. Каждое дочернее окно симулятора/отладчика регулируется по размерам и местоположению. Также на рабочее пространство можно добавить какой либо дополнительный элемент. На рис. 4.11, например, добавлено дочернее окно Memory:2. Сделано это при помощи перехода в главном меню Component Open Memory. Таким образом, пользователь может создать собственную конфигурацию интерфейса отладчика. Чтобы её сохранить, нужно сделать переход File Save Configuration или File Save Configuration As.

По умолчанию главное окно утилиты True Time Simulator & Real Time Debugger

состоит из:

Source – исходный код. В этом окне отображается программный текст, отладка которого происходит в данный момент.

Procedure – событийная процедура. Тут показывается программный код функции/подпрограммы, которая выполняется в данный момент.

Data – данные. Окно отображает глобальные переменные, которые используются в отлаживаемой программе. Сделав двойной щелчок левой кнопкой мыши по имени переменной, можно задать ей значение. Если же на него просто нажать один раз правой кнопкой, то можно выбрать способ её отображения с помощью пункта контекстного меню Format.

Assembly – ассемблерный код. Здесь отображается текст программы на языке низкого уровня.

81

Register – регистры. Окно ячеек центрального процессора. Показывает содержимое регистров A, B, D = A : B, X, Y, SP, PC, PPAGE, CCR. В верхней области окна отображается значение счётчика машинных циклов симулятора, т.е. время в тактах, которое ЦП затратил на выполнение некоторого программного фрагмента.

Memory – память. В данном окне можно посмотреть содержимое любой ячейки памяти, а также изменить её содержимое, если она доступна для записи.

Command – команды. Здесь отображаются директивы отладки, посылаемые и принимаемые от управляющего компьютера.

Внизу главного окна расположена строка состояния. В режиме программной симуляции она имеет вид, изображённый на рис. 4.12. По нему видно, что моделируется микроконтроллер MC9S12C128, его работа остановлена по контрольной точке, количество «пройденных» ранее циклов составляет 31548682 при частоте шины 2 МГц.

Рис. 4.12. Строка состояния симулятора

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

Для удобства пользователя также имеется панель инструментов отладчика (рис. 4.13). Она дублирует наиболее часто используемые функции меню. При наведении на любую из кнопок появляется всплывающая подсказка.

Рис. 4.13. Панель инструментов

Ознакомимся подробнее с каждой кнопкой панели инструментов отладчика/симулятора:

Start/Continue – старт/продолжение. При нажатии на эту пиктограмму начнется или старт программы или её продолжение с места остановки. Эту функцию также дублирует кнопка клавиатуры F5.

Single Step – один шаг. При нажатии выполняется одна инструкция ассемблера или выражение языка C. Эту операцию повторяет клавиша F11 клавиатуры.

Step Over – «перешагнуть» процедуру. Эта кнопка в целом повторяет функцию пиктограммы Single Step. Разница состоит в том, что в случае языка C одним выражением будет являться и пользовательская функция, если её вызов выпадает на текущую строку. Т.е. в таком случае при нажатии на кнопку F10 (дублирует Step Over) отладчик исполнит процедуру целиком и остановится на следующей команде основной программы.

Step Out – «уйти» из процедуры. При нажатии на эту пиктограмму исполняется всё тело функции, написанной на языке C. Отладчик/симулятор остановится на операторе, следующем сразу за вызовом функции.

Assembly Step – «ассемблерный» шаг. При нажатии на эту кнопку выполняется одна команда языка ассемблера. Использование этой функции полезно при изучении исполнения центральным процессором выражений языка C.

82

Halt – остановка. Нажатие прекращает исполнение отлаживаемой программы. Операцию остановки также можно выполнить с помощью клавиши F6 клавиатуры.

Reset Target – сброс микроконтроллера. Функция продублирована сочетанием клавиш Ctrl+R клавиатуры. При осуществлении сброса программа начнёт исполнение с адреса, определяемого значением вектора сброса. Если происходит отладка на реальной плате в режиме BDM, то компьютер пошлёт специальную команду и микроконтроллер будет сброшен.

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

этого нужно, как уже было сказано выше, нажать на пиктограмму или клавишу F5.

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

При непрерывном выполнении отлаживаемого ПО в утилите True Time Simulator & Real Time Debugger возможно использование контрольных точек, которые весьма эффективно способствуют поиску и устранению ошибок. Различают два типа контрольных точек:

Breakpoint – точка остановки. В качестве условия прекращения исполнения программы задаётся абсолютный адрес в исполняемом коде. Критерием остановки может быть и символьная метка в исходном тексте. Но в этом случае отладчик/симулятор всё равно преобразует её в двоичный код адреса. Абсолютный адрес контрольной точки сравнивается с текущим состоянием программного счетчика. При их равенстве выполнение программы останавливается. Контрольные точки типа breakpoint подразделяются на два вида: условные и безусловные. При установке точки первого вида исполнение программы прекращается, если в регистре PC находится нужное значение и выполнены некоторые дополнительные условия программиста. Например, это может быть количество прохождения программы через эту точку. В безусловных контрольных точках программа останавливается всегда, т.е. без каких-либо дополнительных условий.

Watchpoint – точка наблюдения. В качестве условия прекращения исполнения программы задаётся адрес элемента данных. Любое обращение к этим данным (запись или чтение) вызывает остановку выполнения программы и передачу управления отладчику.

Навигацию по тексту программного текста также упрощает и система маркеров. Они не останавливают выполнение программы, а просто отмечают цветом выделенную строку кода, на которую следует обратить внимание при отладке.

4.5.Работа с окнами интерфейса отладчика

4.5.1.Окно исходного кода Source

Вокне Source (рис. 4.14) утилита отладчика/симулятора показывает исходный текст программы на языке ассемблера, исполняемый в данный момент времени. Здесь также могут быть установлены контрольные точки в интересующих пользователя местах.

83

Рис. 4.14. Окно Source

Рис. 4.15. Контекстное меню окна Source

При нажатии правой кнопкой мыши в поле окна появится меню, которое позволяет перемешаться по программе и работать с контрольными точками и маркерами (рис. 4.15).

Рассмотрим подробнее все пункты меню:

Set Breakpoint – установка безусловной контрольной точки. Слева, напротив выбранной строки, появится красная отметка. Если после установки контрольной точки ещё раз нажать на правую кнопку мыши, то появится несколько отличающееся меню. В нём добавятся два пункта: Delete Breakpoint – удалить контрольную точку, Disable Breakpoint – временно отключить контрольную точку.

Run To Cursor – «добежать» до положения курсора. При выборе данного пункта в строке, на которую указывает стрелка мыши, устанавливается контрольная точка. Сразу же после этого программа запускается на выполнение с прежнего адреса. Далее на выбранной курсором строке исполнение кода автоматически прекратится.

84

Show Breakpoints – показать контрольные точки. При нажатии открывается окно Controlpoints Configuration. В нём перечислены все установленные для отлаживаемого программного модуля точки типов breakpoint и watchpoint, а также список маркеров. В окне можно легко временно отключить или удалить любую контрольную току.

Show Location – показать место расположения. При выборе этого пункта происходит выделение инструкции в окне Assembly, которая соответствует выбранной исполняемой команде

Set Markpoint – установить маркер. Помещает пометку перед выбранной строкой.

Show Markpoints – показать маркеры. Отображает все установленные маркеры при помощи вызова окна Controlpoints Configuration.

Set Program Counter – установка значения счётчика команд. В регистр PC помещается адрес выделенной инструкции.

Open Source File – открыть файл с исходном кодом.

Copy – скопировать выделенный фрагмент программы в буфер обмена. Выбор этого пункта меню аналогичен применению сочетания клавиш Ctrl+C.

Go To Line – переход на указанную строку программного кода. Значение счётчика PC при этом не изменяется. Поэтому это всего лишь навигация по окну, а не изменение внутренних регистров МК.

Find – найти. При помощи этого пункта можно осуществить поиск определённого текста по файлу программного кода. Эта функция продублирована стандартным сочетанием клавиш Ctrl+F.

Find Procedure – найти процедуру. Нажатием на эту кнопку производится поиск определённой подпрограммы в файле исходного текста.

Folding – раскрытие/скрытие блоков программного кода исходного файла.

Freeze – «заморозка» содержимого окна. Вид в окне нельзя изменить, когда программа остановлена.

Marks – пометки. Показывает/скрывает небольшие указатели возле строк программного кода, на которых можно установить контрольные точки.

Tooltips – всплывающие подсказки. Позволяет включать/выключать всплывающие подсказки. Также здесь же можно настроить их режим и формат отображения.

4.5.2.Окно регистров ЦП Register

Вокне Register (рис. 4.16) можно увидеть и изменить содержимое любого регистра центрального процессора.

Рис. 4.16. Окно Register

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

85

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

4.5.3.Окно регистров ЦП Register

Вокне Memory (рис. 4.17) отладчик/симулятор показывает содержимое определённой области памяти МК. Остановив исполнение программы, пользователь может проделать здесь множество полезных действий.

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

Если нажать правой кнопкой мыши по ячейке, откроется меню (рис. 4.18), пункты которого зависят от объекта, находящегося под курсором:

Set Watchpoint – установить точку наблюдения;

Delete Watchpont – удалить точку наблюдения;

Show Watchpoints – показать точки наблюдения;

Word Size – длина отображаемых машинных слов (Byte, Word или LWord).

Format – формат отображения машинных слов. Доступны следующие опции: Hex

шестнадцатеричный, Oct – восьмеричный, Bin – двоичный, Dec – десятичный, UDec – десятичный без знака, BitReverse – включает поразрядную инверсию.

Mode – режим обновления поля данных окна. Возможны следующие варианты: Automatic – автоматически, Periodical – с задаваемым периодом, Frozen – не обновлять.

Display – дополнительные опции отображения: Address – показывать адрес первой ячейки каждой строки, ASCII – добавляет справа символы, полученные с использованием кода ASCII.

Рис. 4.17. Окно Memory

86

Рис. 4.18. Контекстное меню окна Memory

4.5.4. Окно Data

Окна Data позволяют просматривать состояние переменных во время отладки программного кода. Гибкий формат представления данных в этих окнах предоставляет пользователю возможность наблюдения за переменными сложных типов, например, массивов, структур, перечислений и объединений. По умолчанию программа отладчика/симулятора открывает одно окно типа Data. Но можно добавить и дополнительные таковые при помощи перехода в главном меню Component Open Data. На рис. 4.19 открыто два окна типа Data. Изначально они настроены на отображение глобальных переменных. Но удобнее сделать так, чтобы в окне Data:2 были показаны локальные переменные. Делается это при помощи пункта Scope контекстного меню (рис. 4.22). Режим отображения окна Data:1 при этом нужно оставить без изменений.

Рис. 4.19. Окна Data:1 и Data:2

Рис. 4.20. Окно Data

87

Кроме переменных, которые отображаются в окнах Data автоматически, можно в процессе отладки создавать свои собственные выборки переменных. Новую переменную можно добавить как с помощью контекстного меню, так и просто путем её перетаскивания из окна Source в окно Data (рис. 4.21).

Рис. 4.21. Добавление новой переменной в окно Data

Рис. 4.22. Контекстное меню окна Data

Контекстное меню (рис. 4.22) содержит несколько пунктов, с помощью которых можно изменять формат вывода данных, управлять частотой обновления их отображения

идр. Рассмотрим все пункты по очереди:

Open Module… – открыть модуль. Нажатие на эту кнопку позволяет назначить модуль, для которого будут отображаться переменные заданного типа.

88

Add Expression… – добавить выражение (переменную).

Set Watchpoint – установить точку наблюдения. На выбранную переменную добавляется контрольная точка типа watchpoint.

Show Watchpoints… – показывать точки наблюдения. Вызывает окно Controlpoints Configuration с перечнем контрольных точек.

Set Markpoint – установить маркер. Добавляет пометку в окне Data на выбранную курсором переменную.

Show Markpoints… – показывать маркеры. Вызывает окно Controlpoints Configuration с перечнем маркеров, установленных во всех файлах отлаживаемого проекта.

Show Location – показывать место расположения. Выводит адрес и позицию выделенной переменной в окне Memory.

Zoom – позволяет отображать структуры данных. При выборе Zoom in отображаются поля структуры, а щелчок по Zoom out – наоборот, скрывает их.

Scope – позволяет выбрать, какие переменные показывать в данном окне: глобальные, локальные или пользовательские.

Mode – выбор режима обновления содержимого окна. Эта опция работает точно так же, как и соответствующий пункт в окне Memory.

Format – формат отображения данных в окне. Можно выбрать способ отображения как для выбранной переменной, так и для всего окна.

Options – дополнительные опции отображения. Пункт Pointer As Array… визуально представляет данные в виде массива с выбранным пользователем числом элементов в строке. Опция Name Width… позволяет установить максимальную длину отображения имени переменной.

Sort – выбор признака сортировки переменных в окне.

Refresh – обновить содержимое окна.

4.5.5.Окно Assembly

Вотличие от окна Source, предназначенного для просмотра исходного текста программы (рис.4.14), окно Assembly используется для просмотра ассемблированного кода

(рис. 4.23).

89

Рис. 4.23. Окно Assembly совместно с окном Source

Синим цветом в окнах Source и Assembly выделяется строка программы, которая будет выполняться на следующем шаге. В окне Assembly выделенная синим цветом строка соответствует инструкции ассемблера, которая расположена по адресу текущего значения программного счетчика PC. В этом можно убедиться, взглянув на область Register на рис. 4.23.

Окно Assembly также дает представление обо всех контрольных точках в тексте программы. Наличие установленной контрольной точки по определенному адресу обозначается стрелкой в строке (рис.4.23). Если строка, выделенная синим цветом, имеет также символ контрольной точки, то это означает, что исполнение программы прервано по контрольной точке.

4.6.Полезные навыки отладки

4.6.1.Действия в окне Memory

Используя контекстное меню окна Memory, можно перейти в поле окна памяти на определенный адрес (только с целью просмотра), заполнить ячейку необходимыми данными, скопировать блок данных из одного адреса в другой, найти значения по маске.

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

Используя контекстное меню можно настроить следующие опции:

Fill Memory – заполнение диапазона ячеек памяти определённым значением (рис. 4.24). Начальный адрес указывается в поле from Address, конечный – в to Address. Значение, которым необходимо заполнить ячейки, вводится в поле Value.

90