Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генерация файлов .bin и .hex в AVR32 Studio
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > AVR32
jasper
Требуется получить двоичный bin-файл из elf.
Делаю все согласно рекомендациям:
Цитата
avr32-objcopy -O binary myfile.elf myfile.bin

Но в результате размер сгенерированного файла получается равным 1.25GB! wacko.gif
Пробовал генерить 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.gif
Dopler
С генерацией .hex никаких проблем не возникает, файл получается командой
Код
avr32-objcopy -O ihex myfile.elf myfile.hex


А вот при генерации .bin действительно получаются гигабайтные файлы. Скорее всего это связано с тем, что flash расположена со смещением 0x80000000, а файл формируется с нулевого адреса. Поковырял настройки avr32-objcopy, но ничего внятного не получилось (скорее всего плохо ковырял, надо читать документацию).

Зато из полученного .hex .bin легко формируется утилитой hex2bin.


Если и .hex файл получается большим, то скорее всего в исходном .elf файле неправильно определены секции ОЗУ. Например, для секций .stack и .heap указано, что они загружаемые и т.д.
Maddy
Странное что-то у вас творится ...
Код
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
А полученный .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
да , бинарник прожигается 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
Да, действительно проблема была в том, что секция .exception включалась в бинарник.

Вот в этой теме спросил, как ее не включать, мне подсказали:
http://electronix.ru/forum/index.php?showt...mp;#entry810544

Теперь все нормально генерируется прямо из .elf, и .hex, и .bin.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.