Разбираюсь с пакетом WINAVR ни разу не писал для микроконтролеров на "C". Откомпилировал файл : avr-gcc -mmcu=atmega16 -S tavr.c -o tavr.s . И получил текстовый ассемблерный файл с именем tavr.s, как заказывал в командной строке. При запуске командной строки : avr-as -mmcu=avr5 -ahls=asm.l freqpomp.s tavr.s -o tavr.o - создается обьектный файл для линковщика и ненужно-контрольный файл asm.l который я заказал в командной строке. Все хорошо и нет никаких ошибок.
Но при обработке обьектного файла дизасемблером (avr-objdump) на командах jmp и call нулевые указатели адреса. И после запуска линковщика : avr-ld -Map maps.l -T tavr.lnk tavr.o -o file.bin создается мною попрошенный файл maps.l и сама готовая програма в файле file.bin. При просмотре бинарника дизасемблером IDA PRO ADVANCE ну и просто визуально, я замечаю что в командах jmp и call нулевые физические адреса. У меня есть подозрительно-вопросительные соображения что возможно я что-то в скипте недописал? , вот его код:
OUTPUT_FORMAT ("binary") SECTIONS { .text : { * ( .text )} . = 0x00020000; --- адресное смещение для формирования файла .data : { * ( .data )} .bss : { * ( .bss )} __do_copy_data = 0; __do_clear_bss = 0; __stack = 0x0300; } примечание: сегменты .data и .bss у меня не использованы и не создаются , я просто не создавал пока никаких переменных.