Перейти к содержанию
    

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

Требуется получить двоичный 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:

Изменено пользователем jasper

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С генерацией .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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...