АнглийскийФранцузскийИспанский

Значок OnWorks

srec_examples - Интернет в облаке

Запустите srec_examples в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда srec_examples, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


srec_examples - примеры использования SRecord

ОПИСАНИЕ


" srec_cat команда очень мощная, благодаря возможности комбинировать входные фильтры
практически неограниченными способами. На этой странице руководства описаны некоторые из них.

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

" Команды Линии Находятся Слишком Длинное
Если вы застряли в операционной системе с абсурдно короткими ограничениями длины командной строки,
некоторые из следующих команд могут быть слишком длинными. Вы можете обойти этот недостаток,
поместив вашу командную строку в файл, скажем Фред.txt, а потом расскажи srec_cat(1) прочитать это
файл для остальной части его командной строки, например

srec_cat @ fred.txt

Это также имеет то преимущество, что разрешает комментарии, позволяя вам написать свою командную строку
параметры на нескольких строках и даже отступ, чтобы сделать команду более понятной. Комментарии
начать с «#”И продлите до конца строки. Пустые строки игнорируются.

Конечно, вы всегда можете перейти на Linux, который уже более 27 лет отстает.
лет сейчас.

ВАШЕ Примеры Требуются
Если у вас есть умный способ использования SRecord или вы решили сложную проблему с
SRecord, вы можете внести свой вклад в эту страницу руководства, сделав ее более полезной для всех.
Отправьте свой пример по электронной почте на адрес электронной почты, указанный в конце этой страницы руководства.

ПРЕОБРАЗОВАНИЯ ФАЙЛОВ ФОРМАТЫ


Самая простая из вещей srec_cat(1) можно преобразовать из одного формата файла EPROM в
Другая. Пожалуйста, имейте в виду, читая этот раздел, что вы можете делать многие из этих
вещи одновременно в одной команде. Их только разбивают по отдельности, чтобы сделать их
легче понять.

Intel в Motorola
Один из простейших примеров - преобразование файлов из шестнадцатеричного формата Intel в формат Motorola S‐
Формат записи:

srec_cat intel ‐ файл -интелл -о srec ‐ файл

Обратите внимание, что спецификатор формата следует сразу за именем файла, который он описывает.
Выберите любые два формата, которые поддерживает SRecord, и он может конвертировать между всеми ними.
(За исключением выходов ассемблера, BASIC, C и FPGA, которые предназначены только для записи.)

Motorola в Intel
Преобразование другим способом так же просто:

srec_cat srec ‐ файл -o intel ‐ файл -Intel

Форматом по умолчанию является формат Motorola S-Record, поэтому его не нужно указывать после
имя файла.

Другой Формы of Одна и та же Формат
К сожалению, часто случается, что некоторые программисты с запутанными EPROM реализуют только часть
спецификации, используемой для представления их шестнадцатеричных файлов. Например, некоторые компиляторы
создавать данные Motorola «s19» (то есть записи данных S1 с начальными записями S9, 16 бит
адресные поля), что было бы нормально, за исключением того, что некоторые болваны программисты EPROM настаивают на
«S37» данные Motorola (то есть записи данных S3 с начальными записями S7, 32-битный адрес
поля).

Можно преобразовать одну форму Motorola в другую, используя -Длина адреса
опции:

srec_cat short.srec -o long.srec -address-length = 4

Эта команда предписывает использовать для вывода четырехбайтовые (32-битные) адреса.

Этот раздел также относится к шестнадцатеричным файлам Intel, так как они тоже могут выбирать
с адресами различной ширины. Чтобы преобразовать одну форму Intel в другую с помощью
то же -Длина адреса опции:

srec_cat i32.hex -o i16.hex -длина адреса = 3

Эта команда предписывает использовать на выходе 16-битные сегментированные адреса «i20hex». Длина адреса
из 4 является значением по умолчанию (32-битная линейная адресация «i32hex»), а длина адреса 2 будет
запросить 8-битную адресацию «i16hex».

линия Длины
Время от времени вы будете встречать слабоумного программиста EPROM, который не справляется
с длинными текстовыми строками они предполагают, что в каждой строке будет только 46 символов и
barf, когда они видят длины строк по умолчанию, srec_cat(1) пишет (или, что еще хуже, получает стек
каракули и краш).

Определение формата Motorola S-record допускает до 255 байтов полезной нагрузки или строк
514 символы плюс окончание строки. Все программисты EPROM должен иметь достаточно
большие строчные буферы, чтобы справиться с такими большими записями. Немногие делают.

Параметр -line-length может использоваться для указания максимальной длины строки (не включая
новая строка) для использования при выводе. Например, 16-байтовые данные для шестнадцатеричной системы Motorola

srec_cat long.srec -o short.s19 -line ‐ length = 46

Параметр длины строки взаимодействует с параметром длины адреса, поэтому некоторые попытки
оптимизировать для вашей конкретной ситуации многие могут понадобиться.

Результат Заблокировать Размер
Время от времени вы будете сталкиваться с древним идиотским программистом EPROM, который не может
справляются с длинными записями данных, они предполагают, что когда-либо будет не более 16 байтов
данных на запись и barf, когда они видят 32-байтовые полезные данные по умолчанию, которые srec_cat(1)
пишет (или, что еще хуже, переполнение буфера приводит к появлению высокой травы, которая рисует на вашем
СППЗУ).

Определение шестнадцатеричного формата Intel допускает до 255 байтов данных полезной нагрузки на запись. Все
Программисты EPROM должен иметь достаточно большие буферы данных, чтобы справиться с такими записями.
большой. Удачи с этим.

Параметр -Output-Block-Size может использоваться, чтобы указать размер данных записи, которые будут использоваться в
выход. Например, шестнадцатеричный Intel с 16-байтовой полезной нагрузкой:

srec_cat long.srec -o short.hex -intel -obs = 16

Будьте осторожны, чтобы не поставить -обс опция между именем выходного файла и форматом
спецификатор.

Просто Данные, Пожалуйста,
Есть несколько тупых программистов EPROM, которые могут справиться только с записями данных и
не может справиться с записями заголовков или записями адреса начала выполнения. Если у вас есть это
проблема, -данные-только опцию можно использовать для подавления практически всего, кроме
данные. Фактический эффект, конечно, зависит от формата, потому что у некоторых их нет
особенности в любом случае.

" -данные-только вариант короткий. Есть четыре свойства, которые могут быть -отключен or
-Enabled раздельно. Увидеть srec_cat(1) справочная страница с описанием -отключен и
-Enabled настройки.

Например, вашему неандертальскому программисту EPROM требуется шестнадцатеричный код Motorola с записями заголовков.
(S0), но без записей подсчета данных (S5). Не используя -данные-только опция имеет это barf on
запись подсчета данных, но с использованием -данные-только опция имеет это barf на отсутствующем заголовке
записывать. С помощью -disable = количество данных опция оставит запись заголовка нетронутой, пока
подавление записи количества данных.

Данные Заголовки
" srec_cat(1) команда всегда пытается пройти через записи заголовков без изменений, когда
они присутствуют. Он даже пытается сохранить их при изменении формата файла до предела.
форматы файлов поддерживают.

Если нет записи заголовка файла, и вы хотите добавить ее, или вы хотите переопределить
существующей записи заголовка файла, используйте -заголовок=string вариант. Вам нужно будет процитировать
строка (чтобы изолировать ее от оболочки), если она содержит пробелы или метасимволы оболочки.

Типы Начните Адреса
" srec_cat(1) команда всегда пытается пройти через начальные адреса выполнения (обычно
встречающиеся в конце файла) всякий раз, когда они присутствуют. Они корректируются по
с записями данных -компенсировать фильтр. Он даже пытается сохранить их в файле
формат изменяется до предела, на который способны форматы файлов.

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

Обратите внимание: начальный адрес выполнения отличается от первого адреса в
память ваших данных. Думайте об этом как об адресе «goto», на который будет переходить монитор, когда
шестигранная нагрузка завершена. Если вы хотите изменить место начала данных в памяти, используйте
-компенсировать фильтр.

Фиксация Контрольные суммы
Некоторые разработчики встроенных прошивок обременены безупречными инструментами, которые производят
неверные контрольные суммы, которые более бдительные модели программистов EPROM не примут.

Чтобы исправить контрольные суммы в файле, используйте -ignore-контрольные суммы вариант. Например:

srec_cat broken.srec -ignore-контрольные суммы -o fixed.srec

Контрольные суммы в сломанный.srec анализируются (это все еще и ошибка, если они отсутствуют), но
не проверял. Результирующий фиксированный.srec файл имеет правильные контрольные суммы. В -ignore-контрольные суммы
опция применяется только к вводу.

Эта опция может использоваться для файлов любого формата, имеющего контрольные суммы, включая шестнадцатеричный формат Intel.

Обнаружение Тайна Форматы
Смотрите пост в Что Формат Is Это? раздел ниже, чтобы узнать, как обнаружить и преобразовать загадочное СППЗУ.
загрузить форматы файлов.

BINARY FILES


Возможно преобразование в двоичные файлы и обратно. Вы даже можете смешивать двоичные файлы и
другие форматы вместе в одном srec_cat(1) команда.

Writing Двоичный Файлы
Самый простой способ прочитать шестнадцатеричный файл и преобразовать его в двоичный файл выглядит так:

srec_cat fred.hex -o fred.bin -binary

Читает шестнадцатеричный файл Motorola Фред.srec и записывает в Фред.бин как сырье
двоичный файл.

Обратите внимание, что данные помещаются в двоичный файл по байтовому смещению, заданному параметром
адреса в шестнадцатеричном файле. Если в данных есть дыры, они заполняются нулями.
Это, конечно, обычное дело для вывода компоновщика, когда код размещается, начиная с
особое место в памяти. Например, если у вас есть изображение, которое начинается с 0x100000,
первый 1 МБ выходного двоичного файла будет равен нулю.

Вы можете автоматически отменить это смещение, используя такую ​​команду, как

srec_cat fred.hex -offset - -minimum ‐ addr fred.hex -o fred.bin

Вышеупомянутая команда работает, компенсируя Фред.hex файл меньше в памяти
адрес в Фред.hex данные файла.

См. Также srec_binary(5) справочная страница для получения дополнительных сведений.

Reading Двоичный Файлы
Самый простой способ прочитать двоичный файл и преобразовать его выглядит так

srec_cat fred.bin -binary -o fred.srec

Это читает двоичный файл Фред.бин и снова записывает все свои данные как
Файл Motorola S-Record.

Часто этот двоичный файл находится не совсем там, где вы хотите, в адресном пространстве, потому что он
предполагается, что он находится по нулевому адресу. Если вам нужно переместить его, используйте -компенсировать фильтр.

srec_cat fred.bin -binary -offset 0x10000 -o fred.srec

Также нужно избегать файловых «дырок», заполненных нулями. Вы можете использовать -обрезать
фильтр, вы могли бы использовать - незаполнить отфильтруйте, если вы точно не знаете, где находятся данные.

srec_cat fred.bin -binary -unfill 0x00 512 -o fred.srec

Вышеупомянутая команда удаляет серии нулевых байтов, длина которых составляет 512 байтов или больше. Если твой
файл содержит 1 ГБ начальных нулевых байтов, это будет медленно, возможно, лучше использовать
dd(1) команда сначала нарезать и нарезать кубиками.

ПРИСОЕДИНЕНИЕ FILES ВМЕСТЕ


" srec_cat команда берет свое имя от UNIX кошка(1) команда, сокращенно от
«Catenate» или «присоединиться». В srec_cat команда объединяет файлы загрузки СППЗУ.

Все In один
Объединить файлы загрузки EPROM в один файл очень просто, просто назовите столько файлов на
командную строку как вам нужно:

srec_cat файл1 файл2 -o Outfile

В этом примере представлены все файлы Motorola S-Record, поскольку это формат по умолчанию. Вы можете
иметь несколько форматов в одной команде, и srec_cat(1) все равно будет работать. Ты даже не
должны выводить тот же формат:

srec_cat файл1 -спектр файл2 -нидхэм \
-o Outfile -сигнетика

Это все древние форматы, однако нередко приходится смешивать и сопоставлять Intel
и форматы Motorola в одном проекте.

фильтрация После присоединение
Бывают случаи, когда вы хотите объединить два набора данных вместе, а затем применить фильтр
к объединенному результату. Для этого вы используете круглые скобки.

srec_cat \
'(' \
вводить -исключить 0xFFF0 0x10000 \
-generate 0xFFF0 0xFFF8 -repeat ‐ string 'Bananas' \
')' \
-b ‐ e ‐ length 0xFFF8 4 \
-b ‐ e ‐ checkum ‐ neg 0xFFFC 4 4 \
-o Outfile

В приведенном выше примере команда связывает входной файл (с исключенной областью сгенерированных данных)
с постоянной строкой. Этот связанный вход затем фильтруется, чтобы добавить длину 4 байта, и
4-байтовая контрольная сумма.

присоединение Концы с концами
Слишком часто диапазоны адресов в файлах загрузки СППЗУ перекрываются. Вы получите
ошибка, если они это сделают. Если оба файла начинаются с нулевого адреса, потому что каждый переходит в
отдельный EPROM, возможно, потребуется использовать фильтр смещения:

srec_cat файл1 \
файл2 -смещение 0x80000 \
-o Outfile

Иногда вы хотите, чтобы два файла точно следовали друг за другом, но вы не знаете
замещение заранее:

srec_cat файл1 \
файл2 -offset -maximum ‐ addr файл1 \
-o Outfile

Обратите внимание, что там, где раньше было число (0x80000), теперь есть вычисление (-maximum‐
адр файл1). Это возможно в большинстве случаев, когда можно использовать число (также -minimum-addr и
-диапазон).

УРОЖАЙ ДАННЫЕ


Можно скопировать файл загрузки СППЗУ, выбрав адреса для сохранения и адреса для
отказаться.

Что к Сохранить
Обычное действие - обрезать ваши данные, чтобы они соответствовали местоположению вашего EPROM. Ваш компоновщик может добавить
другой мусор, который вам неинтересен, или в месте RAM. В этом примере
на границе 1 МБ находится СППЗУ размером 2 МБ:

srec_cat вводить -кроп 0x200000 0x300000 \
-o Outfile

Нижняя граница для всех диапазонов адресов является включительной, а верхняя - исключительной. если ты
вычтите их, вы получите количество байтов.

Адрес Офсет
Возможно, у вас дебильный программатор EPROM, и он выключает, если образ EPROM
не начинается с нуля. Чтобы узнать, где находится приносит начать в памяти, используйте
srec_info(1) команда:

$ srec_info пример.srec
Формат: Motorola S ‐ Record
Заголовок: компоновщик цепочек extra-whiz tool
Начальный адрес выполнения: 0x00200000
Данные: 0x200000 - 0x32AAEF
$

Вместо того, чтобы вырезать командный файл компоновщика, просто сместите адреса:

srec_cat вводить -crop 0x200000 0x300000 -смещение -0x200000 \
-o Outfile

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

Этот пример также демонстрирует, как входные фильтры могут быть связаны вместе: сначала
кадрирование, а затем смещение - все в одной команде, без временных файлов.

Если все, что вы хотите сделать, это сместить данные, чтобы они начинались с нулевого адреса, это может быть
автоматизировано, поэтому вам не нужно заранее знать минимальный адрес, используя srec_cat's
возможность вычислять некоторые вещи в командной строке:

srec_cat вводить -offset - -minimum ‐ addr вводить \
-o Outfile

Обратите внимание на пробелы по обе стороны от знака минус, они обязательны.

Что к Бросать прочь
Бывают случаи, когда вам нужно исключить небольшой диапазон адресов из файла загрузки EPROM,
вместо того, чтобы сохранять небольшой диапазон адресов. В -исключать фильтр может использоваться для
эта цель.

Например, если вы хотите исключить диапазон адресов, в котором серийный номер
встроенное устройство хранится, скажем, 0x20 байт при 0x100, вы должны использовать такую ​​команду:

srec_cat input.srec -exclude 0x100 0x120 -o output.srec

" вывод.srec файл будет иметь дыры в данных в необходимых местах.

Обратите внимание, что у вас могут быть оба -обрезать и -исключать в той же командной строке, в зависимости от того, что работает
более естественно для вашей ситуации.

прерывистый Адрес Диапазоны
Диапазоны адресов не обязательно должны быть одним диапазоном, вы можете создать диапазон адресов, используя
более одной пары.

srec_cat вводить -кроп 0x100 0x200 0x1000 0x1200 \
-o Outfile

Этот фильтр приводит к передаче данных из 0x100..0x1FF и данных из 0x1000..0x1200.
через, остальное отбрасывается. Это более эффективно, чем связывание -обрезать и
-исключать фильтровать вместе.

ПЕРЕМЕЩЕНИЕ ВЕЩИ ВОКРУГ


Также возможно изменить адрес записей данных, как вперед, так и назад.
Также возможна перестановка места размещения записей данных в памяти.

Офсет ФИЛЬТР
" -offset =номер фильтр работает с адресами записей. Если число положительное
адреса перемещаются в памяти на много байтов выше, отрицательные значения перемещаются ниже.

srec_cat вводить -crop 0x200000 0x300000 -смещение -0x200000 \
-o Outfile

В приведенном выше примере блок данных размером 1 МБ с номером 0x200000 перемещается до нуля (смещение равно
отрицательный) и отбрасывает остальные данные.

Байт Перестановка
Бывают случаи, когда байты в данных необходимо поменять местами, преобразовывая их между большими
endian и little-endian данные обычно.

srec_cat вводить -байт-своп 4 -o Outfile

Это меняет байты на 32-битные значения (4 байта). По умолчанию, если вы не указываете ширину,
- перевернуть байты в 16-битные значения (2 байта). На самом деле вы можете использовать любое странное значение, которое вы
например, это даже не должно быть степенью 2. Возможно, 64 бита (8 байтов) могут быть полезны
когда-нибудь.

Двоичный Результат
Вам нужно следить за двоичными файлами на выходе, потому что дыры заполнены нулями.
Ваша программа размером 100 КБ в верхней части 32-разрядной адресуемой памяти создаст файл размером 4 ГБ. Видеть
srec_binary(5) о том, как понять и избежать этой проблемы, обычно с -компенсировать фильтр.

расщепляющий an Фото товара
Если у вас 16-битная шина данных, но вы используете два 8-битных СППЗУ для хранения прошивки,
вы можете генерировать четные и нечетные изображения, используя -Расколоть фильтр. Предполагая, что ваш
прошивка находится в прошивка.hex файл, используйте следующее:

srec_cat прошивка.hex -split 2 0 -o прошивка.even.hex
srec_cat прошивка.шестнадцатеричный -split 2 1 -o прошивка.нечетный.шестнадцатеричный

В результате будут созданы два необходимых образа СППЗУ. Обратите внимание, что выходные адреса
делится на кратное разделение, поэтому, если ваши изображения EPROM находятся с определенным смещением (скажем,
0x10000, в следующем примере), вам нужно удалить смещение, а затем заменить его ...

srec_cat прошивка.hex \
-смещение −0x10000 -разделить 2 0 \
-смещение 0x10000 -o прошивка.даже.шестнадцатеричный
srec_cat прошивка.hex \
-смещение −0x10000 -разделить 2 1 \
-смещение 0x10000 -o прошивка.нечетный.шестнадцатеричный

Обратите внимание, как возможность применять несколько фильтров упрощает то, что в противном случае
более длинный сценарий.

Чередование
Второе использование -Расколоть фильтр чередование памяти.

Вам не нужно разделять на байтовые части, вы можете выбрать другие размеры. Это обычное дело
хотите преобразовать данные шириной 32 бита в два набора данных шириной 16 бит.

srec_cat прошивка.hex -split 4 0 2 -o прошивка.01.hex
srec_cat прошивка.hex -split 4 2 2 -o прошивка.23.hex

Это относительно просто понять, но вы можете использовать и более широкие полосы.

В следующем примере аппаратное обеспечение требует, чтобы 512-байтовые блоки чередовались между 4
СППЗУ. Создание 4 изображений будет происходить следующим образом:

srec_cat прошивка.hex -split 0x800 0x000 0x200 -o прошивка.0.hex
srec_cat прошивка.hex -split 0x800 0x200 0x200 -o прошивка.1.hex
srec_cat прошивка.hex -split 0x800 0x400 0x200 -o прошивка.2.hex
srec_cat прошивка.hex -split 0x800 0x600 0x200 -o прошивка.3.hex

асимметричный Чередование
Более своеобразным примером чередования является микроконтроллер Microchip dsPIC33F, который имеет
странный шаблон хранения памяти, и они могут хранить 3 байта по адресу, который должен
содержат только 2 байта. Результатом является шестнадцатеричный файл, в котором верхний байт заполнен нулями (маленький
endian), и все адреса удваиваются по сравнению с тем, что они есть в микросхеме. Вот
пример:

S1130000000102000405060008090A000C0D0E0098
S1130010101112001415160018191A001C1D1E00C8
S1130020202122002425260028292A002C2D2E00F8
S1130030303132003435360038393A003C3D3E0028

Чтобы избавиться от байтов заполнения 00, оставив только 3/4 значащих байта, вы также используете
разделенный фильтр с дополнительным ширина аргумент, например:

srec_cat пример.srec -split 4 0 3 -o no_dross.srec

В результате получается файл с удаленными 00 байтами заполнения. Это выглядит так:

S113000000010204050608090A0C0D0E1011121451
S1130010151618191A1C1D1E2021222425262829EC
S11300202A2C2D2E30313234353638393A3C3D3E87

Также обратите внимание, что адреса на 3/4 меньше. Вы можете изменить это, используя
-неразделенный и -fill = 0 фильтры.

Неразделенный Фотографии
Неразделенный фильтр может использоваться для отмены эффектов разделенного фильтра. Обратите внимание, что
диапазон адресов расширяется, оставляя дыры между полосами. Используя все полосы,
вход полностью собран, без каких-либо отверстий.

srec_cat -o прошивка.hex \
прошивка.even.hex -unsplit 2 0 \
прошивка.odd.hex -unsplit 2 1

Приведенный выше пример полностью изменяет предыдущий пример с 16-битной шиной данных. В общем, ты неразделенный
с теми же параметрами, что и у вас.

ЗАПОЛНЕНИЕ ПРОБЕЛЫ


Часто файлы загрузки EPROM будут иметь «дыры» в местах, где компилятор и компоновщик сделали
ничего не ставил. Для некоторых целей это нормально, а для других что-то нужно
делать про дыры.

" Заполнять ФИЛЬТР
Можно заполнить пробелы, где не лежат ваши данные. Самый простой пример
это заполняет весь EPROM:

srec_cat вводить -заполнить 0x00 0x200000 0x300000 -о Outfile

В этом примере отверстия заполняются нулями. Вы должны указать диапазон - с
32-битное адресное пространство, заполнение всего порождает огромный загрузить файлы.

Если вы хотите заполнить только пробелы в ваших данных и не хотите заполнять весь EPROM,
попробовать:

srec_cat вводить -заполнить 0x00 вводить -o Outfile

Этот пример демонстрирует тот факт, что где бы ни был указан диапазон адресов,
-над и могут быть использованы опции.

Незаполнение Пробелы
Часто возникает необходимость «заполнить» образ СППЗУ после того, как вы считываете его из микросхемы. Как правило,
в нем все отверстия будут заполнены 0xFF (области EPROM, которые вы не программируете, показывают
как 0xFF, когда вы их прочитаете).

Чтобы избавиться от всех байтов 0xFF в данных, используйте этот фильтр:

srec_cat вводить -unfill 0xFF -o Outfile

Это избавит от ВСЕ байты 0xFF, включая те, которые вам действительно нужны.
Есть два способа справиться с этим. Во-первых, вы можете указать минимальную длину серии для
незаполнить:

srec_cat вводить -unfill 0xFF 5 -o Outfile

Это говорит о том, что прогоны от 1 до 4 байтов 0xFF в порядке, и что нужно только создать дыру.
для прогонов 5 или более байтов 0xFF подряд. Второй способ - повторно заполнить
промежуточные зазоры:

srec_cat Outfile -заполнить 0xFF Outfile \
-o Outfile2

Какой метод вы выберете, зависит от ваших потребностей и формы данных в вашем EPROM.
Возможно, вам придется комбинировать оба метода.

Адрес Диапазон Набивка
Некоторые форматы данных имеют ширину 16 бит и автоматически заполняются байтами 0xFF, если это
необходимо заполнить вторую половину слова, которого нет в данных. Если вам нужно
заполните другим значением, вы можете использовать такую ​​команду:

srec_cat вводить -заполнить 0x0A \
вводить -range-padding 2 \
-o Outfile

Это дает фильтру заполнения диапазон адресов, рассчитанный на основе данных входного файла.
Диапазон адресов - это все диапазоны адресов, охватываемые данными в вводить, расширенный
вниз (при необходимости) в начале каждого поддиапазона до 2-байтового кратного и расширенного
вверх (при необходимости) в конце каждого поддиапазона до кратного 2 байта. Это тоже работает
для больших кратных значений, таких как границы страниц размером 1 КБ для флеш-чипов. Это заполнение диапазона адресов
работает везде, где требуется диапазон адресов.

Заполнять Авторские права
Вы можете заполнить неиспользуемые части вашего EPROM повторяющимся сообщением об авторских правах.
Любой, кто попытается реконструировать ваши EPROM, увидит уведомление об авторских правах в
их шестнадцатеричный редактор.

Это достигается с помощью двух источников ввода, одного из файла данных и другого.
генерируется на лету.

srec_cat вводить \
-generate '(' 0 0x100000 -minus -внутри вводить ')' \
-repeat ‐ string »Copyright (C) Чайковский, 1812 г. '\
-o Outfile

Обратите внимание на диапазон адресов для генерации данных: он принимает диапазон адресов вашего
EPROM, в данном случае 1 МБ, начиная с 0, и вычитает из него диапазоны адресов, используемые
входной файл.

Если вы хотите записать это с текущим годом (потому что 1812 год немного устарел), используйте
возможность подстановки вывода оболочки (обратные тики):

srec_cat вводить \
-generate '(' 0 0x100000 -minus -внутри вводить ')' \
-repeat ‐ string "Copyright (C)` date +% Y` Tchaikovsky. "\
-o Outfile

Указанная строка повторяется снова и снова, пока не заполнит все дыры.

Запутывание Шум
Иногда вы хотите заполнить изображения EPROM шумом, чтобы скрыть, где реальные данные
останавливается и начинается. Вы можете сделать это с помощью -случайное заполнение фильтр.

srec_cat вводить -случайное заполнение 0x200000 0x300000 \
-o Outfile

Он работает так же, как и -заполнить фильтр, но использует случайные числа вместо постоянного байта
значения.

Заполнять В 16-битный Слова
При заливке изображения постоянным байтовым значением не получается, а нужно постоянное
Вместо 16-битного слова используйте -repeat ‐ data генератор, который занимает сколь угодно долго
последовательность байтов для использования в качестве образца заполнения:

srec_cat вводить \
-generator '(' 0x200000 0x300000 -minus -внутри вводить ')' \
-repeat ‐ data 0x1B 0x08 \
-o Outfile

Обратите внимание, как диапазон адресов генератора снова избегает диапазонов адресов, занятых
вводитьданные. Вы должны сами правильно определить порядок байтов.

ВСТАВКА КОНСТАНТА ДАННЫЕ


Время от времени вам может понадобиться вставить постоянные данные или данные, не созданные вашим
компилятор или ассемблер, в образы загрузки EPROM.

Двоичный Означает буквальный
Один простой способ - сохранить желаемую информацию в файле. Чтобы вставить файл
содержание буквально, без интерпретации формата, используйте двоичный формат ввода:

srec_cat вводить -двоичный -о Outfile

Вероятно, потребуется использовать смещение фильтр, чтобы переместить данные туда, где вы
на самом деле хочу, чтобы это было внутри изображения:

srec_cat вводить -binary -смещение 0x1234 -o Outfile

Также можно использовать стандартный ввод в качестве источника данных, который поддается
пишется по сценарию. Например, чтобы вставить текущую дату и время в файл загрузки СППЗУ,
вы можете использовать трубу:

дата | srec_cat - -bin -offset 0xFFE3 -o Outfile

Специальное имя файла «-» означает чтение со стандартного ввода. Выход даты
команда всегда имеет длину 29 символов, и показанное смещение поместит ее в начало
64 КБ образа EPROM.

точность повторяния Как только
" Заполнять Авторские права В разделе выше показано, как повторять строку снова и снова. Мы
может использовать одиночный повтор, чтобы вставить строку только один раз.

srec_cat -generate 0xFFE3 0x10000 -repeat ‐ string "` date` "\
-o Outfile

Обратите внимание, как диапазон адресов для генерации данных точно соответствует длине
даты(1) выходной размер. Вы, конечно, можете добавить свой входной файл в приведенный выше srec_cat(1)
команда для привязки вашего образа EPROM вместе с датой и временем.

Вставка A Длинное
Другая возможность - добавить номер фиксации Subversion к вашему образу EPROM. В этом
Например, мы вставляем 4-байтовое значение с прямым порядком байтов по адресу 0x0008. В
Номер фиксации Subversion находится в $ версия переменная оболочки в этом примере:

srec_cat -generate 0x0008 0x000C -l ‐ e ‐ constant $ версия 4 \
вводить -исключить 0x0008 0x000C \
-o Outfile

Обратите внимание, что мы используем фильтр, чтобы убедиться, что во входных данных есть дыра, где номер версии
идет, на всякий случай линкер что-то туда положил.

ДАННЫЕ О компании ДАННЫЕ


К выходным данным можно добавлять различные данные о данных.

Контрольные суммы
" -big-endian-контрольная сумма-отрицательная фильтр можно использовать для суммирования данных, а затем вставить
отрицательная сумма в данные. Это приводит к суммированию до нуля, когда
сама контрольная сумма суммируется при условии, что ширина суммы соответствует ширине вставленного значения.

srec_cat вводить \
-кроп 0 0xFFFFFC \
-случайное заполнение 0 0xFFFFFC \
-b ‐ e ‐ checkum ‐ neg 0xFFFFFC 4 4 \
-o Outfile

В этом примере у нас есть EPROM в самом нижнем мегабайте памяти. Фильтр -crop
гарантирует, что мы суммируем данные только в EPROM, а не где-либо еще. В
-Фильтр случайного заполнения заполняет любые дыры, оставшиеся в данных, случайными значениями. Наконец, -b‐
Фильтр электронной контрольной суммы вставляет 32-битную (4 байтовую) контрольную сумму в формате с прямым порядком байтов в последний
4 байта образа СППЗУ. Естественно, есть версия этого фильтра с прямым порядком байтов:
Что ж.

Ваш встроенный код может проверить EPROM с помощью кода C, подобного следующему:

беззнаковое длинное * начало = (беззнаковое длинное *) 0;
беззнаковый длинный * конец = (беззнаковый длинный *) 0x100000;
беззнаковая длинная сумма = 0;
в то время как (начало <конец)
сумма + = * начало ++;
если (сумма! = 0)
{
Ой
}

" -big-endian-контрольная сумма-бит фильтр аналогичен, за исключением того, что суммирование по контрольной сумме
должен дать значение все-один-бит (-1). Например, если использовать шорты, а не длинные:

srec_cat вводить \
-кроп 0 0xFFFFFE \
-заполнить 0xCC 0x00000 0xFFFFFE \
-b ‐ e ‐ checkum ‐ neg 0xFFFFFE 2 2 \
-o Outfile

Предполагая, что вы выбрали правильный фильтр порядка следования байтов, ваш встроенный код может проверить EPROM.
используя код C, аналогичный следующему:

беззнаковое короткое * начало = (беззнаковое короткое *) 0;
беззнаковый короткий * конец = (беззнаковый короткий *) 0x100000;
беззнаковая короткая сумма = 0;
в то время как (начало <конец)
сумма + = * начало ++;
если (сумма! = 0xFFFF)
{
Ой
}

Существует также -b-e-контрольная сумма-положительная фильтр и соответствующий фильтр с прямым порядком байтов, который
вставляет простую сумму, которая будет проверена в C с помощью проверки на равенство.

srec_cat вводить \
-кроп 0 0xFFFFFF \
-заполнить 0x00 0x00000 0xFFFFFF \
-b ‐ e ‐ checkum ‐ neg 0xFFFFFF 1 1 \
-o Outfile

Предполагая, что вы выбрали правильный фильтр порядка следования байтов, ваш встроенный код может проверить EPROM.
используя код C, аналогичный следующему:

беззнаковый символ * начало = (беззнаковый символ *) 0;
символ без знака * конец = (символ без знака *) 0xFFFFF;
беззнаковая сумма символов = 0;
в то время как (начало <конец)
сумма + = * начало ++;
если (сумма! = * конец)
{
Ой
}

В 8-битном случае не имеет значения, используете ли вы прямой или прямой порядок байтов.
фильтр.

САЙТ Шестигранный дамп
Вы можете посмотреть контрольную сумму ваших данных, используя выходной формат «шестнадцатеричный дамп». Это
полезно для просмотра вычисленных значений или для отладки srec_cat(1) команда до
увековечивая это в сценарии.

srec_cat вводить \
-кроп 0 0x10000 \
-заполнить 0xFF 0x0000 0x10000 \
-b ‐ e ‐ checkum ‐ neg 0x10000 4 \
-кроп 0x10000 0x10004 \
-o - -hex ‐ дамп

Эта команда считывает файл, проверяет сумму данных и помещает контрольную сумму на 0x10000,
обрезает результат, чтобы он содержал только контрольную сумму, а затем печатает контрольную сумму на
стандартный вывод в классическом шестнадцатеричном формате дампа. Специальное имя файла «-» означает
«Стандартный вывод» в этом контексте.

циклический избыточность Проверки
Простые аддитивные контрольные суммы имеют ряд теоретических ограничений, связанных с ошибками.
они могут и не могут обнаружить. У методов CRC меньше проблем.

srec_cat вводить \
-кроп 0 0xFFFFFC \
-заполнить 0x00 0x00000 0xFFFFFC \
-b ‐ e ‐ crc32 0xFFFFFC \
-o Outfile

В приведенном выше примере у нас есть EPROM в самом нижнем мегабайте памяти. В -обрезать фильтр
гарантирует, что мы суммируем данные только в EPROM, а не где-либо еще. В -заполнить
фильтр заполняет все дыры, оставшиеся в данных. Наконец, -b-е-контрольная сумма-нег вставки фильтра a
32-битная (4 байта) контрольная сумма в формате big-endian в последних 4 байтах образа EPROM.
Естественно, есть и версия этого фильтра с прямым порядком байтов.

Контрольная сумма вычисляется с использованием отраслевого стандарта 32-битной CRC. Потому что SRecord - это
открытый исходный код, вы всегда можете прочитать исходный код, чтобы увидеть, как он работает. Есть много не-
Версии этого кода под лицензией GPL доступны в Интернете и подходят для встраивания в
фирменная прошивка.

Также доступен 16-битный CRC.

srec_cat вводить \
-кроп 0 0xFFFFFE \
-заполнить 0x00 0x00000 0xFFFFFE \
-b ‐ e ‐ crc16 0xFFFFFE \
-o Outfile

Контрольная сумма рассчитывается по формуле CCITT. Поскольку SRecord имеет открытый исходный код, вы
всегда можно прочитать исходный код, чтобы увидеть, как он работает. Существует множество версий не под GPL.
этот код доступен в Интернете и подходит для встраивания в проприетарную прошивку.

Вы можете посмотреть CRC ваших данных, используя выходной формат «шестнадцатеричный дамп».

srec_cat вводить \
-кроп 0 0x10000 \
-заполнить 0xFF 0x0000 0x10000 \
-b ‐ e ‐ crc16 0x10000 \
-кроп 0x10000 0x10002 \
-o - -hex ‐ дамп

Эта команда считывает файл, вычисляет CRC данных и помещает CRC в
0x10000, обрезает результат так, чтобы он содержал только CRC, а затем печатает контрольную сумму на
стандартный вывод в классическом шестнадцатеричном формате дампа.

где Is My Данные?
Есть несколько свойств вашего образа СППЗУ, которые вы, возможно, захотите вставить в
поле.

srec_cat вводить -b ‐ e ‐ минимум 0xFFFE 2 -o Outfile

В приведенном выше примере вставляется минимальный адрес данных (низкокачественными воды) в данные, как
два байта в обратном порядке по адресу 0xFFFE. Сюда входит и сам минимум. Если
данные уже содержат байты по указанному адресу, вам необходимо использовать фильтр исключения.
Количество байтов по умолчанию - 4.

Существует также -l ‐ e ‐ минимум фильтр для вставки значений с прямым порядком байтов и еще два
фильтры называются -b ‐ e ‐ эксклюзивный минимум и -l-e-эксклюзивный минимум которые не включают
минимум сам по себе при вычислении минимального адреса данных.

srec_cat вводить -b ‐ e ‐ максимум 0xFFFFFC 4 -o Outfile

В приведенном выше примере вставляется максимальный адрес данных (высокая воды + 1, как
диапазоны адресов) в данные в виде четырех байтов в обратном порядке по адресу 0xFFFFFC.
Сюда входит и сам максимум. Если данные уже содержат байты в заданном
адрес, вам нужно использовать -исключать фильтр. Количество байтов по умолчанию - 4.

Существует также -l ‐ e ‐ максимум фильтр для вставки значений с прямым порядком байтов и еще два
фильтры называются -b ‐ e ‐ эксклюзивный максимум и -l-e-эксклюзив-максимум которые не включают
максимум себя в расчете максимального адреса данных.

srec_cat вводить -b ‐ e ‐ длина 0xFFFFFC 4 -o Outfile

В приведенном выше примере вставляется длина данных (высокая воды + 1 - низкокачественными воды) в
данные в виде четырех байтов в порядке прямого байта по адресу 0xFFFFFC. Это включает длину
сам. Если данные уже содержат байты в месте длины, вам необходимо использовать
-исключать фильтр. Количество байтов по умолчанию - 4.

Существует также -l ‐ e ‐ длина фильтр для вставки длины с прямым порядком байтов, а -быть-
исключительная длина и -l ‐ e ‐ эксклюзивная длина фильтры, которые не включают саму длину
в расчете.

Что Формат Is Это?
Вы можете получить различную информацию о файле загрузки EPROM, используя srec_info(1)
команда. Например:

$ srec_info пример.srec
Формат: Motorola S ‐ Record
Заголовок: "http://srecord.sourceforge.net/"
Начальный адрес выполнения: 00000000
Данные: 0000 - 0122
0456 - 0ФФФ
$

Этот пример показывает, что файл является Motorola S-Record. Текст в заголовке файла
напечатано вместе с начальным адресом выполнения. В последнем разделе указан адрес
диапазоны, содержащие данные (верхняя граница каждого поддиапазона inсложный, а не
exзакрытая форма, используемая в командной строке.

$ srec_info какой-то-странный-файл.hex -угадать
Формат: Signetics
Данные: 0000 - 0122
0456 - 0ФФФ
$

В приведенном выше примере угадывается формат файла загрузки СППЗУ. Это не безошибочно, но обычно
понимает это правильно. Вы можете использовать -угадать где бы вы ни указали явный формат, но это
имеет тенденцию быть медленнее и по этой причине не рекомендуется. Также для автоматизированной сборки
системы, вам нужны серьезные ошибки как можно раньше; если файл не в ожидаемом
формат, вы хотите, чтобы он отключился.

УПРАВЛЕНИЕ ДАННЫЕ


Можно изменить значения байтов данных несколькими способами.

srec_cat вводить -и 0xF0 -o Outfile

В приведенном выше примере выполняется побитовое И байтов данных с маской 0xF0. В
адреса записей неизменны. На самом деле я не могу придумать, как использовать этот фильтр.

srec_cat вводить -или 0x0F -o Outfile

В приведенном выше примере выполняется побитовое ИЛИ байтов данных с битами 0x0F. В
адреса записей неизменны. На самом деле я не могу придумать, как использовать этот фильтр.

srec_cat вводить -xor 0xA5 -о Outfile

В приведенном выше примере выполняется побитовое исключающее ИЛИ байтов данных с битами 0xA5.
Адреса записей не изменились. Вы можете использовать это, чтобы скрыть содержимое
ваш EPROM.

srec_cat вводить -не -о Outfile

В приведенном выше примере выполняется побитовое НЕ байтов данных. Адреса записей:
без изменений. Безопасность неизвестностью?

АВТОРСКИЕ ПРАВА


srec_cat версия 1.58
Авторское право (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011 Питер Миллер

" srec_cat программа поставляется СОВЕРШЕННО БЕЗ ГАРАНТИЙ; для получения подробной информации используйте "srec_cat
-Версия Лицензиякоманда. Это бесплатное программное обеспечение, и вы можете его распространять.
при определенных условиях; для получения подробной информации используйте "srec_cat -Версия Лицензиякоманда.

Используйте srec_examples в Интернете с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    МСИС2
    МСИС2
    MSYS2 - это набор инструментов и
    библиотеки, предоставляющие вам
    удобная среда для строительства,
    установка и запуск родной Windows
    программное обеспечение. Это кон ...
    Скачать MSYS2
  • 2
    libjpeg-турбо
    libjpeg-турбо
    libjpeg-turbo - это кодек изображений JPEG
    который использует инструкции SIMD (MMX, SSE2,
    NEON, AltiVec) для ускорения базового уровня
    Сжатие и распаковка JPEG на
    x86, x8 ...
    Скачать libjpeg-turbo
  • 3
    Xtreme Download Manager
    Xtreme Download Manager
    У проекта теперь новый дом:
    https://xtremedownloadmanager.com/ For
    Разработчики:
    https://github.com/subhra74/xdm Xtreme
    Менеджер загрузок — это мощный инструмент для...
    Скачать Xtreme Download Manager
  • 4
    ТТГО VGA32 Лайт
    ТТГО VGA32 Лайт
    Особенности: низкое разрешение 4:3 и 16:9.
    Выход VGAКлавиатура и мышь PS/2
    Пользовательский интерфейс на основе inputText (TUI)
    с диалоговым менеджеромЧастично Unicode
    поддержкаSlave dis...
    Скачать TTGO VGA32 Lite
  • 5
    Загрузчик Clover EFI
    Загрузчик Clover EFI
    Проект переехал в
    https://github.com/CloverHackyColor/CloverBootloader..
    Особенности: загрузка macOS, Windows и Linux.
    в UEFI или устаревшем режиме на Mac или ПК с
    УЭ...
    Скачать загрузчик Clover EFI
  • 6
    UnitedRPMS
    UnitedRPMS
    Присоединяйтесь к нам в Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Включите репозиторий URPMS в вашем
    система -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Скачать объединенные рпмс
  • Больше »

Команды Linux

Ad