000000:2с01
000001:9413
000002:940е
000003:0050
000050:0с12
000051:9508
Обратите внимание на то, что команды, состоящие из двух слов, размещаются в двух строках файла.
Если в программе был определен сегмент EEPROM, то генерируется файл для прошивки в EEPROM. Расширение этого файла еер. Этот файл всегда генерируется в формате Generic.
Формат объектного файла
Объектный файл содержит отладочную информацию и может быть использован отладчиком для проверки правильности работы программы.
Объектный файл имеет две части: record и trailer.
Заголовочная часть имеет следующий формат:
• смещение к исходным именам файлов (4 байга);
• смещение к объектным записям (4 байга);
• число байтов в каждой записи (1 байт);
• число имен файлов во второй части файла (1 байт);
• строку A VR Object File\0 (\0 означает, что строка завершена 0).
Длительность записей составляет 9 байтов каждая. Формат записи:
• адрес памяти программ (3 байта);
• код операции (2 байта);
• номер инструкции в исходном файле (1 байт, счет начинается с 0);
• номер строки в исходном файле (2 байга, счет начинается с 1);
• индикатор макроса (1 байт, 1 — если макрос, иначе — 0).
И наконец, trailer часть имеет следующий формат:
• имена файлов (заканчивающиеся на 0, число файлов в заголовке);
• ASCII 0.
Для примера рассмотрим программу (файл obj demo.asm):
; Демонстрация объектного формата
.equ const1=0x15
.equ const2=0x40
macro SWIN
swap @0
inc @0
.endmacro
start: ldi r16.const1
SWIN r16
ldi r16.const2
SWIN r16
rjmp start
.include "delay.asm"; Включение другого файла на ассемблере
Включаемый файл (delay.asm):
delay: dec r16
breq delay
ret
После трансляции будет получен объектный файл. Файл — бинарный. Для удобства рассмотрения он был переведен в 16-ричный формат, а столбцы были раздвинуты.
Смещение: Содержимое файла (в 16-ричном формате):
00000000: 00000074 Смещение к именам файлов
00000004: 0000001А
00000008: 09
00000009: 02
0000000A: 415652204F626A6563742046696C6500 Cтрока A0F
0000001А: 000000Е10500000В00 Первая запись
00000023: 000001950200000C01
0000002С: 000002950300000C01
00000035: 000003E40000000D00
0000003Е: 000004950200000Е01
00000047: 000005950300000Е01
00000050: 000006CFF900000F00
00000059: 000007950А01000400
00000062: 000008F3F101000500
0000006В: 000009950801000600 Последняя запись
00000074: 4F424A5F44454D4F2E41534D00 "0BJ_DEM0.ASH\0"
00000081: 44454С41592Е41534D00 "DELAY.ASM\0"
0000008В: 00 Конец объектного файла
4.2. Компилятор языка С CodeVision AVR
CodeVision представляет собой кросс-компилятор языка С, графическую оболочку и автоматический генератор программ, ориентированные на работу с семейством микроконтроллеров AVR фирмы Atmel. Внешний вид окна программы показан на рис. 4.5.
Рис. 4.5. Внешний вид окна программы CodeVision AVR
Программа представляет собой 32-разрядное приложение для работы в операционных системах Windows 95, 98, NT4.0 и 2000.
Кросс-компилятор включает в себя почти все элементы, соответствующие стандарту ANSI. Также в компилятор включены дополнительные возможности, ориентированные на использование архитектурных особенностей микроконтроллеров этого семейства и встроенных систем в целом.
Объектные файлы COFF позволяют осуществлять отладку программ с просмотром содержимого переменных. Для этого следует применять свободно распространяемый фирмой Atmel (www.atmel.com) отладчик AVR Studio debugger версии 3.5 или более поздний.
Для отладки систем, использующих последовательную передачу данных, в графической оболочке имеется встроенный Terminal.
Кроме стандартных библиотек языка С, компилятор имеет библиотеки для работы с:
• ЖКИ индикаторами со встроенным контроллером;
• шиной I2C фирмы Philips;
• датчиком температуры LM75 фирмы National Semiconductor;
• часами реального времени PCF8563 и РС8583 фирмы Philips, DS1302 и DS1307 фирмы Dallas Semiconductor;
• однопроводным протоколом фирмы Dallas Semiconductor;
• датчиками температуры DS1820 и DS1822 фирмы Dallas Semiconductor;
• датчиком температуры/термостатом DS1621 фирмы Dallas Semiconductor;
• памятью EEPROM DS2430 и DS2433 фирмы Dallas Semiconductor;