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

СПРАВОЧНЫЙ МАТЕРИАЛ

 

Роман Абраш

Книга по работе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

г. Новочеркасск

с WinAVR и AVR Studio

 

 

E-mail: arv@radioliga.com

 

 

 

 

 

В этой панели отображаются как неко-

 

Окно-панель наблюдения за перемен-

 

Продолжение.

 

 

 

 

 

торые недоступные для принудительного

 

ными Watch:

 

 

Начало в №1-6/2010

 

 

 

 

 

изменения значения, так и доступные.

 

 

 

 

 

 

 

 

 

 

Program Counter – программный счет-

 

 

 

 

 

 

 

Наблюдение за ресурсами

чик, показывает значение PC, т.е. в сущнос-

 

 

 

 

 

 

 

проекта

ти адрес очередной исполняемой команды.

 

 

 

 

 

 

 

Для наблюдения за содержимым всех

 

Stack Pointer – указатель стека, показы-

 

 

 

 

 

 

 

ресурсов микроконтроллера и переменных

вает адрес ОЗУ, хранящийся в регистре SP.

 

 

 

 

 

 

 

в программе пользователя во время ее от-

 

X pointer, Y pointer и Z pointer – пока-

 

 

 

 

 

 

 

ладки AVR Studio предоставляет богатый

зывает значения указателей X, Y и Z.

 

Это окно содержит 4 закладки, в каж-

 

набор средств. Прежде всего, это «Окно

 

Рассмотренные три параметра недо-

 

дой из которых можно наблюдать и при не-

 

периферии», предоставляющее удобный

ступны для принудительного изменения в

 

обходимости модифицировать содержимое

 

интерфейс наблюдения и изменения состо-

ходе отладки.

 

любых переменных (в том числе регистров

 

яния всех регистров управления встроенны-

 

Cycle Counter – счетчик машинных цик-

 

микроконтроллера) во время отладки. Ин-

 

ми периферийными устройствами микро-

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

 

формация представлена в виде таблицы из

 

контроллера. Во время отладки состояние

на исполнение всех команд с момента стар-

 

4-х столбцов:

 

 

отдельных битов изображается закрашен-

та программы. Этот счетчик может быть

 

Name – имя переменной. Можно ввес-

 

ными в черный цвет квадратиками; щелк-

сброшен в любое время 28.

 

ти имя переменной вручную, выполнив

 

нув на любом из них, программист может

 

Frequency – тактовая частота, соответ-

 

двойной щелчок в первой свободной стро-

 

изменить состояние бита на противополож-

ствует значению, заданному в настройках

 

ке. Двойной щелчок на имени уже имею-

 

ное. Это бывает необходимо в следующих

эмулятора (см. предыдущую главу).

 

щемся в окне позволяет изменить его, т.е.

 

случаях:

 

Stop Watch – время остановки. Это зна-

 

выбрать другую переменную для наблюде-

 

- обнаружена ошибка в программе, зак-

чение показывает время, прошедшее с мо-

 

ния.

 

 

 

 

 

лючающаяся в «инверсном» анализе како-

мента начала исполнения программы (т.е.

 

Value – значение переменной. Показы-

 

го-либо бита (т.е. надо проверять на равен-

с момента старта отладки) до момента ее

 

вается числовое и, если возможно, символь-

 

ство 1, а в программе ошибочно проверя-

приостановки. Этот «секундомер» может

 

ное представление. Выполнив двойной щел-

 

ется на 0 и т.п.). Конечно, можно остановить

быть сброшен пользователем в любой мо-

 

чок в этом столбце, можно принудительно

 

процесс отладки и, исправив ошибку, пере-

мент, что позволяет засекать время испол-

 

изменить значение переменной, введя лю-

 

компилировать программу, однако часто

нения отдельных участков программы.

 

бую допустимую в Си константу.

 

 

удобнее принудительно изменить бит в ре-

 

SREG – содержимое регистра статуса

 

Type – тип переменной.

 

 

гистре «наоборот», чтобы «обмануть» не-

ядра микроконтроллера, показывает состо-

 

Location – адрес начала области памя-

 

верную программу, заставив ее правильно

яние всех битов этого регистра, которые

 

ти, выделенной для хранения переменной.

 

отреагировать на ситуацию, чтобы продол-

доступны для изменения пользователем.

 

В квадратных скобках указывается тип па-

 

жить отладку остальных участков кода;

 

Далее следует группа регистрового

 

мяти (встроенное ОЗУ или внешнее).

 

 

- AVR Studio не поддерживает коррект-

файла микроконтроллера – Registers, в

 

Кроме ручного ввода имени перемен-

 

ную эмуляцию периферийного устройства

которой показано содержимое всех 32 ре-

 

ной, в окно Watch можно перетащить и бро-

 

контроллера. Например, невозможна эму-

гистров. Эти значения так же доступны для

 

сить идентифика-

 

 

ляция АЦП – значение в регистрах резуль-

модификации в любое время.

 

тор переменной

 

 

тата AVR Studio никогда самостоятельно не

 

Для панели Processor доступно всплы-

 

прямо из текста

 

 

изменяет, и для того, чтобы проимитировать

вающее меню:

 

программы, т.е.

 

 

факт реального измерения, программист

 

Hexadecimal

 

выделить пере-

 

 

должен самостоятельно ввести значения в

Display – если

 

менную, «схва-

 

 

соответствующие регистры;

отмечено, то все

 

тить» ее и перене-

 

 

- необходимо проимитировать поступ-

или только выб-

 

сти в это окно.

 

 

ление на порт микроконтроллера сигнала

ранное мышкой

 

Есть и третий спо-

 

 

извне (от прочих элементов схемы). В этом

значение будет

 

соб – установив

 

 

случае нужно изменить значение соответ-

отображаться в

 

курсор на интере-

 

 

ствующего регистра PINx вручную. Кроме

шестнадцатеричном формате, в противном

 

сующую перемен-

 

 

ручного способа имеется и «полуавтомати-

случае используется десятичный формат.

 

ную в тексте про-

 

 

ческий», так называемое «стимулирование

 

Reset Stopwatch – сброс времени ос-

 

граммы, щелк-

 

 

порта», которое рассматривается в следу-

тановки (сброс «секундомера»).

 

нуть правой кноп-

 

 

ющей главе более подробно.

 

Reset Cycle Counter – сброс счетчика

 

кой мыши и в по-

 

 

Кроме окна периферии имеется и еще

машинных тактов.

 

явившемся меню

 

 

ряд окон и панелей, управляемых при помо-

 

Show Stopwatch in milliseconds – вре-

 

(см. рисунок) выб-

 

 

щи меню «View». Рассмотрим их подробно.

мя остановки отображать в миллисекундах

 

рать команду Add

 

 

Панель состояния процессора –

(по умолчанию счет в микросекундах).

 

Watch.

 

 

 

 

 

Processor. По умолчанию (если расположе-

 

Font – изменить шрифт, используемый

 

Наконец, аналогичный результат дости-

 

ние панелей

для вывода содержимого панели.

 

гается и при нажатии на кнопку

на

 

не было изме-

 

Default Font – установить для панели

 

панели кнопок.

 

 

нено) в режи-

шрифт по умолчанию.

 

Для

окна

 

 

ме отладки

 

Help – вызов справки (на английском) о

 

Watch

имеется

 

 

автоматичес-

панели.

 

всплывающее

 

 

ки активиру-

 

 

 

 

меню:

 

 

 

 

 

ется в облас-

 

28 Здесь и далее под «любым временем» подразуме-

 

D i s p l a y

 

 

ти, где нахо-

вается любой момент остановленного исполнения програм-

 

selected Value as

 

 

дится и окно

мы. Во время автоматического или автоматического по-

 

Hex

отобра-

 

 

шагового исполнения все средства изменения состояния

 

 

 

проекта:

 

жать выбранное

 

 

регистров и портов недоступны.

 

 

5 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Радиолюбитель – 07/2010

 

 

 

 

 

 

 

 

 

 

СПРАВОЧНЫЙ МАТЕРИАЛ

значение (необходимо предварительно вы-

При помощи команд всплывающего

которые определяют границы выбранной

делить строку в таблице) в виде шестнад-

меню можно гибко управлять как отобра-

области). В поле Hex File нужно указать имя

цатеричного числа.

жением, так и содержимым наблюдаемой

файла, с которым будет осуществлена ра-

 

Display all Values as Hex – все значе-

области памяти:

бота. Кнопка Load from File позволяет заг-

ния показывать в шестнадцатеричном фор-

Hexadecimal

рузить из указанного файла содержимое в

мате.

и Decimal позво-

выбранную область памяти, а кнопка Save

 

Display Array Index as Hex – индексы

ляют переключить

to File выполняет обратную операцию – со-

массивов показывать в шестнадцатеричном

формат вывода

храняет указанную область в заданный

формате.

содержимого па-

файл. Формат файла – Intel HEX. Таким об-

 

Add Item – добавить переменную

мяти.

 

разом, реализуется достаточно удобный

 

Remove selected Item – удалить из окна

1 Byte или 2

механизм работы с «загружаемыми» дан-

выделенную строку (переменную)

Byte переключа-

ными.

 

 

Remove all items – удалить из заклад-

ют разрядность

Вернемся к окнам наблюдения: очеред-

ки все переменные

данных

(как и

ное из них – это окно просмотра регистро-

 

Font и Default font – изменение шриф-

кнопка 8/16).

вого файла Register.

та для окна, как уже было сказано ранее.

Byte address переключает режим вы-

Оно дублирует

 

Help on Watch View – вызов справки

числения адреса – побайтно (если отмече-

содержимое регист-

об окне.

но) или по 16-битным словам.

ров в

панели

 

К сожалению, просмотр массивов в

Add Data Breakpoint – команда установ-

Processor, а по

окне Watch на протяжении многих версий

ки точки остановки по изменению содержи-

функциональности

AVR Studio сопровождается одним неудоб-

мого указанной ячейки памяти.

соответствует толь-

ством: содержимое массива не обновля-

Show tooltip – включает или отключает

ко что рассмотрен-

ется в момент остановки программы (на

всплывающие подсказки.

ным окнам с той

точке останова или принудительно), поэто-

Вы можете изменить произвольно выб-

лишь разницей, что

му приходится «свернуть» и затем «раз-

ранную ячейку и посмотреть, как это ска-

позволяет отображать информацию с боль-

вернуть « массив, чтобы увидеть его акту-

жется на работе вашей программы. Очень

шим разнообразием форматов, указывае-

альное содержимое. Для сворачивания и

удобно при помощи этого окна определять

мых через всплывающее меню:

разворачивания массивов в соответству-

глубину стека, необходимую для работы

В дополнению к

ющей строке окна будет находиться кно-

программы: запускаем программу на испол-

шестнадцатерично-

почка с «плюсиком» или «минусом» соот-

нение, ждем достаточное время для того,

му и десятичному

ветственно.

чтобы все ветви алгоритма отработали, а

форматам, здесь

 

Окно просмотра содержимого памяти

затем останавливаем программу и откры-

имеется

возмож-

 

ваем окно просмотра ОЗУ. Будет хорошо

ность указать сим-

Memory 29:

 

 

 

видно, что в начале области памяти и в кон-

вольный (Ascii) или двоичный (Binary).

 

 

 

це ячейки содержат какие-то значения – в

Последнее окно, нередко необходимое

 

 

 

начале область переменных, а в конце об-

для отладки, это окно дизассемблера

 

 

 

ласть, использованная стеком. Если между

(Disassembler). Это окно располагается

 

 

 

этими областями имеется достаточное ко-

обычно в основной области, т.е. там же, где

 

 

 

личество пустых ячеек (содержат значение

и исходный текст. В нем выводится дизас-

 

 

 

0xFF) – все нормально, стек не затирает

семблированный код программы, т.е. вос-

 

 

 

область переменных. Если между этими об-

становленный до команд ассемблера. При

 

 

 

ластями нет пустоты или всего две-три ячей-

этом операторы Си так же показаны (что

 

 

 

ки не заняты – это очень тревожный при-

позволяет увидеть, какими ассемблерными

 

 

 

знак –скорее всего такая программа в ре-

командами реализован тот или иной опе-

 

 

 

альности работать не будет из-за перепол-

ратор Си):

 

 

Если окно Watch позволяет наблюдать

нения стека.

 

 

 

В комплексе с

 

 

и модифицировать значения переменных,

 

 

окном

Memory

 

 

то данное окно позволяет аналогично опе-

 

 

удобно использо-

 

 

рировать содержимым любых ячеек памя-

 

 

вать другую воз-

 

 

ти безотносительно к их распределению по

 

 

можность – заг-

 

 

переменным.

 

 

рузку или сохране-

 

 

 

В верхней части окна имеется ряд ор-

 

 

 

ние содержимого

 

 

ганов управления:

 

 

области памяти из/

 

 

 

· Список типов наблюдаемой памяти:

 

 

 

в файла, реализу-

 

 

Data (ОЗУ данных), EEPROM, I/O (область

 

 

емую командой Up/Download Memory из

Содержимое окна дизассемблера напо-

портов), Program (Flash память программ)

меню «Debug». В этом случае появляется

минает содержимое файла-листинга, за ис-

и Register (область адресов регистрового

окно следующего вида:

ключением того, что формируется не ком-

файла).

 

 

пилятором, а AVR Studio.

 

· Кнопка 8/16, позволяющая изменить

 

 

 

 

 

 

 

разрядность отображаемых данных – 8 или

 

 

Имитация входных сигналов

16 бит.

 

 

 

 

и наблюдение выходных

 

· Кнопка abc, включающая или отклю-

 

 

 

 

 

Микроконтроллер, не смотря на всю его

чающая показ символьного представления

 

 

 

 

многофункциональность, так или иначе вза-

содержимого.

 

 

 

 

имодействует с остальными элементами

 

· Поле Address, задающее адрес пер-

 

 

 

 

 

схемы конкретного устройства, т.е. должен

вой отображаемой ячейки в окне.

 

 

Точно так же вы можете указать тип

реагировать на входные сигналы, форми-

 

Если на очередном шаге отладки содер-

 

памяти – список Memory Type, задать ад-

руя выходные. Процесс отладки часто тре-

жимое ячейки памяти изменилось – это

рес первой обрабатываемой ячейки Start

бует именно контроля того, как программа

выделяется красным цветом.

Address, количество обрабатываемых яче-

отреагирует на поступающие сигналы.

 

 

 

 

 

 

ек Byte Count (при этом ориентируйтесь на

Если входных сигналов немного и алгоритм

 

29 Как было упомянуто ранее, таких окон может быть

до трех.

подсказку выше – значения Start и Size,

их поступления достаточно прост, то их

 

 

 

5 3

Радиолюбитель – 07/2010

 

 

 

 

 

СПРАВОЧНЫЙ МАТЕРИАЛ

вполне можно проимитировать, устанавли-

Если выбрано протоколирование пор-

интерфейсов накладывает ограничения на

вая нужные значения в нужные моменты

та, то файл можно и не задавать, если ак-

применимость средств – многие микрокон-

времени непосредственно в соответствую-

тивировать опцию To screen. В этом слу-

троллеры принципиально не могут работать

щих битах регистров PINx, как было сказа-

чае по мере смены уровней на выбранном

с этими средствами.

но ранее. Но этот способ сильно усложня-

порту в окне Message будут выводиться со-

Имеются средства, которые облегчают

ется, если число входных сигналов растет,

ответствующие сообщения такого вида:

процесс отладки, не заменяя эмуляцию, но

и становится почти невозможным, если ча-

 

дополняя ее – однако, это в сущности лишь

стота их поступления высока.

 

макетные платы с готовым интерфейсом

Решение этой проблемы заключается

 

«визуализации» данных – либо в виде раз-

в использовании так называемой «стиму-

 

личных дисплеев, либо в виде возможнос-

ляции» портов микроконтроллера, т.е. ими-

 

ти вывода информации из микроконтрол-

тации поступления на них внешних сигна-

 

лера в компьютер и отображения ее в окне

лов. Реализуется это при помощи заранее

 

терминальной программы.

подготовленного текстового файла с рас-

 

Все фирменные средства отладки (и, в

ширением «sti», в котором последователь-

Вывод этих сообщений не зависит от

том числе, программирования) микроконт-

но перечислены условные моменты (в ма-

того, ведется ли запись протокола в файл

роллеров приведены в справочном файле,

шинных тактах работы микроконтроллера),

или нет.

открываемом по команде меню «Help» AVR

когда состояние сигналов на порте меняет-

Создание файлов стимуляции – доволь-

Tools User Guide. В этом же файле приве-

ся, и, разумеется, сами эти значения сигна-

но-таки утомительная процедура, особенно

дены подробные инструкции по их исполь-

лов. То есть файл стимуляции имеет при-

для длительных и сложных последователь-

зованию. В рамках данной статьи рассмот-

мерно следующее содержимое:

ностей. Облегчить ее можно, если исполь-

реть все средства достаточно подробно не-

На рисунке по-

зовать дополнительные утилиты сторонних

возможно, поэтому ограничимся лишь их

казано, что в на-

разработчиков – см. главу «Дополнитель-

кратким перечнем с указанием основных

чальный момент все

ные средства».

особенностей.

сигналы, подавае-

 

ICE50 и ICE40 – эмуляторы-отладчики,

мые на порт, имеют

СРЕДСТВА ПОДДЕРЖКИ

поддерживают почти все микроконтролле-

низкий логический

АППАРАТНОЙ ОТЛАДКИ

ры, обеспечивают полный функционал от-

уровень (00). В момент наступления 9-го ма-

Под аппаратной отладкой понимаются

ладки, включая все виды точек останова,

шинного такта состояние сигналов меняет-

средства, подключаемые к компьютеру че-

поддержку аналоговой периферии, сторо-

ся на 0xAB, а к 14-ому такту на 0xAC и т.д.

рез один из имеющихся интерфейсов, и

жевого таймера, режимов «сна» микрокон-

Количество строк в файле ограничено зна-

обеспечивающих исполнение программы в

троллера и т.п. Отличаются комплектностью

чением 999999999.

реальном микроконтроллере, но под конт-

и количеством поддерживаемых микрокон-

Для стимуляции используется отдель-

ролем среды AVR Studio.

троллеров. Подключаются вместо реально-

ный режим отладки, настраиваемый груп-

Это позволяет полностью исключить

го микроконтроллера в схему пользовате-

пой параметров Stimuli and logging ранее

несоответствия программной эмуляции мик-

ля и имитируют его работу.

рассматриваемого окна настроек эмулято-

роконтроллера. Яркий пример – рассмот-

JTAGICE – эмулятор-отладчик, поддер-

ра.

ренный способ стимуляции портов. Очевид-

живающий только микроконтроллеры со

 

но, что такая стимуляция осуществляется

встроенным интерфейсом JTAG. Дополни-

 

строго синхронно с работой микроконтрол-

тельно обеспечивает возможность про-

 

лера, т.к. моменты изменения уровней сиг-

граммирования микроконтроллеров. В от-

 

налов привязаны к числу машинных тактов.

личие от ICE50, не эмулирует работу мик-

 

В реальных схемах моменты поступления

роконтроллера, а подключается к имеюще-

 

внешних сигналов никак не связаны с ра-

муся микроконтроллеру на плате пользо-

 

ботой микроконтроллера, и с точки зрения

вателя, т.е. обеспечивает наблюдение за

 

программы являются практически случай-

работой конкретного экземпляра контрол-

 

ными. Кроме того, программная эмуляция

лера.

 

попросту невозможна для ситуаций с боль-

ICE200 – несколько упрощенная версия

 

шим периодом повторения – уже отладка

ICE50 со слегка усеченным функционалом.

 

процессов, длящихся десятки секунд, в ре-

AVR Dragon – отладочный комплекс в

Вы должны указать порт, который бу-

жиме эмуляции становится утомительно

виде платы, на которой предусмотрена зона

дет подвержен стимуляции, выбрав его из

долгой, что тогда говорить о процессах, для-

макетирования, т.е. в некоторых случаях

списка Port, а так же задать файл со сти-

щихся минуты и часы!

непосредственно на плате этого устройства

мулирующей последовательностью Input,

Так же практически невозможна эмуля-

пользователь может собирать свои схемы.

после чего нажать кнопку Add Entry для

ция различных сложных и быстродейству-

Обеспечивает поддержку отладки как по ин-

добавления заданной стимуляции к спис-

ющих интерфейсов, например, CAN или

терфейсу JTAG, так и Debug Wire, реализу-

ку операций Action List. Для каждого пор-

USB, аналоговые устройства так же не эму-

ет все режимы программирования микро-

та вы можете указать свой файл аналогич-

лируются в принципе.

контроллеров. Поддерживает все микрокон-

ным способом, после чего нужные уровни

 

троллеры (часть – при помощи дополнитель-

поступят в нужные моменты времени на со-

Обзор средств

ных средств).

ответствующие «выводы портов» автома-

Большинство средств аппаратной от-

 

тически во время отладки, вам останется

ладки разработано и поставляется на ры-

Особенности использования

лишь следить за реакцией на это вашей

нок самой фирмой Atmel, имеющиеся на

Как было сказано, аппаратные отладоч-

программы.

рынке образцы сторонних производителей

ные средства делятся на 2 типа: эмулирую-

Кроме стимулирования существует об-

– лишь упрощенные версии фирменных ус-

щие микроконтроллер и наблюдающие за

ратная задача – протоколирование сигна-

тройств, либо их функциональные аналоги.

микроконтроллером. Первый тип, не смот-

лов, формируемых микроконтроллером –

Аппаратная отладка может осуществ-

ря на гибкость и широкий спектр поддерж-

Logging. В этом случае сигналы выбранно-

ляться либо по стандартному интерфейсу

ки контроллеров, не может быть на 100%

го порта сохраняются в файл с расширени-

JTAG, встроенному в некоторые типы мик-

полным аналогом, т.е. все равно в силу

ем «log» точно в том же виде, как и при сти-

роконтроллеров, либо по интерфейсу Debug

своей работы может иметь отклонения от

муляции. Выбор функции – стимуляция или

Wire, так же присутствующему во многих

поведения реальных кристаллов. Боль-

протоколирование – осуществляется выбо-

моделях микроконтроллеров. Необходи-

шинство таких отклонений известны и пе-

ром соответствующей опции Function.

мость аппаратной поддержки указанных

речислены в соответствующих фирменных

5 4

Радиолюбитель – 07/2010

 

СПРАВОЧНЫЙ МАТЕРИАЛ

документах, однако полной гарантии в от-

Как видите, указатель передвинулся на

операторов или удалить ненужные куски

сутствии новых нет.

 

очередную строку программы (а сама стро-

кода вообще.

С другой стороны, «наблюдающие» че-

ка выделилась). Дальнейшее нажатие кла-

К сожалению, без оптимизации размер

рез JTAG или Debug Wire отладчики кате-

виш F10 или F11 позволит последователь-

кода получается существенно больше, чем

горически не подходят для отладки многих

но исполнить и остальные операторы про-

с оптимизацией, и для микроконтроллеров

моделей контроллеров…

граммы, наблюдая по ходу дела за изме-

с малым объемом памяти никакой отладки

Наконец, всем типам аппаратных

нениями, осуществляемыми ими над пере-

вообще может не получиться. Тут придется

средств все равно присуща одна главная

менными. На рисунке показано содержи-

идти на компромисс: либо отлаживать про-

проблема: допуская в любой момент при-

мое регистра DDRB до исполнения опера-

грамму с «чудесами», стараясь уследить за

остановку исполнения программы, они тем

тора DDRB=255 и после:

тем, что она делает, либо собрать проект

самым нарушают «реальность» окружения

 

без оптимизации и отладить его на микро-

микроконтроллера. Скажем, остановив

 

контроллере, максимально близком к нуж-

контроллер, они не останавливают сигна-

 

ному, но с бОльшей памятью – так как мно-

лы с датчиков, подключенных к нему. В

 

гие контроллеры обладают сходной пери-

этом случае программа исполняется все

 

ферией, то погрешность такого метода ми-

равно не в той среде, как при реальной

 

нимальна.

 

 

работе устройства – и это следует учиты-

 

 

 

 

вать при отладке.

 

 

Автоматическое исполнение

 

 

 

 

программы

ПРОЦЕСС

 

 

Кроме исполнения программы по ша-

ОТЛАДКИ ПРОГРАММЫ

А окно программы при этом будет уже

гам под контролем пользователя, имеют-

Итак, рассмотрены практически все

таким:

ся и режимы автоматического исполне-

средства обеспечения отладки – от окна

 

ния – как по шагам, так и в непрерывном

AVR Studio до внешних аппаратных отлад-

 

режиме.

 

 

чиков. Настала пора рассмотреть в дета-

 

Автоматическое исполнение по шагам

лях сам процесс отладки, т.е. как исполь-

 

заключается в том, что AVR Studio самосто-

зуются и взаимодействуют все рассмот-

 

ятельно подает сама себе команды Step

ренные средства.

 

 

Into. Этот режим позволяет пронаблюдать,

Начинается процесс отладки с нажатия

 

как программа исполняется – после каждо-

кнопки

или соответствующей горячей

Далее в программе следует оператор

го автоматического шага обновляются зна-

комбинации клавиш Ctrl-Shift-Alt-F5. Ра-

бесконечного цикла, в котором постоянно

чения во всех окнах, и программист, наблю-

бочее пространство AVR Studio при этом

увеличивается на 1 содержимое PORTB,

дая за этим процессом, может сделать ка-

видоизменяется, подготавливаясь к про-

т.е. на выводах порта формируется возра-

кие-то выводы.

цессу отладки. Если используются сред-

стающая двоичная последовательность

Запускается автовыполнение по шагам

ства аппаратной поддержки – они иници-

сигналов:

кнопкой

 

(Auto Step). Остановка этого

ализируются (их подключение должно

Окно периферии

процесса осуществляется командой Break

быть сделано ранее). В окне с исходным

 

(кнопка

).

 

текстом появляется желтая стрелка, ука-

 

Необходимость обновления большого

зывающая на строку программы, готовую

 

количества информации на дисплее дела-

к исполнению:

 

 

ет этот режим достаточно медленным. Если

 

 

 

 

необходимо отладить программу, содержа-

 

 

 

 

щую большие участки уже проверенного

 

 

 

 

кода или же длительные циклы, можно вос-

 

 

 

 

пользоваться режимом автоматического ис-

 

 

 

 

полнения, который включается командой

 

 

 

 

Run (кнопка

). В этом случае вся ин-

Теперь, в зависимости от намерений

 

формация во всех окнах и панелях «замо-

программиста, можно открыть любое из

 

раживается», в то время как программа «ис-

рассмотренных ранее окон для просмот-

 

полняется» на полной скорости. В случае ис-

ра переменных, памяти, регистров и т.п. –

 

пользования аппаратных отладчиков про-

на этом подготовительные операции за-

 

исходит действительное исполнение про-

вершены.

 

 

Пошаговое исполнение может осуще-

граммы, т.е. микроконтроллер работает на

 

 

 

ствляться и в том случае, когда открыто окно

заданной тактовой частоте, а в случае эму-

Пошаговое исполнение

дизассемблера – в этом случае каждый шаг

ляции – «виртуальное» исполнение проис-

программы

 

будет соответствовать одной ассемблерной

ходит на максимально возможной скорос-

После подготовки начинается, соб-

команде.

ти эмуляции, обеспечиваемой мощностью

ственно, процедура отладки. Обычно она

Следует отметить, что нормальная от-

компьютера.

 

заключается в пошаговом исполнении про-

ладка возможна только при компиляции

Остановить режим исполнения так же

граммы, т.е. исполнению операторов од-

программы с отключенной оптимизацией

можно командой Break.

ного за другим. Под пошаговым исполне-

(см. главу «Параметры компиляции проек-

 

 

 

нием подразумевается то, что каждый опе-

та»). При включении оптимизации при от-

Точки останова

ратор исполняется только после того, как

ладке могут наблюдаться «чудеса»: то по-

Кроме принудительной остановки ис-

программист даст на это команду – нажмет

рядок исполнения строк программы не со-

полнения программы, в котором не очень

кнопку

или

(т.е. команды Step Into

ответствует ожиданиям, то некоторые пе-

много пользы, имеется гораздо более удоб-

или Step Over – см. меню Debug – отлад-

ременные недоступны для наблюдения в

ный способ – указание точки останова

ка). Содержимое окна немного изменится:

окне Watch, или же в какой-то строке про-

(breakpoint).

 

 

 

 

граммы невозможно поставить точку оста-

AVR Studio реализует 2 типа точек ос-

 

 

 

нова. Эти эффекты – следствие работы оп-

танова – программная (Program breakpoint)

 

 

 

тимизатора, который просто может выбро-

или по изменению данных (Data breakpoint).

 

 

 

сить за ненадобностью некоторые строки

Программная точка останова просто поме-

 

 

 

программы, изменить (не нарушая логику

чает строку программы, дойдя до которой

 

 

 

работы) последовательность выполнения

процесс автоисполнения будет остановлен,

 

 

 

5 5

Радиолюбитель – 07/2010

 

 

 

 

 

СПРАВОЧНЫЙ МАТЕРИАЛ

при этом сама строка еще не будет вы-

нем можно удалить точку, выделив стро-

 

 

полнена. Такие точки останова очень по-

ку и нажав Del, или временно деактиви-

 

 

лезны при отладке долгих процессов, пре-

ровать, «сняв» галочку с нужной точки (в

 

 

рываний и т.п. В этом случае весь неин-

этом случае останова не будет происхо-

 

 

тересный для программиста код испол-

дить, хотя сама точка останется). Но го-

 

 

няется автоматически и достаточно быс-

раздо больше возможностей предостав-

 

 

тро, а со строки, отмеченной точкой ос-

ляет кнопка

в этом окне (или коман-

 

 

танова, отладка ведется по шагам.

да Properties из всплывающего меню),

 

 

Остановка по изменению данных про-

которая открывает следующее окно:

 

 

исходит лишь в том случае, когда програм-

 

 

 

 

ма изменит значение указанной перемен-

 

 

 

 

ной (или указанной области памяти). Этот

 

 

 

 

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

 

 

 

 

программе, где происходит незапланиро-

 

 

 

 

ванное изменение переменной. Например,

 

 

 

 

в ходе отладки обнаруживается, что гло-

 

 

Наконец, если выбран конкретный ад-

бальная переменная tmp принимает зна-

 

 

рес – активируется поле для его ввода.

чение, которое программист не предус-

 

 

Следует учесть, что если окажется, что

матривал, в результате чего программа

 

 

заданный адрес находится «внутри» ка-

исполняется неверно. Если программа

 

 

кого-то оператора, то в окне текста про-

состоит из нескольких модулей, а каждый

 

 

граммы никакой отметки соответствую-

модуль – из сотен строк, то простым ана-

 

 

щей строки не будет, увидеть ее можно

лизом исходного текста программы най-

 

 

будет лишь в окне дизассемблера, одна-

ти место этого изменения очень сложно,

 

 

ко остановка будет происходить все рав-

а если это связано с переменными-указа-

В этом окне можно настроить много

но. Только вот с выделением строки, на

телями, то может и вообще невозможно.

параметров установленной программной

которой произошла остановка, может

В этом случае программист задает точку

точки останова. Начнем рассмотрение

возникнуть небольшая проблема: после

остановки по любому изменению перемен-

снизу вверх, т.к. внизу расположены об-

оптимизации, как было сказано, не все-

ной tmp и запускает программу на испол-

щие для разных режимов опции. Во-пер-

гда имеется возможность однозначно оп-

нение. Всякий раз, как только произойдет

вых, опция Enabled управляет активнос-

ределить, какому именно оператору Си

модификация содержимого переменной,

тью точки (галочка в списке). Во-вторых,

соответствует конкретная ассемблерная

автоисполнение будет прекращено на пер-

имеется возможность не останавливать

команда. В этом случае после остановки

вом же операторе после модификации.

исполнение при проходе точки, а только

может быть выделена строка с операто-

Проанализировав это место в тексте про-

обновить содержимое всех окон AVR

ром, следующим за тем, внутри которо-

граммы и сопоставив при необходимости

Studio – за это отвечает опция Continue

го произошла остановка.

его с текущим содержимым других пере-

execution after the views have been

Возможностей программных точек

менных, программист либо продолжает

updated. В-третьих, имеется возможность

останова, как видите, достаточно нема-

автоисполнение (если это место вне по-

остановиться не сразу, а лишь после оп-

ло, но возможностей остановки по изме-

дозрений), либо приступает к исправле-

ределенного количества проходов по точ-

нению данных существенно больше!

нию найденной ошибки.

ке (очень удобно при отладке циклов) –

Установить точку остановки по изме-

Установка обычных точек остановки

для этого следует указать в окне Break

нению данных можно либо при помощи

происходит простым нажатием кнопки

execution after значение, большее 1. Ря-

меню «Debug» (команда New Breakpoint

(или командой Toggle Breakpoint), при этом

дом с этим окном приводится для справ-

Data breakpoint), либо непосредствен-

строка, в которой находится курсор (тексто-

ки число проходов через точку к текуще-

но в окне просмотра точек остановки

вый, а не «мышиный»), отмечается красной

му моменту (на рисунке – 0 проходов).

Breakpoints and Tracepoints. Во втором

точкой:

Теперь рассмотрим остальные опции

случае для этого следует использовать

 

сверху вниз.

 

кнопку

или команду New из всплы-

 

Bound to – указывает, к чему применя-

вающего меню. При любом способе от-

 

ется точка. Варианты возможны такие: File

крывается окно настройки параметров

 

– строка в файле модуля, Function – функ-

точки останова:

 

ция в модуле или Address – адрес машин-

 

 

 

ного кода в программе. Переключения об-

 

 

 

ласти точки изменяет вид остальной части

 

 

 

окна, делая одни опции активными, а дру-

 

 

 

гие – недоступными.

 

 

 

Если точка назначается строке в фай-

 

 

Одновременно с этим в окне

ле, то вы можете указать собственно имя

 

 

Breakpoints and Tracepoints появляется

файла в поле File и номер строки в нем –

 

 

новая строка:

поле Line (но гораздо проще это сделать,

 

 

 

как было сказано ранее – командой Toggle

 

 

 

Breakpoint).

 

 

 

 

Для точки на функции станет активным

 

 

 

поле выбора функций программы –

 

 

 

Function. Вы должны будете либо ввести

 

 

 

имя функции в этом поле (в особом форма-

 

 

В этом окне указано, что точка оста-

те), либо, что удобнее, нажать кнопочку ря-

 

 

новки установлена в модуле demo1.c в

дом с полем и выбрать функцию из списка

 

 

строке с номером 8, эта точка в настоя-

(см. рисунок в следующей колонке).

Параметров, как видите, существенно

щее время активирована (отмечена га-

В этом окне в виде древовидной струк-

больше, чем для программной точки. Самые

лочкой) и вызывает остановку всегда.

туры показаны все функции проекта, до-

нижние опции – точно такие же, как и ра-

Данное окно позволяет гибко управлять

статочно выбрать нужную и нажать кноп-

нее, а вот верхние следует рассмотреть

точками останова. Непосредственно в

ку ОК.

 

подробно.

 

5 6

Радиолюбитель – 07/2010

 

СПРАВОЧНЫЙ МАТЕРИАЛ

Самый верхний элемент – список усло-

чтение) и Write only (только запись). В пер-

Частично эту проблему можно решить

вий срабатывания точки останова – Break

вом случае проверка происходит после лю-

при помощи других средств отладки, наи-

when (остановить, когда). В раскрываю-

бого обращения к переменной, во втором –

более интересным из которых следует при-

щемся списке перечислены все возможные

только после считывания, в третьем – толь-

знать программы симуляции электронных

варианты условий:

ко после записи.

схем. К сожалению, все эти программы –

· Location is accessed – осуществлен

Далее следует опция выбора способа

исключительно коммерческие, т.е. далеко

любой доступ к переменной

контроля многобайтных переменных: MSB

не бесплатные.

· Location content is equal to a value

– только старший байт или Any byte – лю-

Одна из очень удачных программ для

значение переменной совпадает с указан-

бой байт.

этого – небезызвестный ISIS Proteus

ным значением

Группа опций Custom data type (пользо-

Professional фирмы Labcenter Electronics.

· Location content is not equal to a value

вательский тип данных) позволяет задать

Эта программа позволяет «нарисовать»

– значение переменной не равно указанно-

режим проверки переменных нестандарт-

принципиальную схему устройства с мик-

му значению

ных типов. Активировав эту опцию, следу-

роконтроллером, используя «интерактив-

· Location content is greater than a value

ет выбрать базовый тип переменной Base

ные» элементы, а затем «загрузить» в мик-

– значение переменной больше указанного

type и указать ее фактический размер в

роконтроллер написанную программу и

значения

байтах Size. Это необходимо делать в тех

«подать питание» на схему. При этом про-

· Location content is less than a value

случаях, если контролируются переменные

граммно моделируется поведение всех

значение переменной меньше указанного

не стандартных типов, а введенных пользо-

элементов – от микроконтроллера до ре-

значения

вателем.

зистора и транзистора, по возможности все

· Location content is greater than or

Группа опций Custom scope (область

происходящие в схеме изменения отобра-

equal to a value – значение переменной

просмотра) позволяет указать область кон-

жаются практически в реальном времени

больше или равно указанному значению

тролируемой памяти, задав начальный и

на дисплее – «загораются» светодиоды,

· Location content is less than or equal

конечный адреса – поля Start addr и End

«вращаются» моторы, динамики издают

to a value – значение переменной меньше

addr соответственно.

звуки и т.п. Кроме чисто визуальных

или равно указанному значению

Следует отметить, что в большинстве

средств можно использовать «виртуаль-

· Location content is within a range

случаев пользователю не нужно произво-

ные» инструменты – осциллограф, генера-

значение переменной находится в указан-

дить настройку режимов контроля перемен-

тор сигналов и т.п.

ном диапазоне

ных, согласившись с параметрами по умол-

Эта программа позволяет не только

· Location content is outside a range

чанию.

увидеть внешние эффекты, демонстриру-

значение переменной вне указанного диа-

Возвращаясь немного назад, к окну

ющие результат работы программы, но и

пазона

просмотра содержимого памяти, следует

так же, как и в AVR Studio, проводить от-

· Bits of a location is equal to a value

сказать, что в его всплывающем меню име-

ладку по шагам, просматривая содержи-

определенные биты в переменной имеют

ется команда установки точки останова по

мое переменных и памяти. К сожалению,

заданные значения

изменению любой области памяти без при-

изменить вручную содержимое перемен-

· Bits of a location is not equal to a value

вязки к конкретной переменной Add Data

ных в этом случае невозможно.

– определенные биты в переменной не со-

breakpoint. Пользоваться этой возможнос-

Начиная с версии AVR Studio 4.16 по-

впадают с заданным значением

тью очень удобно, например, для контроля

явилась возможность интеграции с уста-

Если для указанной переменной (в

вершины стека программы.

новленным Proteus ISIS. Если протеус был

поле Location) выполняется выбранное

Когда происходит срабатывание точки

уже установлен к моменту установки AVR

условие – происходит срабатывание точ-

остановки, она отмечается стрелочкой жел-

Studio, то в списке платформ для отладки

ки и автовыполнение программы оста-

того цвета:

(см. главу «Мастер проектов» – раздел о

навливается (разумеется, лишь в том

 

выборе платформы отладки Select debug

случае, если все другие условия этому не

 

platform and device) появится платформа

противоречат). В зависимости от того,

 

Proteus VSM Viewer. Если выбрать эту

какое именно условие выбрано, меняют-

 

платформу, то при запуске отладки про-

ся остальные поля ввода значений. Так,

 

изойдет «внедрение» протеуса внутрь

например, для проверки битов в перемен-

 

окна AVR Studio – при этом схему отлажи-

ной, появляется поле ввода маски

 

ваемого устройства можно создать там,

Bitmask (в котором надо отметить еди-

Следует дополнительно отметить, что

а отлаживать в студии. У этого гибрида

ничными значениями те биты, которые

в окне Breakpoints and Tracepoints могут

масса достоинств – все плюсы отладки по

анализируются в переменной), а при про-

быть указаны (а в тексте программы – рас-

точкам останова и просмотру/изменению

верке значения на попадание в диапазон

ставлены) не только точки остановки, но и

переменных от студии и все плюсы точной

– появляются поля ввода минимального

точки трассировки (Tracepoints), для кото-

имитации аналоговой периферии и схемы

и максимального значения. Value – это

рых имеются соответствующие команды.

от протеуса. Недостаток только один – тре-

поле значения, с которым сравнивается

Точка трассировки позволяет проследить

бования к памяти и мощности процессора

указанная в Location переменная. Выбор

момент «прохода» программы через указан-

компьютера. Так же порой эта связка мо-

переменной проще всего осуществить из

ную строку, т.е. позволяет получить в неко-

жет «упасть», т.е. обе программы завер-

списка, открывающегося по нажатию

тором смысле «протокол» исполнения про-

шаются по ошибке (редкое явление).

кнопки с многоточием рядом с полем

граммы. Однако эта возможность реализу-

Proteus был бы исключительно незаме-

Location – вид этого списка совпадает с

ется только при наличии средств аппарат-

нимым средством для любого разработчи-

ранее рассмотренным списком выбора

ной поддержки, в режиме «виртуальной»

ка, если бы не был весьма дорогостоящим

функций, с той лишь разницей, что вы-

отладки недоступна и потому не рассмат-

продуктом.

бирать следует переменные (локальные

ривается.

 

или глобальные).

 

 

Далее следуют поля и опции «тонкой»

Альтернативные средства

 

настройки режима контроля значения пере-

отладки

 

менных.

Не смотря на достаточно широкие воз-

 

Поле Access type позволяет указать

можности виртуального исполнения про-

 

способ обращения к переменной, после ко-

граммы, часть проблем с их помощью ре-

 

торого осуществляется проверка условия.

шить невозможно без использования либо

 

Есть три варианта: Read/Write (любое об-

аппаратных средств, либо без натурных

 

ращение к переменной), Read only (только

испытаний устройства.

Продолжение в №8/2010

 

 

 

 

 

 

 

 

5 7

Радиолюбитель – 07/2010

 

 

 

 

 

Соседние файлы в папке Книга по работе с WinAVR и AVR Studio