Выбрать главу

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;