VaTiKaNeTs 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 (изменено) · Жалоба В 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 Изменено 12 декабря, 2023 пользователем haker_fox Тему переместил. Т.к. вопрос скорее по среде разработки, чем по самомой архитектуре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба А почему вас волнует размер .elf? Должен волновать только размер .bin или .hex. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба Мне нужно затем запаковать файл, с помощью конвертора и загрузить его с помощью самописного загрузчика. Запаковать требуется именно elf файл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба Пакуйте .hex. Использовать для прошивки .elf - плохая идея. Так как он может содержать много инфы кроме секций самой прошивки. Например - отладочную инфу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба вот суть этой темы как раз в том, что бы разобраться, как убрать все лишнее из elf файла? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба сейчас в elf такой состав подряд: 0) заголовок 1) куча ненужных нулей 2) bin файл (от .isr_vector до .data) 3) куча ненужных нолей 4) .ARM.attributes 5) .comment 6) .debug_frame От ненужных нулей надо избавиться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба не очень понятно - зачем всё это? Можете пояснить? Ну и - если у вас уже имеется ковертор .elf (как пишете выше), то почему не удалите ненужное в нём? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 16 hours ago, VaTiKaNeTs said: вот суть этой темы как раз в том, что бы разобраться, как убрать все лишнее из elf файла? Совершенно непонятно зачем Вам нужен именно .elf, если Вы все равно хотите превратить его в тот же .bin, который можно легко получить сразу при компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба Нужен elf, потому что в нем есть заголовок. Про конвертор сказал некорректно, есть упаковщик, который должен упаковать elf файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба С помощью objdump/readelf посмотреть содержимое elf фала (что там за куча ненужных нулей такая) и попробовать удалить их с помощью strip. Им же можно и другие неиспользуемые секции или информацию удалить, например отладочную информацию (ключ -g). https://manpages.debian.org/unstable/binutils-arm-none-eabi/arm-none-eabi-strip.1.en.html Как вариант - можно попробовать просто сжать файл каким-нибудь RLE алгоритмом сжатия. Если не ошибаюсь, его в МК можно распаковывать на лету, по мере приёма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба Спасибо за совет, попробую, но использование сторонних тулз последняя мера, изначально хотел разобраться где в CubeIDe можно настроить, то что он линкует и как Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 5 часов назад, VaTiKaNeTs сказал: Нужен elf, потому что в нем есть заголовок. Что за заголовок? И почему его не перенести в .hex/.bin? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 1 минуту назад, jcxz сказал: Что за заголовок? https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format 1 минуту назад, jcxz сказал: И почему его не перенести Зачем переносить, если он создается автоматически для elf файла Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 1 час назад, VaTiKaNeTs сказал: https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format Цитата Заголовок файла (ELF Header) имеет фиксированное расположение в начале файла и содержит общее описание структуры файла и его основные характеристики, такие как: тип, версия формата, архитектура процессора, виртуальный адрес точки входа, размеры и смещения остальных частей файла. И что там есть полезного для исполняемой в МК программы, чего нет в .hex например? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VaTiKaNeTs 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 4 минуты назад, jcxz сказал: виртуальный адрес точки входа, размеры и смещения остальных частей файла. Очень полезная информация для загрузчика. Я не спорю что hex неплохой формат, но мне нужен ELF файл, т.к. загрузчик хочет принимать ELF файл. И пожалуйста, не надо больше писать, а чем .bin хуже или .hex, они не хуже, они просто не подходят используемому загрузчику. все эти разговоры не по теме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться