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

VaTiKaNeTs

Участник
  • Постов

    17
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о VaTiKaNeTs

  • Звание
    Участник
    Участник

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Очень полезная информация для загрузчика. Я не спорю что hex неплохой формат, но мне нужен ELF файл, т.к. загрузчик хочет принимать ELF файл. И пожалуйста, не надо больше писать, а чем .bin хуже или .hex, они не хуже, они просто не подходят используемому загрузчику. все эти разговоры не по теме.
  2. https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format Зачем переносить, если он создается автоматически для elf файла
  3. Спасибо за совет, попробую, но использование сторонних тулз последняя мера, изначально хотел разобраться где в CubeIDe можно настроить, то что он линкует и как
  4. Нужен elf, потому что в нем есть заголовок. Про конвертор сказал некорректно, есть упаковщик, который должен упаковать elf файл.
  5. сейчас в elf такой состав подряд: 0) заголовок 1) куча ненужных нулей 2) bin файл (от .isr_vector до .data) 3) куча ненужных нолей 4) .ARM.attributes 5) .comment 6) .debug_frame От ненужных нулей надо избавиться
  6. вот суть этой темы как раз в том, что бы разобраться, как убрать все лишнее из elf файла?
  7. Мне нужно затем запаковать файл, с помощью конвертора и загрузить его с помощью самописного загрузчика. Запаковать требуется именно elf файл
  8. В 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
  9. Некорректно выразился, мне нужен размер моей прошивки, которая содержится в hex файле
  10. может быть вы правы, но я пока не хочу сдвигать всю прошивку на 8 байт, и править стартовый адрес в линкере
  11. Положу по адресу в конец флешки рядом с размером прошивки, а затем сама stm залезет в конец флешки, возьмет размер оттуда, посчитает по нему crc, и сравнит его с тем, что хранится в конце флешки
  12. Написал такой код для awk BEGIN{ FS="" #каждый новый символ это новое поле данных } { if ($8 == 0 && $9 == 0) # 00 - запись содержит данные двоичного файла { # прибавляем поле длины к общему размеру size += (($2 * 10) + $3) } } END{ print "size of data in HEX file: "size" Byte" } Вырезал несколько строк из hex файла, и протестировал на них, что бы проверить правильность. Выдает размер 60 байт, получается правильно считает размер :203FA0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 :203FC0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 :203FE0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 @dimka76, если мой способ не выгорит, попробую ваш
  13. @esaulenka, спасибо за предостережение, а можете поделиться, кодом, которым вы считали размер hex файла, потому что я так и не смог
  14. @esaulenka, спасибо за развернутый ответ, srec мне не понравился, нечитаемая документация, с горем пополам рассчитал CRC. Я прислушался к одному из ответов и начал использовать awk. Смог посчитать размер, написав простенький код, завтра приложу, как это сделал. Сейчас хочу и расчет CRC прописать в этом же скрипте. Пока для проблемой является, как записать полученный размер и crc в определенный адрес в hex файле. Прошивка заканчивается по адрес 0x23xxx, а записать crc и размер надо в конец флешки, 0xFFFF8 и 0xFFFFC соответственно, что бы потом stm могла залезть по этому адресу и вычитать оттуда размер, посчитать crc и сравнить его с тем результатом, что лежит во флешке
  15. Разбираюсь с awk, мощная штука, спасибо за совет, но пока не очень понятно, как определить размер hex файла. Моя первая мысль была т.к. awk ходит по строкам, посчитать их количество и получить размер прошивки, но не получилось, т.к. данные хранятся не в ровном столбике. testfile: { i++ } END{ print i } console: awk -f testfile /projectName.hex Есть советы как это можно сделать, так что бы работало?
×
×
  • Создать...