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

Утилита SRecord

Прошу прощения, может не совсем в тему, хоть и проект под АРМ в кейле. Пытаюсь к прошивке прикруть загрузчик сабжем http://srecord.sourceforge.net/. Если кто нибудь исползовал как склеить два бинарника?

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


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

Спасибо, не знал что она бинарники может. Но хочется разобраться с SRecord. Она мощнее намного.

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


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

Еще досовское "copy /b" чем не устраивает для склейки бинарных файлов?

GNU'шный инструмент может и под nix'ами юзаться) а там этой команды нет(

Это на тот случай, если инструментарий гнутый...

 

Спасибо, не знал что она бинарники может. Но хочется разобраться с SRecord. Она мощнее намного.

Так на нее же прекрасная дока есть) На счет мощности +1!)

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


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

Так на нее же прекрасная дока есть)

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

Вот вроде начало получаться. Она как я понял любит хекс на входе.

Вот так склеил:

srec_cat.exe bootloader.hex --Intel --offset 0x00 skat.hex --Intel --Output skat_app.bin --Binary

Сейчас хочу еще контрольную сумму добавить и длинну встроенного образа бута. Не получается только промежутки FF залить. Ядерная утилита. Сделал скрипт, который к прошивке подшивает бут с контрольной суммой и длинной:

srec_cat.exe bootloader.hex --Intel --offset 0x04 --l-e-crc32 --min bootloader.hex --Intel --Output bootloader_and_crc32.hex --Intel

srec_cat.exe bootloader_and_crc32.hex --Intel --offset 0x04 --b-e-length --min bootloader.hex --Intel --Output bootloader_and_len_and_crc32.hex --Intel

srec_cat.exe bootloader_and_len_and_crc32.hex --Intel --offset 0x0003DFF8 skat.hex --Intel --o skat_app.hex --Intel

srec_cat.exe skat_app.hex --Intel --fill 0xFF 0x0 0x40000 --o skat_app.bin --Binary

pause

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


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

Есть еще hexmate from HiTech. Я как-то пробовал, но не прижилось у меня...

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


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

Заливка дырок 0xFF:

srec_cat.exe application.hex --Intel --fill 0xFF -over application.hex --Intel --Output application.hex --Intel

Запись CRC в конец прошивки:

srec_cat.exe application.hex --Intel --l-e-crc32 --max application.hex --Intel --Output temp.hex --Intel

Склейка прошивки с бутом, с заливкой 0xFF и сдвигом прошивки в рабочее место

srec_cat.exe bootloader.hex --Intel --fill 0xFF 0x0 0x18000 application.hex --Intel --Output combined.hex --Intel

Сдвиг прошивки в рабочее место:

srec_cat.exe temp.hex --Intel --offset -0x18000 --Output temp.bin --Binary

С Hexmate начинал, не то...

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


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

Спасибо за примеры. А как считается CRC32 применительно к этой утилите?

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


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

Спасибо за примеры. А как считается CRC32 применительно к этой утилите?

Как положено.

Name : "CRC-32"

Width : 32

Poly : 04C11DB7

Init : FFFFFFFF

RefIn : True

RefOut : True

XorOut : FFFFFFFF

Check : CBF43926

В приложении талмуд по CRC вообще.

crc_v3.txt

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


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

HARMHARM, в строке "--l-e-crc32 --max" параметр --max пишет CRC по махмально возможному адресу. Как потом, в своих прогах, его находите? Он ведь плавает в зависимости от размера кода.

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


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

Сам отвечу)) В Keilе есть внутренний символ Region$$Table$$Limit, адрес этой переменой и есть последний адрес кода (как-то так)).

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


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

Я располагаю в конце памяти сегмент, его адрес и использую. Точнее адрес этого сегмента кладется в константу в известном месте в заголовке приложения.

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


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

Слукавил я по поводу Region$$Table$$Limit. Правильно использовать Load$$LR$$LR_IROM1$$Limit и размер кода Load$$LR$$LR_IROM1$$Length, при условии, что скаттер файл по умолчанию (для STM32).

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


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

У меня возник вопрос по Srecord

Мне нужно подсчитать СRC16 hex-файла к примеру от нуля до адреса DDFD(включительно) и записать контрольную сумму по адресу DDFE.

Пишу так(как я понял из helpa, я плохо знаю английский :crying: ):

srec_cat.exe flash.hex --Intel -crop 0 0xDDFD --l-e-crc16 0xDDFE --output flash(crc16).hex --Intel

Может кто-нибудь подскажет как исправить, а то я совсем умаялся?

Буду благодарен за любую оказанную помощь!

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

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


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

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

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

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

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

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

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

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

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

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