Заполнение двоичных файлов от определенной точки адреса к другой определенной точке адреса в адресе - PullRequest
0 голосов
/ 07 июня 2018

Описание проблемы:

У меня есть два двоичных файла (давайте назовем их файл A и B ).Файл A - это ядро, а файл B - приложение, на котором будет выполняться (да, это встроенная операционная система).С файлом A мне нужно заполнить пробел от конца ядра до запуска программы, который начинается по адресу 0x00020000.

А затем от 0x00020000 + длина программы мне нужно заполнить пробел до 0x00080000.

Я попытался заглянуть в arm-none-eabi-objcopy gap fill без удачи. (Contiki использует его)

У меня два вопроса.Как узнать, когда начинать заполнение с файла A до 0x00080000, и, очевидно, как выполнять заполнение.

Если что-то не понятно, пожалуйста, дайте мне знать, и я постараюсь объяснить вболее подробно в меру моих возможностей.

1 Ответ

0 голосов
/ 07 июня 2018

Чтобы использовать objcopy для добавления отступов после последнего раздела, необходимо использовать --pad-to <address> в сочетании с --gap-fill <fillvalue>.

, например:

arm-none-eabi-objcopy --gap-fill 0x00 --pad-to 0x80000 filea.out filea_padded.out

Однако необходимо, чтобы objcopy выполнялся для объектного файла, а не для исходного двоичного файла.В сыром двоичном файле отсутствует адресная информация и метаданные раздела, которые сообщают ему, где находятся пробелы и конечный адрес.

Если ваш «двоичный файл» фактически является шестнадцатеричным файлом (например, формат Intel или S-Record), вы можете использовать пакет утилит SRecord для управления ими, так как формат включает метаданные адреса / местоположения.Вы также можете использовать это для объединения двух файлов в одно изображение.

...