Преобразование двоичного файла образа в формат Motorola S-records или в формат Intel Hex-hecords
mkrec [опция | имя_файла_образа]
1
байт).32
).0
).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
Инструментальные средства ЗОСРВ «Нейтрино»
Предыдущий раздел: Справочник по утилитам