mkrec

Преобразование двоичного файла образа в формат Motorola S-records или в формат Intel Hex-hecords

Синтаксис:

mkrec [опция | имя_файла_образа]

Опции:

-a выравнивание[KG]
Принудительно выровнять следующий файл по границе в соответствии с числом байт, указанным аргументом выравнивание (значение по умолчанию – 1 байт).
-f формат
Выходной формат: Значение по умолчанию – srec. При использовании режима binary смещение файла выводится в стандартный поток ошибок stderr.
-l длина_записи
("эль") Количество байт данных на строку (по умолчанию – 32).
-o смещение
Шестнадцатеричное значение смещения (по умолчанию – 0).
-r
Не осуществлять запись вектора сброса.
-s размер_ПЗУ[KG]
Размер ПЗУ (значение по умолчанию – 4G). Регистр суффиксов не учитывается.

Платформы:

GNU/Linux, Microsoft Windows

Описание:

Утилита mkrec преобразовывает двоичный образ в формат Motorola S-records или в формат Intel Hex records, которые подходят в качестве входных данных для большинства программаторов флэш-памяти/EPROM. Большинство внутрисхемных эмуляторов (ICE) также использует эти форматы. По умолчанию используется формат Motorola, однако его можно изменить опцией формата -f. Обратите внимание, что форматом Intel допускаются смещения только 1 МБ.

По умолчанию утилита mkrec предполагает, что в образе содержится код начального загрузчика (initial program loader; IPL), соединенного с вектором сброса процессора при начальной загрузке. Утилита mkrec размещает образ в адресном пространстве так, чтобы он заканчивался на векторе сброса. Затем для вектора сброса выводится запись, выполняющая 16-разрядную относительную инструкцию jmp для перехода к началу образа.

Вектор сброса процессоров Intel 386/486/... расположен по линейному адресу 0xFFFFFFF0 (на 16 байт ниже отметки 4 ГБ). По умолчанию смещения, используемые для записей, указывают на эту область. Это можно представить себе как 4-гигабайтное ПЗУ, в верхнюю часть которого необходимо загрузить код. Это поведение является ожидаемым для большинства внутрисхемных эмуляторов. Если вывод направляется в небольшой программатор флэш-памяти/EPROM, может потребоваться переназначение смещений, которые должны указывать на верхнюю часть флэш-памяти/EPROM. Для этого используется опция -s размер.

Если установлена опция -r, она указывает на то, что образ не должен рассматриваться как начальный загрузчик при включении питания. Смещения записи для образа начинаются с нуля; инструкция jmp для верхней части устройства не программируется. Для изменения смещения записей используется опция -o. Следует отметить, что опцию -o можно использовать только совместно с опцией -r.

Для обеспечения совместимости с большинством устройств, принимающих эти записи, каждая запись ограничена длиной в 32 байта. Для расширения этого ограничения вплоть до 255 байт можно использовать опцию -l. Увеличенный размер записи позволяет снизить косвенные затраты и обеспечить несколько большую скорость загрузки.

Примеры:

В следующем примере двоичный образ explr2 конвертируется в записи Motorola S. Благодаря используемому для записей смещению начало образа устанавливается так, чтобы он заканчивался на векторе сброса 0xFFFFFFF0. По адресу 0xFFFFFFF0 программируется 16-разрядная относительная инструкция jmp для выполнения перехода (jmp) к началу образа.

$ mkrec explr2

В следующем примере двоичный образ ipl преобразуется в шестнадцатеричные записи Intel. Благодаря смещению, используемому в записях, начало образа выбирается так, чтобы он заканчивался на векторе сброса в 256-килобайтовом ПЗУ (0x3FFF0). По адресу 0x3FFF0 программируется 16-разрядная относительная инструкция jmp для выполнения перехода (jmp) к началу образа.

$ mkrec -f i -s 256k ipl

В следующем примере двоичный образ notipl конвертируется в записи Motorola S. Смещение, используемое в записях, начинается с 0; jmp вектор сброса не является переходом к началу образа.

$ mkrec -r notipl

Возвращаемое значение:

0
Успешное завершение.
≠0
Утилита завершилась с ошибками.

Классификация:

Инструментальные средства ЗОСРВ «Нейтрино»




Предыдущий раздел: Справочник по утилитам