mkrec
Преобразование
двоичного
образа
в формат ПЗУ (QNX)
Синтаксис:
mkrec
[опция | имя_файла_образа] …
Поддерживаемые
платформы:
QNX
Neutrino, Linux, Microsoft Windows
Опции:
-a выравнивание[K|M|G]
Принудительно
выровнять следующий файл по границе в соответствии с числом
байтов, указанным аргументом выравнивание (значение
по умолчанию – 1 байт).
-f формат
Выходной формат:
-
binary or
b –
необработанный двоичный файл.
-
srec
или s –
записи Motorola S.
-
intel
или i –
шестнадцатеричные записи Intel.
-
full
или f –
дополнить файл до размера, указанного опцией -s
(подразумевается двоичный формат).
Значение по
умолчанию – 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