mkrec

Преобразование двоичного образа в формат ПЗУ (QNX)

Синтаксис:

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

Поддерживаемые платформы:

QNX Neutrino, Linux, Microsoft Windows

Опции:

-a выравнивание[K|M|G]

Принудительно выровнять следующий файл по границе в соответствии с числом байтов, указанным аргументом выравнивание (значение по умолчанию 1 байт).

-f формат

Выходной формат: Значение по умолчанию srec. При использовании режима binary смещение файла выводится в стандартный поток ошибок stderr.

-l длина_записи

("эль") Количество байтов данных на строку (по умолчанию 32).

-o смещение

Шестнадцатеричное значение смещения (по умолчанию 0).

-r

Не осуществлять запись вектора сброса.

-s размер_ПЗУ[K|M|G]


Размер ПЗУ (значение по умолчанию 4G). Регистр суффиксов не учитывается.

Описание:

Утилита mkrec преобразовывает двоичный образ в записи Motorola S или в шестнадцатеричные записи Intel, которые подходят в качестве входных данных для большинства программаторов флэш-памяти/EPROM. Большинство внутрисхемных эмуляторов (ICE) также использует эти форматы. По умолчанию используется формат Motorola S, однако его можно изменить опцией формата -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