В поле "Output file" выбирается вид файла, который получится в результате компиляции программы.
Рис. 2. Окно настроек Ассемблера
Опция "Wrap relative jumps" даёт возможность "заворачивать" адреса. Эта опция может быть использована только на чипах с объёмом программной памяти 4К слов (8Кбайт), при этом становится возможным делать относительные переходы (rjmp) и вызовы подпрограмм (rcall) по всей памяти.
Вобласти AVR Assembler осуществляется выбор между AVRASM2 (версии 2 по умолчанию) и AVRASM. Если у вас есть проблемы совместимости с новым AVRASM2, вы можете использовать старый AVRASM (версии 1). При этом дополнительные параметры и неподдерживаемые инструкции не будут доступны.
Вобласти Unsupported Instructions (неподдерживаемые инструкции) по умолчанию установлена опция – выдавать ошибку, когда Ассемблер обнаруживает неподдерживаемые инструкции для используемого МК. Дополнительно можно установить вывод предупреждения. Эти опции доступны только для AVRASM2.
Примечание:
Для устранения ошибки вы должны использовать правильный включаемый файл.
40
В поле Additional include path (добавление дополнительного пути) можно установить путь к каталогу, где находятся включаемые файлы. По умолчанию установлен путь: \\Atmel\AVR Tools\AvrAssembler2\Appnotes.
При использовании Ассемблера v1 путь может быть изменен на: \\Atmel\AVR Tools\AvrAssembler\Appnotes/.
В поле Additional Parameters (дополнительные параметры) могут быть установлены параметры с использованием командной строки. При помощи знака вопроса (?) открывается страница подсказки Ассемблера, на которой описывают эти параметры на английском языке. На русском языке они описаны ниже в подразд. 4.2.
4.2. Опции командной строки AVRASM2
Подобно AVRASM, AVRASM2 может быть использован как отдельная программа с командной строкой. Синтаксис командной строки вызова AVRASM2 показан ниже. Много опций, таких же, как и в AVRASM, новые/изменившиеся опции AVRASM2 показаны жирным шрифтом и описаны ниже.
Опции:
-f [O|M|I|G|-] - выходной файловый формат:
-fO – информация об отладке для симулятора AVR Studio (умолчание); -fO1 | -fO2 – принудительная установка версии формата 1 или 2
(умолчание: авто); -fM – Motorola;
-fI – Intel hex;
-fG – общий шестнадцатеричный формат; -f – нет выходного файла.
-o ofile – вывод помещается в 'ofile'.
-d dfile – генерировать информацию для отладки в симуляторе AVR Studio
|
в 'dfile'. Может использоваться только с опцией -f [M|I|G]. |
-l lfile |
– генерировать листинг в 'lfile'. |
-m mfile |
– генерировать карту в 'mfile'. |
-e efile |
– расположить EEPROM в'efile'. |
-w |
– относительные переходы позволено завертывать для ROM |
|
величиной вплоть до 4k слов. |
-C ver – определяет версию ядра AVR.
-c – распознавание символов становится чувствительным к регистру. -1/-2 – переключает вкл/выкл версии 1 или 2 Ассемблера AVR.
-I dir –включает каталог 'dir' в путь поиска файлов. -i file –явное предварительное включение файла
-D name[=value] – определяет символ. Если =value (величина) опущена, она устанавливается в 1.
41
-U name – отмена определения имени: символ. -v – многословие [0-9](s – по умолчанию):
-vs – включать в статистику ресурс использованного целевого МК; -vl – вывод низкого-уровневого кода Ассемблера;
-v0 – отключение, печать только сообщения об ошибках; -v1 – печать сообщения об ошибках и предупреждения;
-v2 – печатать сообщения об ошибках, предупреждения и информацию (по умолчанию);
-v3-v9 – неопределенные, возрастающие суммы внутренних дампов Ассемблера.
-O i|w|e – сообщение о перекрытии: ignore|warning|error (error – по умолчению).
-W-b|+bo|+bi – предупреждение: байт-операнд вышел из диапазона disable|overflow|integer.
-W+ie|+iw – неподдерживаемая ошибка | предупреждение инструкции. -FD|Tfmt __DATE__ | __TIME__ – формат, использующий строку
формата strftime(3).
Подробное описание опций:
-f – установка выходного файлового формата
Предусмотренные форматы generic/Intel/Motorola являются шестнадцатеричными объектными файлами AVR. Есть два подварианта AVR объектного файлового формата:
Стандартный формат (V1) с 16-битовыми номерами строк, поддерживающий исходные файлы вплоть до 65534 строк.
Расширенный формат (V2) с 24-битовыми номерами строк, поддерживающий исходные файлы вплоть до ~ 16M строк.
По умолчанию, когда выходной формат не определен или определен как -fO, Ассемблер выберет подходящий формат автоматически, V1 – если файл имеет менее чем 65533 строк, V2 – если более. Опции -fO1 и -fO2 могут быть использованы, чтобы установить выходной файловый формат V1 или V2 независимо от количества строк.
Если файловый формат V1 использован исходными файлами более чем с 65534 строками, Ассемблер выдаст предупреждение, и строки выше 65534 не будут отлажены. С другой стороны, формат V2 не распознается версиями AVR Studio до 4.12.
Для всех нормальных проектов Ассемблера по умолчанию опция должна быть безопасной.
-w – завертывание относительных переходов
Эта опция устаревшая, поскольку AVRASM2 автоматически завертывает относительные переходы, базирующиеся в программной памяти. Опция распознается, но игнорируется.
-C core-version – определение версии ядра AVR
42
Основная версия нормально определяет спецификацию включаемых файлов (маркаМКdef.inc).
-c
Заставляет Ассемблер быть чувствительным к регистру символов. Директивы препроцессора и инструкции МК – всегда регистрочувствительны.
Предупреждение: установка этой опции может прервать много существующих проектов.
-1 или -2
Позволяет включать/выключать режим совместимости с AVRASM1. Этот режим блокируется (-2) по умолчанию. Режим совместимости (-1) обеспечит уверенный запуск ранее созданных проектов, в противном случае (в режиме -2) возможны сообщения об ошибках при запуске существующих проектов. Он также влияет на путь к встроенным включаемым файлам (devicedef.inc). Путь, определенный в Ассемблере 1, – C:\Atmel\AVR Tools\AvrAssembler\Appnotes, а место расположения incфайлов в Ассемблере 2 – C:\Atmel\AVR Tools\AvrAssembler2\Appnotes.
Новые устройства не поддерживаются Ассемблером 1.
-I directory
Добавляет пути поиска директорий включаемых файлов. Это влияет как на директиву #include препроцессора, так и на директиву .include Ассемблера. Многократные директивы -I задают поиск директории в определенном порядке.
-i file – включить файл
Директива #include “file” обрабатывается прежде, чем будет обработана первая строка исходного кода. Многократные директивы -i могут быть использованы для определения порядка поиска.
-D name[=value] -U name
Определение и отмена определения макроса препроцессора соответственно. Заметьте, что макросы функционального типа препроцессора не могут быть определены из командной строки. Если в -D величина (=value ) не задана, она устанавливается 1.
-vs – печатает статистику использованного МК в стандартном виде. По умолчанию печатается только информация о памяти.
Примечание:
Полная статистика всегда будет напечатана на файле листинга, если он определен.
-vl – печатает необработанные инструкции, выданные в стандартном виде, главным образом для отладки Ассемблером.
-v0 – печатает только сообщения об ошибках, предупреждения и информационные сообщения запрещены.
43
-v1 – печатает сообщения об ошибках и предупреждения.
-v2 – печатает предупреждающие и информационные сообщения, а также сообщения об ошибках (по умолчанию).
-v3... -v9 – печатает повышение сумм дампа внутреннего статуса Ассемблера. В основном используется Ассемблером для отладки.
-O i|w|e
Если в памяти перекрываются секции кода при использовании директивы .org , будет передано сообщение об ошибке.
Эта опция позволяет устанавливать реакцию на перекрытие кода: выдавать ошибку (-Oe, умолчание), предупреждение (-Ow) или полностью проигнорировать (-Oi). Последнее не рекомендуется. Это может быть также установлено директивой перекрытия #pragma.
-W-b |-W+bo | -W+bi
-b, +bo и +bi – никакого предупреждения, предупреждение – когда переполнение и когда величина целого вышла из диапазона соответственно. Это может быть также установлено #pragma warning range.
-W+ie|+iw
+ie и +iw – выбираются, если используются неподдерживаемые инструкции: выдают ошибку или предупреждение соответственно. По умолчанию – ошибка. Для #pragma error instruction / pragma warning instruction) соответственно.
-FDformat и –Ftformat – определяют формат даты и времени встроенных макросов __DATE__ и __TIME__ соответственно. Строки формата входят непосредственно в библиотечную функцию strftime(3) языка Cи. Макросы препроцессора __DATE__ и __TIME__ всегда являются строками параметров, т. е. их значения появляются в двойных кавычках. По умолчанию – форматы "%b %d %Y" и "%H:%M:%S" соответственно.
Пример:
Формат ISO для __DATE__ определяется как -FD"%Y-%m-%d" (см примечание ниже). Эти форматы могут быть определены только в командной строке, нет соответствия #pragma директивам.
Примечание:
Командный интерпретатор Windows (cmd.exe или command.com)
может интерпретировать символьную последовательность, начинающуюся и оканчивающуюся символом %, как переменную среды, которая расширяется даже при ссылке на неё. Это может вызвать изменение формата строк “дата/время” командным интерпретатором и не работать, как ожидается. Вариант, который будет работать во многих случаях, это использование двойного количества символов %, чтобы определять директивы формата, например -FD"%%Y-%%m-%%d". Точное поведение командного интерпретатора может быть противоречивым и изменяется в
44