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

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

 

Роман Абраш

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

с WinAVR и AVR Studio

 

 

E-mail: arv@radioliga.com

 

 

 

 

 

 

 

· Regular expression – введенный текст

 

 

 

 

Кнопка Find Next, как и ранее, позво-

 

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

 

 

 

 

 

 

 

 

представляет собой регулярное выражение

 

 

 

 

ляет найти и выделить очередное вхож-

 

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

 

 

 

 

 

 

 

 

 

для поиска

 

 

 

 

 

 

дение текста, кнопка Replace – заменить

 

 

 

 

 

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

 

 

 

 

найденный текст другим, а кнопка Replace

 

Редактирование

 

ние поиска (Direction) – вверх (Up) или вниз

 

 

 

 

All – найдет и заменит все вхождения в ука-

 

исходных текстов

 

(Down).

 

 

 

 

 

 

занной области.

 

 

AVR Studio для исходных текстов

 

 

Нажатие кнопки Find Next приведет к

 

 

 

 

Как и ранее, для поиска можно исполь-

 

программ реализует достаточно широ-

 

тому, что будет найдено и выделено следу-

 

 

 

 

зовать регулярные выражения.

 

кий набор функций редактирования.

 

ющее (по отношению к положению курсо-

 

 

 

 

Как было уже упомянуто, имеется воз-

 

Часть функций стандартна для всех

 

ра) заданное вхождение искомого текста.

 

 

 

 

можность поиска текста в нескольких фай-

 

Windows-программ, например, работа с

 

Если в процессе поиска будет достигнут

 

 

 

 

лах, для чего служит команда меню «Edit»

 

буфером обмена (копирование, вставка

 

конец файла – поиск продолжится с нача-

 

 

 

 

Find in Files.

 

 

и т.п.), есть ряд возможностей, специфич-

 

ла, т.е. будет происходить по кругу в ука-

 

 

 

 

 

 

 

 

 

 

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

 

занном направлении.

 

 

 

 

 

 

 

 

 

 

 

 

программ.

 

 

Если заданного текста не найдено –

 

 

 

 

 

 

 

 

 

 

По умолчанию некоторые команды ре-

 

выводится сообщение.

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Кнопка Mark All приведет к тому, что

 

 

 

 

 

 

 

 

 

 

нели редактирования, некоторые – через

 

будут найдены все вхождения указанного

 

 

 

 

 

 

 

 

Таблица 1

 

команды меню и(или) горячие клавиши.

 

текста в файле и каждая строка с этим тек-

 

 

 

 

 

 

 

 

 

 

Действие

 

Сочетание

 

Если некоторые команды вам удобнее вы-

 

стом будет помечена закладкой.

 

 

 

 

 

 

 

 

 

 

 

 

клавиш

 

 

 

 

 

 

 

 

 

 

 

полнять при помощи горячих клавиш или,

 

 

Поиск по регулярному выражению – это

 

 

 

 

 

 

 

Перемещение по тексту

 

наоборот, при помощи мыши (через кноп-

 

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

 

 

 

 

 

 

 

 

 

 

На символ влево

 

 

 

ки), следует перенастроить AVR Studio, как

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На символ вправо

 

 

 

было рассказано в главе «Настройка интер-

 

ритмам. О формате регулярных выраже-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

фейса IDE».

 

ний22 можно почитать, например, в [4]. Что-

 

 

 

 

На строку вверх

 

 

 

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

 

бы немного пролить свет на эту возмож-

 

 

 

 

На строку вниз

 

 

 

ветствующих горячих клавиш по умолчанию

 

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

 

 

 

 

 

 

 

 

Прокрутка текста на строку вверх

 

Ctrl –

 

приведен в таблице 1.

 

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

 

 

 

 

 

 

 

 

 

 

Прокрутка текста на строку вниз

 

Ctrl –

 

Редактор тесно интегрирован с отлад-

 

в своей работе:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В конец строки

 

End

 

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

 

 

 

 

 

 

 

 

 

 

 

обходимых при отладке. Хотя этими коман-

 

 

Нужно найти

Регулярное

 

 

 

 

 

В начало строки

 

Home

 

 

 

выражение для этого

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

На страницу вниз

 

PgDn

 

 

Любой элемент массива,

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

На страницу вверх

 

PgUp

 

 

адресуемый целочисленной

\[\s*\d*\s*\]

 

 

 

 

 

 

 

рассматриваются они в главе «Компиляция

 

 

 

 

 

 

 

 

 

 

константой

 

 

 

 

 

 

В конец документа

 

Ctrl – End

 

и отладка».

 

 

 

 

 

 

 

 

 

 

 

 

Функцию, имя которой

 

 

 

 

 

 

 

 

 

 

 

 

 

\b\s*_+\w*\s*\(

 

 

 

 

 

В начало документа

 

Ctrl – Home

 

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K началу следующего слова

 

Ctrl –

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мыши меню. Оно содержит достаточно мно-

 

 

Приведенные примеры регулярных вы-

 

 

 

 

Kначалу предыдущего слова

 

Ctrl –

 

го команд, часть из которых доступна толь-

 

ражений достаточно «интеллектуальны».

 

 

 

 

 

 

 

 

Вставка табуляции

 

Tab

 

ко в режиме отладки (и рассматривается в

 

Например, первое выражение позволит най-

 

 

 

 

 

 

 

 

 

 

Переход к предыдущей позиции

 

Shift –Tab

 

соответствующей главе), другая часть ко-

 

ти текст «[1]», «[128]» и «[ 0 ]», но проигно-

 

 

 

 

 

 

 

 

 

 

 

табуляции

 

 

 

 

 

 

 

 

 

 

манд доступна всегда, но имеет смысл толь-

 

рирует «[a]» или «[i++]». Второе выражение

 

 

 

 

 

 

 

 

 

 

Операции с закладками

 

ко для режима отладки.

 

обнаружит функцию «_demo(void)», но про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Включить/отключить закладку в

 

 

 

 

 

 

игнорирует «func_demo()».

 

 

 

 

 

Ctrl – F2

 

 

 

 

 

 

 

 

текущей строке

 

 

Поиск и замена текста

 

 

 

 

 

 

 

 

 

 

Поиск с заменой осуществляется при

 

 

 

 

 

 

 

 

 

 

Переход к следующей закладке

 

F2

 

При нажатии Ctrl-F или выполнения ко-

 

помощи команды меню «Edit» Replace.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переход к предыдущей закладке

 

Shift – F2

 

манды меню «Edit» Find открывается окно

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удалить все закладки

 

Ctrl – Shift – F2

 

поиска текста в текущем файле:

 

ренное ранее:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск и замена

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск

 

Ctrl – F или Alt – F9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск следующего вхождения

 

F3

 

 

 

 

 

 

 

 

 

 

 

 

текста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск предыдущего вхождения

 

Shift – F3

 

 

 

 

 

 

 

 

 

 

 

 

текста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В поле-списке Find what можно ввести

 

 

Небольшое отличие заключается в том,

 

 

 

 

Выделение и удаление

 

 

 

 

 

 

 

 

 

 

 

 

 

Выделить все

 

Ctrl – A

 

(или выбрать из выпадающего списка один

 

что имеется два поля-списка: первое Find

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удалить слово правее курсора

 

Ctrl – Del

 

из вариантов предыдущего поиска) текст,

 

what для поиска текста, второе Replace

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удалить слово левее курсора

 

Ctrl – BkSp

 

который следует найти. Если в момент вы-

 

with – для указания текста, который будет

 

 

 

 

 

 

зова команды поиска курсор находился в

 

заменять найденный. Кроме того, вместо

 

 

 

 

Удалить строку

 

Ctrl – L

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Shift + команды

 

дится в это поле.

 

поиска (Replace In): только внутри выделен-

 

 

 

 

Выделить

 

перемещения по

 

Далее следует задать режимы поиска:

 

ного текста (Selection) или во всем файле

 

 

 

 

 

 

 

 

тексту

 

 

 

 

 

 

 

 

 

 

 

 

· Match whole words only – искать со-

 

(Whole file).

 

 

 

 

 

 

Отменить выделение

 

Esc

 

впадение только целых слов

 

 

 

 

 

 

 

 

 

 

 

Дополнительно

 

 

· Match case – искать с учетом регист-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22 Регулярные выражения вполне заслуживают

 

 

 

 

Отменить правку

 

Alt – BkSp

 

ра символов

 

отдельной книги.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отменить отмену правки

 

Ctrl – Shift – BkSp

 

 

 

 

 

 

 

 

 

 

 

 

 

5 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Окно поиска в файлах более простое,

процесс. Иногда требуется процесс очис-

использование какой-либо разной внешней

содержит всего три поля для ввода:

тки (Clean), т.е. удаления всех ранее со-

периферии, или предполагается, что про-

· Find what – текст, который надо найти

зданных объектных файлов, чтобы заново

ект будет портирован на другое семейство

· In files/filetype – шаблон просматри-

перекомпилировать их все.

микроконтроллеров и т.п. В каждом конк-

ваемых файлов (например, «*.c» - исходные

Традиционно процесс компиляции и

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

тексты программ на Си)

сборки проекта автоматизируется при по-

небольшие вариации исходных текстов всех

· In folder – папка, в которой осуществ-

мощи так называемого make-файла, в ко-

модулей, параметров конфигурации и т.п.

ляется просмотр указанных файлов.

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

Программист стоит перед выбором: или

Опция Search only in files in project ог-

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

создавать набор почти одинаковых фай-

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

вательно выполнить, в результате процесс

лов для каждого случая, или каким-то об-

ми текущий проект, отключая указанную

напоминает исполнение команд в bat-фай-

разом учесть разные варианты в одних и

папку.

ле. Однако, среда AVR Studio позволяет от-

тех же файлах (способы для этого уже рас-

При поиске в файлах нельзя использо-

казаться от использования этого подхода,

смотрены – см. «Директивы условной ком-

вать регулярные выражения. Введенный

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

пиляции»). Но остается открытым вопрос,

текст ищется с учетом регистра символов.

привычную для Windows – графический

как упростить процесс выбора нужного ва-

Все найденные вхождения помещаются в

интерфейс. Фактически, генерация и испол-

рианта. Вот для этого как раз и существу-

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

нение make-файла осуществляется, одна-

ет так называемая конфигурация проекта,

в таком виде:

ко она скрыта от пользователя.

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

 

 

ких вариантов настроек для одного и того

 

Параметры

же проекта.

 

компиляции проекта

По умолчанию всегда существует одна

 

Ранее уже упомина-

конфигурация – default (по умолчанию).

 

лись команды в главном и

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

 

контекстном меню проек-

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

 

та, выполняющие на-

троллеров – нужно создать нужное количе-

В каждой строке списка указывается

стройку параметров компиляции. Рассмот-

ство конфигураций (далее будет сказано,

полный путь к файлу, в котором найден ука-

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

как). Для каждой конфигурации задается

занный текст, затем указывается номер

крывается.

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

строки с вхождением текста и сама строка.

 

ные (если нужно) подключаемые файлы,

Двойной щелчок на строке в этом окне при-

 

определяются константы, макросы и т.п. Все

ведет к тому, что будет открыт нужный

 

это автоматически сохраняется при сохра-

файл, и курсор будет установлен в нужную

 

нении проекта. Когда потребуется – следу-

строку.

 

ет выбрать нужную конфигурацию, т.е. сде-

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

 

лать ее текущей, и выполнить очистку и

полнить ряд других действий при помощи

 

пересборку проекта.

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

 

Вернемся к диалогу настроек. При на-

мыши контекстного меню:

 

жатии кнопки Edit Configurations (редакти-

· Clear – очистить окно

 

рование конфигураций) открывается окно

· Copy – скопировать

 

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

выделенную строку в бу-

 

 

фер обмена

 

 

· Font – изменить

Это окно настройки параметров компи-

 

шрифт для текста в окне

ляции и сборки проекта.

 

· Default Font – уста-

В левой части его имеется область для

 

новить шрифт по умолча-

выбора групп параметров в виде графичес-

 

нию

ких символов, а остальная часть служит для

 

· Help on Output

настройки соответствующих опций.

 

просмотреть справку об

Всего 5 групп параметров:

 

окне

· General – основные

 

Опции Info (информация), Warning (пре-

· Include Directories – подключаемые

 

дупреждения), Error (ошибки) и Timestamp

директории

 

(дата и время) позволяют указать, какого

· Libraries – библиотеки

 

рода информация должна отображаться в

· Memory Settings – настройки парамет-

 

этом окне.

ров памяти

 

Компиляция и отладка

· Custom Options – параметры пользо-

В нем перечислены все существующие

вателя

конфигурации (в данном случае – един-

Так как проект может состоять из не-

 

ственная default). Выбрав нужную из спис-

скольких модулей, различают компиляцию

General – основные

ка, вы можете ее удалить кнопкой Delete

модуля и сборку (построение) проекта.

Рассмотрим опции в группе основных

или переименовать кнопкой Rename. Ниже

Сборка осуществляется компоновщиком

по порядку их размещения в окне – сверху

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

из уже откомпилированных объектных мо-

вниз.

конфигурации – если вы введете там ее имя,

дулей, а сама компиляция исходных тек-

Первой следует выбор текущей конфи-

то активируется кнопка Add Configuration

стов в объектные файлы выполняется ком-

гурации проекта – Active Configuration. Вы

(добавить конфигурацию). Нажатие этой

пилятором.

можете выбрать из выпадающего списка

кнопки добавит вашу конфигурацию к спис-

Каждый модуль может быть откомпи-

наименование нужной конфигурации или,

ку. Не допускается задавать имя конфигу-

лирован отдельно. Сборка проекта вызы-

нажав на кнопку Edit Configurations, доба-

рации с пробелами или с символами кирил-

вает автоматическую перекомпиляцию тех

вить новую или изменить существующие.

лицы.

исходных файлов, которые изменились с

Несколько слов о том, что такое кон-

Все параметры проекта, рассматрива-

момента предыдущей сборки. Если исход-

фигурация, которая уже упоминалась не-

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

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

сколько раз ранее. Разрабатываемый про-

выбранной конфигурации. Если их не-

сборке используется ранее полученный

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

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

объектный файл, что существенно ускоряет

ние разных микроконтроллеров, или же на

ры отдельно для каждой.

 

 

 

5 5

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

 

 

 

 

 

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

 

Следующей идет опция Use External

 

Short Enums – короткие списки. Опция

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

Makefile (использовать внешний make-

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

ный подходящий файл.

файл). Если эта опция активирована, то

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

 

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

стант24 тип short int.

 

 

Libraries – библиотеки

ствующем поле make-файл. Использование

 

Как правило, все эти 4 опции можно

 

этой возможности подразумевает наличие

оставить по умолчанию (они активирова-

 

этого самого make-файла, правильно со-

ны), и только в случае возникновения оши-

 

здать который – целая наука. В подавляю-

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

 

щем большинстве реальных практических

чать.

 

 

 

 

случаев вам это не потребуется.

 

Завершают этот раздел параметров

 

 

Далее предлагается указать имя выход-

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

 

ного файла проекта – Output File Name и

вспомогательных файлов25.

 

 

 

директории, куда он будет помещен – Output

 

Create Hex File – создать Hex-файл.

 

File Directory. По умолчанию имя выходно-

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

 

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

матор для «прошивки» микроконтроллера

 

расширением elf), а имя директории – с

вашей программой – включите эту опцию,

 

именем выбранной конфигурации. Сама ди-

т.к. формат Hex – де-факто стандартный

 

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

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

Группа настроек библиотек служит для

проекта. Как правило, нужды изменять зна-

торов.

 

 

 

указания компоновщику использовать гото-

чение этих параметров не возникает.

 

Generate Map File – генерировать файл

вые библиотечные файлы (архивы) или

 

Далее следует группа важных парамет-

«карты памяти». Карта памяти позволит

объектные модули. Параметры по умолча-

ров компиляции проекта.

детально рассмотреть результат работы

нию подойдут в большинстве случаев. Од-

 

Device – выбор модели микроконтрол-

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

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

лера. Из выпадающего списка вы можете

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

пути поиска библиотек (аналогично рас-

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

ко места занимают и т.п. Бывает очень по-

смотренному способу в предыдущей главе),

тором модель. Учтите, что выбранная здесь

лезно при «глубинной» отладке или опти-

а так же указать конкретные варианты

модель контроллера не обязательно долж-

мизации. Отключение этой опции ускоряет

объектных модулей стандартных библиотек,

на совпадать с той, что была указана в мо-

компиляцию.

 

 

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

мент создания проекта (см. «Мастер про-

 

Generate List File – генерировать лис-

вашего проекта. Для этого в списке

ектов»), однако во избежание недоразуме-

тинг. Листинг – это файл, в котором одно-

Available Link Objects (доступные для ком-

ний не следует допускать такого разнобоя23.

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

поновки объекты) нужно выбрать требуе-

 

Frequency – тактовая частота контрол-

Си и его ассемблерный эквивалент, а так

мый файл и, нажав кнопку Add Library (до-

лера. Вы должны указать в герцах значе-

же машинные коды соответствующих инст-

бавить библиотеку), добавить его в список

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

рукций и т.п. информация. Может быть по-

прикомпоновываемых объектов Link with

гается использовать микроконтроллер. Этот

лезен при отладке или при изучении рабо-

These Objects. Кнопка Remove Object по-

параметр важен для правильной генерации

ты компилятора. Отключение этой опции

зволяет удалить файл из числа прикомпо-

кода некоторых библиотечных функций. В

ускоряет компиляцию.

 

 

новываемых, кнопки Move Up (перемес-

программе это значение всегда доступно в

 

 

 

 

 

тить выше) и Move Down (переместить

виде константы F_CPU (т.е. эту символьную

 

Include Directories – подключаемые ди-

ниже) изменяют порядок файлов в списке.

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

ректории

 

 

 

Наконец, кнопка Add Object позволит до-

нии программы). Рекомендуется всегда за-

 

 

 

 

 

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

давать этот параметр.

 

 

 

 

 

к списку справа.

 

Optimization – уровень оптимизации.

 

 

 

 

 

 

Можно выбрать из выпадающего списка

 

 

 

 

 

Memory Settings – настройки парамет-

любой доступный вариант. По умолчанию

 

 

 

 

 

ров памяти

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

 

 

 

 

 

 

оптимизации по размеру кода – Os.

 

 

 

 

 

 

 

Unsigned Chars – опция, указывающая

 

 

 

 

 

 

компилятору, что тип char должен рассмат-

 

 

 

 

 

 

риваться как беззнаковый. В скобках при-

 

 

 

 

 

 

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

 

 

 

 

 

 

пилятора для этой же цели. Следует с осто-

 

 

 

 

 

 

рожностью пользоваться этой опцией!

 

 

 

 

 

 

 

Unsigned Bitfields – беззнаковые бито-

 

Эта группа опций представлена един-

 

вые поля. Опция влияет на структуры типа

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

 

битовое поле24.

ком директорий, в которых компилятор пос-

 

 

Pack Structure Members – упаковывать

ледовательно будет искать файлы, подклю-

 

поля структур. Опция указывает компиля-

ченные директивами #include. Список по

 

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

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

Группа параметров памяти позволяет

ванный» формат хранения в памяти данных

полнительные пути имеет смысл лишь в том

управлять пользовательскими секциями

полей структуры. В некоторых случаях это

случае, когда вы имеете пакеты библиотек

(см. далее «Секции памяти»). В верхней ча-

может вызвать несовместимость с исход-

или исходных файлов модулей сторонних

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

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

разработчиков (или свои собственные уни-

ранного микроконтроллера (Part

компиляторов, хотя в большинстве случаев

версальные «заготовки»).

 

 

Information):

дает экономию памяти данных.

 

Добавить директорию можно при помо-

Flash Size – объем памяти программ

 

 

 

щи кнопки

, удалить –

, а кнопками

Sram Size – объем ОЗУ

 

23 Мастер проекта задает модель для отладки, в

 

и

можно изменить порядок про-

Eeprom Size – объем EEPROM

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

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

Ниже располагается список заданных

любой другой модели. Разумеется, ожидать адекват-

 

 

 

 

 

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

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

 

 

 

 

 

лера не приходится.

 

 

 

 

 

стоящий из трех столбцов: Memory Type

 

 

 

 

 

 

24 Эта возможность языка Си не рассматривалась

 

25 Фактически, эти файлы генерируются дополни-

(тип памяти), Name (имя секции) и Address

в кратком введении в язык. Принципиально, это никак

тельными утилитами, входящими в комплект WinAVR, од-

(стартовый адрес секции). Добавить свою

не скажется на эффективности ваших программ.

нако с точки зрания программиста это несущественно.

5 6

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

 

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

секцию вы можете, на-

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

 

генерации различных выходных файлов с

жав кнопку Add, при

ветственно отразится в других разделах на-

 

аналогичным «перенаправлением» выводи-

это откроется следую-

строек. Некоторые опции не имеют интерак-

 

мых ими сообщений.

щее окно:

тивных аналогов, но могут серьезно влиять

 

В итоге у пользователя создается впе-

Поля ввода в этом

на компиляцию. В главе «Опции командной

 

чатление, что AVR Studio сама выполняет

окне совпадают с наи-

строки» будет рассказано о параметрах ко-

 

компиляцию и т.п. действия.

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

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

 

Запуск компилятора сопровождается

дающего списка можно выбрать тип памя-

нительно добавить к этому списку. Делает-

 

выводимой командной строкой в окне ин-

ти (память программ Flash, ОЗУ Sram или

ся это вводом соответствующей строки в

 

формации на закладке «Build», отмечаемой

EEPROM), затем следует ввести имя сек-

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

 

зеленым кружочком.

ции и, в заключение, ее стартовый адрес.

ки Add (добавить). Если требуется изменить

 

Если компиляция модуля прошла без

Учтите, что компоновщик считает, что сек-

введенную ранее строку – надо выделить

 

ошибок, то в окне появляется сообщение

ция ОЗУ начинается с адреса 0x800000, а

ее в списке и нажать кнопку Edit, она ско-

 

«Build succeeded with 0 Warnings...» – ком-

секция EEPROM – с адреса 0x810000, т.е. к

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

 

пиляция успешна, 0 предупреждений. Ра-

фактическому адресу в пространстве ОЗУ

те затем снова нажать Add для возврата

 

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

или EEPROM нужно прибавить соответству-

строки в список).

 

жет быть и ненулевым. В том случае, если

ющее смещение.

В нижней части имеется группа опций

 

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

На добавленную секцию затем можно

External Tools, которая позволяет изменить

 

но будет выведены сведения о полученном

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

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

 

объектном модуле проекта, и окно будет

ющий атрибут.

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

 

 

Удалить секцию из таблицы можно на-

тора avr-gcc и утилиты make. Категоричес-

 

 

жатием кнопки Remove.

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

 

 

В нижней части окна имеется опция уп-

умолчанию.

 

 

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

 

 

 

для организации стека – Specify Initial Stack

Сборка проекта

 

 

Address. Если активировать эту опцию, то

Рассмотрим меню «Build», ранее толь-

 

 

можно задать адрес начала области ОЗУ,

ко упоминавшееся.

 

 

выделяемой под стек (дополнительно см.

Меню состоит из следующих пунктов:

 

 

«Динамическое распределение памяти»).

· Build (собрать)

 

 

 

– выполняет сборку

 

 

Custom Options – параметры пользова-

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

 

иметь следующий вид:

теля

руя при необходи-

 

В приведенной на рисунке итоговой

 

мости обновленные

 

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

 

исходные файлы

 

микроконтроллера attiny13: программа за-

 

модулей.

 

нимает 558 байт (что составляет 54,5% от

 

· Rebuild All (пересобрать все) – выпол-

 

всего имеющегося пространства), данные

 

няет принудительную перекомпиляцию всех

 

(секций «.data», «.bss» и «.noinit») занима-

 

файлов проекта с последующей сборкой.

 

ют 5 байтов (что составляет 7,8% всей дос-

 

· Build and Run (собрать и запустить) –

 

тупной памяти). Эти сведения помогут вам

 

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

 

сделать выводы о ресурсоемкости вашего

 

жим отладки, т.е. запускает программу на

 

проекта.

 

исполнение.

 

 

 

· Compile (компилировать) – выполня-

 

Ошибки компиляции

 

ет компиляцию только одного текущего ре-

 

Если на этапе компиляции обнаружива-

 

дактируемого файла (модуля)

 

ются ошибки в тексте модуля, выводится со-

Последняя группа параметров позво-

· Clean (очистить) – удаляет все резуль-

 

ответственно иное сообщение «Build failed

ляет пользователю добавить опции к ко-

таты предыдущих компиляций всех моду-

 

with 3 errors and 0 warnings...» – компиля-

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

лей

 

ция неудачна, 3 ошибки и 0 предупрежде-

щика (Custom Compilation Options). Это

· Export Makefile – сохраняет в make-

 

ний (и снова – число ошибок и предупреж-

дает максимальную гибкость в настройке

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

 

дений может быть иным). Подобное сооб-

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

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

 

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

достаточно высокой квалификации

консольном режиме.

 

ным количеством сообщений об ошибках

пользователя.

Выполнение любой команды меню, кро-

 

(помеченных красным кружочком) и предуп-

Слева находится окно со списком всех

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

 

реждениях (помеченных желтым кружоч-

файлов проекта и парой «глобальных» эле-

ки (и незаметно для пользователя) выпол-

 

ком), например, так:

 

ментов – All files (все файлы) и Linker

няющихся следующих эта-

 

 

Options (параметры компоновщика). Спра-

пах:

 

 

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

1. Компиляция при помо-

 

 

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

щи консольного компилятора

 

 

ранного в левом списке элемента. Т.е. если

avr-gcc.exe одного или всех

 

 

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

модулей с «перехватом»

 

 

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

всей выводимой компилято-

 

 

метров – выберите слева вариант All files.

ром информации и выводом

 

 

По умолчанию в списке справа перечис-

ее в окно информации на зак-

 

 

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

ладке «Build» (окно Output – см. «Рабочее

 

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

других страницах диалога настройки в «ин-

пространство»).

 

ции модуля «encoder.c» в функции этого

терактивном режиме» – присмотритесь: вы

2. При отсутствии ошибок на первом

 

модуля «enc_rotate» обнаружены следую-

увидите –funsigned-char, которая соот-

этапе (и при необходимости) – запуск ком-

 

щие три ошибки (как правило, одна ошиб-

ветствует опции Unsigned Chars из пер-

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

 

ка может порождать несколько следующих

вой группы, указание константы F_CPU и

водимой информации.

 

за ней): в строке 36 найден ранее не опи-

т.п. Удаление (кнопкой Remove) элемен-

3. При отсутствии ошибок компонов-

 

санный символ EN_A_DN (остальные две

та списка приведет к соответствующему

ки – запуск вспомогательных утилит для

 

ошибки – это собственно не ошибки, а

 

 

 

5 7

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

 

 

 

 

 

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

продолжение описания первой ошибки26 ).

объем является следствием неудачно выб-

 

компилятором, как char (см. «Констан-

После сообщений об ошибках следует стро-

ранного режима оптимизации, реже –

 

ты»). Таким образом, операция инверсии

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

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

 

~2 из char получит int, т.е. число со зна-

невозможна, т.к. есть ошибка.

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

 

ком. Переменная var имеет тип char, т.е.

 

К сожалению, привести список всех со-

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

 

меньший, чем int – чтобы значение «влез-

общений об ошибках, распознаваемых ком-

ются любые алгоритмы с использованием

 

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

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

чисел с плавающей точкой – только добав-

 

тем отбрасывания старшего байта – об

слишком обширен. Чтобы более-менее ори-

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

 

этом компилятор и предупреждает. В

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

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

 

этом конкретном случае никакой опасно-

знать английский язык – фразы весьма при-

личить объем программы более чем на 1,5

 

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

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

килобайта! Наконец, ошибка может быть и

 

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

стей буквально спустя две-три попытки.

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

 

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

 

Процесс работы над проектом, как пра-

достаточным объемом памяти.

 

ставление байта 2, однако поручиться,

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

 

 

что такое же предупреждение во всех

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

Предупреждения компилятора

 

случаях определенно безопасно, нельзя.

дующим исправлением ошибок. Чтобы этот

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

 

 

По возможности следует стремиться к

процесс был более удобен – AVR Studio ре-

сообщения о найденных в тексте програм-

 

тому, чтобы предупреждений при компиля-

ализует удобный механизм: двойной щел-

мы «подозрительных» или потенциально

 

ции не возникало.

чок мышкой на строке с сообщением об

опасных мест, неоднозначностей, допуска-

 

 

 

ошибке приводит к тому, что в редакторе

емых синтаксисом языка и т.п. В некоторых

 

 

Средства виртуальной отладки

откроется нужный файл (если он не был

случаях предупреждение – это завуалиро-

 

 

Допустим, компиляция проекта прошла

еще открыт), а курсор будет установлен в

ванная ошибка, но чаще это просто «очист-

 

без ошибок и предупреждений. Означает ли

строку с ошибкой, причем сама строка бу-

ка совести» компилятора за слишком ши-

 

это, что программа заработает в реальной

дет дополнительно помечена синей стре-

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

 

схеме? Вовсе нет! Записанная без ошибок

лочкой – вам останется лишь исправить

В окне информации предупреждения

 

неверная инструкция к действию не может

ошибку.

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

 

привести к успешному результату. То есть

 

Отдельно следует оговорить случай,

«Build», и отмечаются желтыми значками:

 

отсутствие синтаксических ошибок, прове-

 

 

когда после компиляции программы выяс-

 

 

 

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

няется, что размер объектного модуля слиш-

 

 

 

начает отсутствия логических или

ком велик, чтобы уместиться в доступной

 

 

 

алгоритмических ошибок програм-

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

 

 

 

миста. Отладка – это как раз про-

тов компиляции при этом внешне выглядит,

 

 

 

цесс поиска логических и алгорит-

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

 

 

 

мических ошибок.

вводить в заблуждение:

 

 

 

AVR Studio предлагает програм-

 

 

 

 

 

 

мисту удобный способ проследить

 

 

 

Как и при ошибках, двойной щелчок на

 

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

 

 

 

строке с предупреждением перенесет кур-

 

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

 

 

 

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

 

может не только наблюдать за процессом,

 

 

 

общения.

 

но и вмешиваться в него!

 

 

 

Опасны ли предупреждения? Скорее

 

 

Реализуется это следующим образом:

 

 

 

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

 

AVR Studio эмулирует27 работу микроконт-

 

 

 

которую опасность именно за счет своей

 

роллера, т.е. имитирует исполнение им про-

 

 

 

«сомнительности», т.е. компилятор «чув-

 

граммы. Благодаря тому, что мощность со-

 

 

 

ствует», что тут что-то не так, но назвать

 

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

 

 

 

это ошибкой – «язык» у него не повора-

 

бых проблем проимитировать работу куда

 

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

чивается (извините за столь одушевлен-

 

более слабого AVR не возникает. При этом

бует» наличия 201% памяти, что, разумеет-

ную образность). Например, на рисунке

 

AVR Studio заполняет «виртуальные» реги-

ся, невозможно. В том, что это действитель-

самое первое предупреждение гласит «../

 

стры и ячейки памяти значениями из про-

но ошибка, вы убедитесь в момент, когда

bp_c.c:75: warning: return type of “main”

 

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

попытаетесь приступить к отладке програм-

is not “int”» – тип функции main – не int.

 

стом строки. Содержимое любой перемен-

мы (см. «Средства виртуальной отладки»):

Опасно ли это? 100% нет – для микро-

 

ной в программе, и даже любого регистра

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

контроллеров совершенно без разницы,

 

или ячейки памяти, программист может в

ключение информационного окна на зак-

какое значение возвращает функция

 

любой момент изменить, проимитировав

ладку «Message»:

main. А несколько следующих предуп-

 

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

 

 

 

реждений уже иного рода: «../

 

внешних данных. Такое «виртуальное» ис-

 

 

 

display.c:41: warning: large integer

 

полнение программы позволяет найти по-

 

 

 

implicitly truncated to unsigned type»

 

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

 

 

 

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

 

от задуманного.

 

 

 

ра unsigned int. Это уже должно на-

 

 

Рассмотрим меню «Debug», команды

 

 

 

сторожить: согласитесь, что если чис-

 

которого управляют всем процессом от-

 

В отмеченной желтым кружком строке

ло 2L будет укорочено до int – это не

 

ладки.

сказано, что «Содержимое объектного фай-

страшно, но вот если 24765134 укоротить

 

 

На рисунках (см. на следующей стра-

ла превышает размер программной памя-

до int – это вряд ли может устроить. По-

 

нице) показаны варианты меню «Debug»

ти выбранного микроконтроллера», а сле-

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

 

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

дующая строка, отмеченная красным, ука-

вать строки в программе, приведшие к

 

отладки и для включенного.

зывает на ошибку загрузки этого объект-

предупреждениям. В частности, в случае

 

 

 

 

 

 

ного файла.

на рисунке, предупреждения были выз-

 

 

27 Наряду с термином «эмуляция» применяется и тер-

 

Борьба с размером программы – слож-

ваны строками типа char var = ~2. Поче-

 

мин «симуляция». Разделение между ними скорее наду-

 

 

манное: первый чаще применяют в тех случаях, когда ис-

ный процесс. Иногда слишком большой

му так вышло? Все просто: по умолча-

 

 

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

 

 

 

нию результат любой операции в Си, если

 

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

 

 

 

иное не оговорено, трактуется как int, а

 

вании чисто программных методов имитации. В настоя-

 

 

 

 

26 Особенность «перехвата» сообщений – каждая

 

щей книге разницы между терминами не делается, т.к. в

строка сообщения воспринимается как новая ошибка.

константа 2 по умолчанию трактуется

 

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

5 8

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

 

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

 

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

 

 

му начаться заново.

 

 

· Step Into – «шаг внутрь». Пошаго-

 

 

вое исполнение программы с заходом в

 

 

функции.

 

 

· Step Over – «шаг поверх». Пошаго-

 

 

вое исполнение программы, причем обра-

 

 

щения к функциям исполняются, как «одна

 

 

команда».

 

 

· Step Out – «шаг наружу». Команда

 

 

вызывает исполнение всех оставшихся

 

 

строк (операторов) в функции до выхода из

 

 

нее, т.е. остановка происходит в момент

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

 

возврата значения функции.

ный список групп настроек эмулятора. Ко-

 

· Run to Cursor – «дойти до строки с

личество этих групп зависит от того, какой

 

курсором». Команда запускает программу

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

 

на исполнение с текущего места и останав-

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

 

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

граммный симулятор, а для аппаратных

 

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

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

 

мент подачи команды.

другие группы параметров.

 

· Auto Step – автопошаговое исполне-

В базовом варианте доступно две груп-

 

ние. Программа начинает исполняться в

пы: Device selection – выбор устройства и

 

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

Stimuli and logging – стимуляция и прото-

 

манд Step, подаваемых через определен-

колирование.

 

ные интервалы времени (можно регулиро-

В группе Device Selection можно выб-

 

вать).

рать тип эмулируемого микроконтроллера

 

· Next Breakpoint – перейти к следую-

из раскрывающегося списка Device. Важ-

 

щей точке останова.

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

 

· New Breakpoint – подменю команд ус-

гда указывать одинаковые типы и в настрой-

 

тановки точек останова.

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

 

Возможно три

будет некорректной или вообще невозмож-

 

варианта точек ос-

ной. По умолчанию такое соответствие

 

тановки: Program

обеспечивается автоматически.

 

Breakpoint – оста-

Так же можно указать значение такто-

 

новка по месту в программе, Data

вой частоты контроллера при отладке: выб-

 

Breakpoint – остановка по изменению дан-

рать из списка Frequency или ввести зна-

 

ных (переменных) в программе и Program

чение вручную. Для корректной эмуляции

 

Tracepoint – точка трассировки программы

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

 

(не является точкой останова по своей сути).

тотой, указанной при компиляции.

 

· Toggle Breakpoint – включение/выклю-

Наконец, если программа содержит сек-

 

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

цию загрузчика (Boot loader), можно и нуж-

 

· Remove all Breakpoints – удалить все

но указать адрес начала этой секции и ука-

 

точки останова из программы

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

 

· Trace – подменю управления режима-

контроллера (отмеченная опция Enable

 

ми трассировки программы (рассматрива-

Boot reset заставит после сброса испол-

 

ется в последующих главах).

няться функцию загрузчика).

 

· Stack Monitor – команда зарезерви-

Если микроконтроллер имеет возмож-

 

рована

ность подключения внешнего ОЗУ, стано-

· Start Debugging – запуск отладки. Ко-

· Show Next Statement – показать стро-

вится доступной опция Enable external

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

ку, которая должна исполняться. Команда

Memory, включающая поддержку эмулято-

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

позволяет быстро переместиться к очеред-

ром дополнительного внешнего ОЗУ.

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

ной исполняющейся строке из любого мес-

В правой части окна присутствует об-

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

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

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

· Stop Debugging – остановка отладки.

· Quickwatch – добавление переменной

ные характеристики выбранного микрокон-

Команда завершает режим отладки, воз-

в окно просмотра. Добавляется переменная,

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

вращая вид интерфейса к исходному.

на которой установлен текстовый курсор в

ное значение тактовой частоты, указанное

· Run – исполнение. Команда запускает

тексте программы.

здесь (и даже в технической документации)

программу на исполнение. Обычно этой ко-

· Select Platform and Device – выбрать

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

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

отладочную платформу и микроконтроллер.

ной эмуляции – вы можете задать значение

установки точек останова, иначе возмож-

Позволяет изменить на время отладки на-

тактовой частоты хоть 100 МГц – процесс

ности наблюдения за ходом работы про-

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

отладки от этого никак не изменится.

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

· Up/Download Memory – сохранить/заг-

Группа Stimuli and logging отвечает за

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

рузить область памяти.

режим имитации и протоколирования вне-

не обновляется).

· AVR Simulator Options – настройки

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

· Break – приостановка (пауза) испол-

эмулятора AVR.

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

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

В первую очередь рассмотрим после-

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

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

дний пункт меню – настройку параметров

выходных».

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

эмулятора (данный пункт доступен только

 

дительно. После остановки исполнения об-

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

Ресурсы

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

будут рассмотрены более подробно далее,

4. http://www.rsdn.ru/article/alg/regular.xml

· Reset – сброс. Команда позволяет про-

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

 

имитировать поступление сигнала Reset на

отладки (см. следующую колонку):

Продолжение в №7/2010

 

 

 

 

 

 

 

 

5 9

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

 

 

 

 

 

Соседние файлы в папке Книга по работе с WinAVR и AVR Studio