jasper 0 22 июля, 2010 Опубликовано 22 июля, 2010 (изменено) · Жалоба Требуется получить двоичный bin-файл из elf. Делаю все согласно рекомендациям: avr32-objcopy -O binary myfile.elf myfile.bin Но в результате размер сгенерированного файла получается равным 1.25GB! Пробовал генерить hex-файл, он тоже получается огромного размера и явно пустой. В чем дело? Как это можно исправить? Пока вышел из положения следующим образом. В начале скармливаю elf-файл BatchISP, со следующей командной строкой: batchisp -device at32uc3a0512 -hardware usb -operation LOADBUFFER myfile.elf SAVEBUFFER myfile.hex HEX386 У которого, почему-то, получается создает нормальный hex-файл, нормального размера. Работает он, правда, только, когда плата по USB подключена. А уже из полученного таким образом hex'а генерю нормальный bin (адекватного размера) при помощи avr32-objcopy: avr32-objcopy -I ihex -O binary myfile.hex myfile.bin Но все равно, хочется сделать это как-нибудь по-нормальному. Может кто-нибудь уже сталкивался с такой проблемой? :huh: Изменено 22 июля, 2010 пользователем jasper Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dopler 0 13 сентября, 2010 Опубликовано 13 сентября, 2010 · Жалоба С генерацией .hex никаких проблем не возникает, файл получается командой avr32-objcopy -O ihex myfile.elf myfile.hex А вот при генерации .bin действительно получаются гигабайтные файлы. Скорее всего это связано с тем, что flash расположена со смещением 0x80000000, а файл формируется с нулевого адреса. Поковырял настройки avr32-objcopy, но ничего внятного не получилось (скорее всего плохо ковырял, надо читать документацию). Зато из полученного .hex .bin легко формируется утилитой hex2bin. Если и .hex файл получается большим, то скорее всего в исходном .elf файле неправильно определены секции ОЗУ. Например, для секций .stack и .heap указано, что они загружаемые и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Maddy 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Странное что-то у вас творится ... avr32-objcopy -O binary uc3a0512-boot-072.elf uc3a0512-boot-072.bin 14.09.2010 14:44 10 348 uc3a0512-boot-072.bin 14.09.2010 14:44 181 798 uc3a0512-boot-072.elf Живой проект загрузчика ... avr32-objcopy --version GNU objcopy (atmel-1.2.0-(mingw32_special)) 2.19.20081016 может таки тама реально гиг адресов получается ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dopler 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба А полученный .bin вы загружаете со смещением 0x80000000? Вот dump моего тестового .elf файла, во flash расположены только секции .reset и .text, остальные расположены в ОЗУ, в том числе и обработчик прерываний (таблица векторов). Эта таблица заполняется в стартапе, т.е. эта секция не должна быть загружаемая, а в .elf она помечена, как "CONTENTS, ALLOC, LOAD, DATA", отсюда и получается такой дикий .bin. Сделать секцию не загружаемой у меня не получается, пойду спрошу в форуме по gcc. avr32-size -A -x neuromatic.elf neuromatic.elf : section size addr .reset 0x8 0x80000000 .text 0x418 0x80000008 .exception 0x104 0x0 .heap 0x6ef8 0x108 .stack 0x1000 0x7000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Maddy 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба да , бинарник прожигается 0x80000000 ... uc3a0512-boot-072.elf : section size addr .reset 0xc8 0x80000000 .xflash 0x42 0x800000c8 .lalign 0x6 0x8000010a .dalign 0x4 0x4 .data 0x28 0x8 .bss 0x620 0x30 .stack 0x400 0x650 .const 0x2734 0x2000 .comment 0x1b8 0x0 .debug_aranges 0x7d8 0x0 .debug_pubnames 0x1585 0x0 .debug_info 0x10221 0x0 .debug_abbrev 0x1d4b 0x0 .debug_line 0x8430 0x0 .debug_frame 0x1384 0x0 .debug_str 0x282c 0x0 .debug_loc 0x4843 0x0 .debug_ranges 0x3a40 0x0 Total 0x2b374 и в принципе тоже основная прога лежит в раме .... lds - перекуроченый от демки uart-загрузчика из asf 2.0 .. А как описана Ваша секция в lds ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dopler 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба Да, действительно проблема была в том, что секция .exception включалась в бинарник. Вот в этой теме спросил, как ее не включать, мне подсказали: http://electronix.ru/forum/index.php?showt...mp;#entry810544 Теперь все нормально генерируется прямо из .elf, и .hex, и .bin. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться