Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221), страница 9
Текст из файла (страница 9)
В состав среды AVR Studio входитредактор исходных текстов, транслятор с языка ассемблера, отладчики симулятор.Транслятор работает с исходными программами на языке ассемблера, содержащими метки, директивы, команды и комментарии.Метка представляет собой символическое обозначение адреса (последовательность символов, заканчивающаяся двоеточием). Меткииспользуются для указания места в программе, в которое передаетсяуправление при переходах, а также для задания имен переменных.Директивы являются инструкциями для транслятора и не заносятся висполняемый код программы. Директивы могут иметь один или несколько параметров. Команды записываются в программе в видемнемонического обозначения выполняемой операции и могут иметьодин или несколько операндов, т.е.
аргументов, с которыми они вызываются. Транслятор позволяет указывать операнды в различныхсистемах счисления: десятичной (по умолчанию, например, 15, 154),шестнадцатеричной (префикс 0х или $, например, 0x0f, $0f, 0x9a,$9a), восьмеричной (префикс – нуль, например, 017, 0232) и двоичной (префикс 0b, например, 0b00001111, 0b10011010). Строка программы должна быть не длиннее 120 символов и может иметь однуиз четырех форм:[метка:] .директива [параметры] [;Комментарий][метка:] команда [операнды] [;Комментарий][;Комментарий][Пустая строка]Позиции в квадратных скобках необязательны.
Текст после точки с запятой и до конца строки является комментарием и транслятором игнорируется. Включение в текст программы комментариев является признаком хорошего стиля программирования и облегчает еесопровождение. Кроме того, улучшению читаемости также способствует форматирование текста программы. При программировании наассемблере выполнение этих правил особенно важно, так как программы на языке ассемблера неудобочитаемы.Указать тип микроконтроллера, для которого транслируетсяпрограмма, позволяет директива .device, например:.device ATmega16; программа для микроконтроллераATmega1654При наличии в программе команд, не поддерживаемых указанным в директиве микроконтроллером, транслятор выдает соответствующее предупреждение.Входным для транслятора является файл <имя_файла>.asm стекстом программы на языке ассемблера.
Транслятор создает четыреновых файла: файл листинга (<имя_файла>.lst), объектный файл(<имя_файла>.obj), файл-прошивку памяти программ (<имя_файла>.hex) и файл-прошивку энергонезависимой памяти данных(<имя_файла>.eep).Файл листинга – это отчет транслятора о своей работе.На рис. 5 приведена часть листинга трансляции программы, в которой числа 2, 5 и 19 заносятся соответственно в регистры R17, R18 иR19; вычисляются произведение и сумма содержимого регистровR17 и R18; из суммы содержимого регистров R17 и R18 вычитаетсясодержимое регистра R19.
Листинг содержит исходный текст транслируемой программы, каждой команде которой поставлены в соответствие машинные коды (правый столбец чисел) и адреса ячеек памяти программ, в которых они будут размещены (левый столбец чисел). Машинные коды и адреса приводятся в шестнадцатеричнойсистеме счисления. Например, строка листинга с командой ADD содержит следующую информацию: 0f12 – машинный код команды;000004 – адрес размещения данной команды в памяти программ.000000 e012000001 e025000002 e133000003 9f12в R1:R0000004 0f12R17000005 1b31в R19LDI R17, 2 ; загрузка числа 2 в регистр R17LDI R18, 5 ; загрузка числа 5 в регистр R18LDI R19, 19 ; загрузка числа 13 в регистр R19MUL R17, R18 ; умножение R17 на R18, результатADD R17, R18 ; сложение R17 и R18, результат вSUB R19, R17 ; вычитание R17 из R19, результат000006 cfff met: RJMP met ; бесконечный цикл (для отладки)Рис.
5. Пример листинга трансляцииОбъектный файл имеет специальный формат и используетсядля отладки программы с помощью симулятора-отладчика среды55AVR Studio. Файл прошивки памяти программ служит для занесенияотлаженной программы в память программ микроконтроллера. Файлпрошивки EEPROM-памяти данных предназначен для загрузки информации в энергонезависимую память данных.
Операции загрузкипамяти программ и энергонезависимой памяти данных выполняютсяс помощью специальных аппаратных средств (программаторов).AVR Studio позволяет отслеживать выполнение программы врежиме симуляции или эмуляции, поддерживает программированиенизкого уровня на ассемблерах Atmel Corporation’s AVR и IARSystems, а также программ, написаных на языке Си, в том числеи с ассемблерными вставками IAR Systems и поддерживает ICCA90 –Cи-компилятор для AVR-микроконтроллеров. AVR Studio также поддерживает COFF как выходной формат для символьной отладки ипрограммные пакеты от производителей Imagecraft C и E-lab pascal.AVR Studio работает под управлением Windows XP и более новыхоперационных систем корпорации Microsoft.Вся система команд AVR поддерживается AVR Studio, в обоихрежимах просмотра (дизассемблера и исходного программного кода).Можно выполнять программу пошагово или до достижения определенного условия.
Кроме того, можно определять практически неограниченное число контрольных точек останова, причем каждая точкаможет быть установлена или отключена. Состояние контрольных точек можно сохранять между прогонами.В процессе выполнения программы пользователь выбирает необходимое окно и режим просмотра процесса выполнения программы, тем самым привязывая режим просмотра к проекту. Каждый разпри загрузке проекта этот режим автоматически восстанавливается.Процесс построения, ассемблирования и компилирования проекта отражается в окне сообщений (рис. 6). При обнаружении ошибки двойной щелчок на соответствующем сообщении установит курсор в позицию ошибки в текущем окне редактора.Рис.
6. Окно сообщений проекта56Окна и режимы AVR StudioОкно Source. Одно из основных окон диалога AVR Studio – окно Source (рис. 7). При открытии файла автоматически создается окно Source. По умолчанию считается, что программа представлена наязыке ассемблера и происходит запуск симуляции именно в этомформате. Можно переключать вид представления программы из формата дизассемблера в формат ассемблера и обратно при условии, чтопрограмма в настоящий момент не выполняется. Окно Source отражает программу, выполняемую в настоящий момент на микроконтроллере.
Маркер команды всегда указывает на следующую за выполняемой команду. При этом панель Status отображает работу эмулятора или симулятора.Рис. 7. Основное окно отладки (Sourсe)Окно Source создается при загрузке объектного файла на выполнение и присутствует на протяжении всего процесса отладки.Если закрыть окно Source, процесс отладки будет прерван. Отметкина левом поле указывают позицию программного счетчика, программных меток, точек останова и трассировку выполняющихся операторов.Желтая стрелка указывает на текущее положение счетчика команд (Program Counter) и отображает следующую за выполняемойкоманду.
Коричневый квадрат обозначает точку останова (Breakpoint). Выполнение программы прекращается при достижении этойточки. Незакрашенный коричневый квадрат обозначает отключенную точку останова (Disabled Breakpoint). Выполнение программыв этом месте не будет прервано, и точка используется как метка.57Зеленая буква Т – включение буфера трассировки (Trace On).При достижении этой метки будет включен буфер трассировки.Запись в буфер будет продолжаться до тех пор, пока не встретитсякоричневая буква Т – точка окончания записи Trace Off.Окно Source поддерживает буфер обмена Windows. Можно выбрать часть или весь текст в окне Source и скопировать его в буферобмена Windows.
Также поддерживаются функции поиска текста втекущем модуле или во всех модулях. Первый случай совпадениявыделяется. Выберите find next (или Ctrl-N) для дальнейшего поискапо тексту. Точки остановки, точки трассировки и переключения, текущие позиции выполнения и функция копирования также доступнычерез нажатие правой кнопки мыши в окне Source.Режимы отладки.
Объектный файл может состоять из нескольких модулей. Одновременно можно просматривать не более одного модуля, но можно выбирать другие модули в окне, расположенном в верхней левой части окна Source, что очень удобно для просмотра и установки контрольных точек в различных модулях однойпрограммы.Исходный отлаживаемый текст можно просматривать различными способами. В зависимости от того, какой из способов просмотра выбран, отладка будет производиться в выбранном режиме.Отображение в исходном коде (Source Mode).
По умолчаниюокно открывается в данном режиме при загрузке объектного файла наотладку, при этом доступны все опции отладки.П р и м е ч а н и е. При открытии объектного файла, не содержащего информации для отладки, опции отладки недоступны. Для возврата на первоначальную позицию отладки в этом режиме выполните операцию Step Into.Режим смешанного отображения (Mixed Mode). Находящаясяв памяти программа дизассемблируется и отображается вместе с текстовой информацией в исходном коде.
Все операции отладки происходят через дизассемблер.Окно Processor. Окно процессора содержит текущую информацию о ядре контроллера и имеет следующие поля.Программный счетчик (Program Counter). Программный счетчик всегда указывает на следующий адрес команды относительновыполняющейся в данный момент. Содержимое программного счетчика отображается в шестнадцатеричной системе счисления и можетбыть изменено в режиме остановки программы. Если изменить содержимое программного счетчика, то будет отменена та команда, на58которую он прежде указывал. После того как программный счетчикизменен, необходимо нажать кнопку F11 режима пошагового выполнения для перехода по новому адресу.Указатель стека (Stack Pointer).Указатель стека содержит адресвершины стека.
Если в микроконтроллере присутствует аппаратныйстек, а не стек, расположенный в SRAM, то он отражается в областиуказателя стека. Содержимое указателя стека можно изменять в режиме останова программы.Счетчик циклов (Cycle Counter). Счетчик циклов содержит информацию о количестве пройденных тактовых циклов с момента последнего сброса. Содержимое счетчика циклов отображается в десятичной форме и не может быть изменено в процессе выполненияпрограммы.Частота (Frequency).
В области «частота» отображена текущаяэмулируемая опорная частота процессора.Флаги (Flags). В окне «флаги» отображается содержимое регистра флагов (Status register). В режиме остановки программы эти биты могут быть изменены, если щелкнуть мышкой на флаге. Тестирование регистра статуса устанавливает соответствующие флаги в 1.Окно сообщений Message. В окне сообщений отображаетсятекущая информация пользователю от AVR Studio.