Jump to content

    
Sign in to follow this  
jasper

Генерация файлов .bin и .hex в AVR32 Studio

Recommended Posts

Требуется получить двоичный bin-файл из elf.

Делаю все согласно рекомендациям:

avr32-objcopy -O binary myfile.elf myfile.bin

Но в результате размер сгенерированного файла получается равным 1.25GB! :wacko:

Пробовал генерить 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:

Edited by jasper

Share this post


Link to post
Share on other sites

С генерацией .hex никаких проблем не возникает, файл получается командой

avr32-objcopy -O ihex myfile.elf myfile.hex

 

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

 

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

 

 

Если и .hex файл получается большим, то скорее всего в исходном .elf файле неправильно определены секции ОЗУ. Например, для секций .stack и .heap указано, что они загружаемые и т.д.

Share this post


Link to post
Share on other sites

Странное что-то у вас творится ...

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

 

может таки тама реально гиг адресов получается ?

Share this post


Link to post
Share on other sites

А полученный .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

Share this post


Link to post
Share on other sites

да , бинарник прожигается 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 ?

 

Share this post


Link to post
Share on other sites

Да, действительно проблема была в том, что секция .exception включалась в бинарник.

 

Вот в этой теме спросил, как ее не включать, мне подсказали:

http://electronix.ru/forum/index.php?showt...mp;#entry810544

 

Теперь все нормально генерируется прямо из .elf, и .hex, и .bin.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this