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

Как убрать пустые области в elf файле

В elf файле огромные области, занятые нулями, как убрать их, что бы сократить размер прошивки. Bin файл этой же программы весит 25кБ примерно к сравнению. 
Вот скрипт вызова линковщика в CubeIDE: 

-mcpu=cortex-m4 -T"/home/developer/projects/STM32F401CCU6/STM32F401CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="${BuildArtifactFileBaseName}.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group

Command line pattern:

${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}

 

stm32f401ccu6.elf STM32F401CCUX_FLASH.ld

Изменено пользователем haker_fox
Тему переместил. Т.к. вопрос скорее по среде разработки, чем по самомой архитектуре.

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


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

А почему вас волнует размер .elf? Должен волновать только размер .bin или .hex.

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


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

Мне нужно затем запаковать файл, с помощью конвертора и загрузить его с помощью самописного загрузчика. Запаковать требуется именно elf файл

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


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

Пакуйте .hex. Использовать для прошивки .elf - плохая идея. Так как он может содержать много инфы кроме секций самой прошивки. Например - отладочную инфу.

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


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

вот суть этой темы как раз в том, что бы разобраться, как убрать все лишнее из elf файла?

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


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

сейчас в elf такой состав подряд:
0) заголовок
1) куча ненужных нулей
2) bin файл (от .isr_vector до .data)
3) куча ненужных нолей
4) .ARM.attributes
5) .comment
6) .debug_frame 

 

От ненужных нулей надо избавиться

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


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

не очень понятно - зачем всё это? Можете пояснить?

Ну и - если у вас уже имеется ковертор .elf (как пишете выше), то почему не удалите ненужное в нём?

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


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

16 hours ago, VaTiKaNeTs said:

вот суть этой темы как раз в том, что бы разобраться, как убрать все лишнее из elf файла?

Совершенно непонятно зачем Вам нужен именно .elf, если Вы все равно хотите превратить его в тот же .bin, который можно легко получить сразу при компиляции.

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


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

Нужен elf, потому что в нем есть заголовок. Про конвертор сказал некорректно, есть упаковщик, который должен упаковать elf файл.

 

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


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

С помощью objdump/readelf посмотреть содержимое elf фала (что там за куча ненужных нулей такая) и попробовать удалить их с помощью strip. Им же можно и другие  неиспользуемые секции или информацию удалить, например отладочную информацию (ключ -g). https://manpages.debian.org/unstable/binutils-arm-none-eabi/arm-none-eabi-strip.1.en.html

Как вариант - можно попробовать просто сжать файл каким-нибудь RLE  алгоритмом сжатия. Если не ошибаюсь, его в МК можно распаковывать на лету, по мере приёма.

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


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

Спасибо за совет, попробую, но использование сторонних тулз последняя мера, изначально хотел разобраться где в CubeIDe можно настроить, то что он линкует и как

 

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


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

5 часов назад, VaTiKaNeTs сказал:

Нужен elf, потому что в нем есть заголовок.

Что за заголовок? И почему его не перенести в .hex/.bin?

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


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

1 минуту назад, jcxz сказал:

Что за заголовок?

https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format

1 минуту назад, jcxz сказал:

И почему его не перенести

Зачем переносить, если он создается автоматически для elf файла

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


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

1 час назад, VaTiKaNeTs сказал:
Цитата

Заголовок файла (ELF Header) имеет фиксированное расположение в начале файла и содержит общее описание структуры файла и его основные характеристики, такие как: тип, версия формата, архитектура процессора, виртуальный адрес точки входа, размеры и смещения остальных частей файла.

И что там есть полезного для исполняемой в МК программы, чего нет в .hex например?

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


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

4 минуты назад, jcxz сказал:

виртуальный адрес точки входа, размеры и смещения остальных частей файла.

Очень полезная информация для загрузчика. Я не спорю что hex неплохой формат, но мне нужен ELF файл, т.к. загрузчик хочет принимать ELF файл. И пожалуйста, не надо больше писать, а чем .bin хуже или .hex, они не хуже, они просто не подходят используемому загрузчику. все эти разговоры не по теме.

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


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

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

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

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

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

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

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

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

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

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