GoGPT Best VPN GoSearch

icono de página de OnWorks

srec_examples: en línea en la nube

Ejecute srec_examples en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando srec_examples que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


srec_examples: ejemplos de cómo utilizar SRecord

DESCRIPCIÓN


El srec_cat El comando es muy poderoso, debido a la capacidad de combinar los filtros de entrada
de formas casi ilimitadas. Esta página de manual describe algunos de ellos.

Esta página de manual describe cómo utilizar los distintos archivos de entrada, filtros de entrada y
generadores. Pero estos son solo ejemplos, para obtener detalles más completos, consulte el entrada_srec(1)
página de manual.

El Comandos Líneas ¿Esta de más Largo
Si está aislado en un sistema operativo con límites de longitud de línea de comando absurdamente cortos,
algunos de los comandos que siguen pueden ser demasiado largos. Puede sortear esta desventaja
colocando su línea de comando en un archivo, digamos fred.txty luego decir srec_cat(1) para leer esto
archivo para el resto de su línea de comando, como este

srec_cat @ fred.txt

Esto también tiene la ventaja de permitir comentarios, lo que le permite escribir su línea de comando
opciones en varias líneas e incluso sangría para que el comando sea más claro. Comentarios
empezar en un "#”Y extenderse hasta el final de la línea. Las líneas en blanco se ignoran.

Por supuesto, siempre puede actualizar a Linux, que ha estado apestando menos durante más de 27
años ahora.

Su Ejemplos Querido
Si tiene una forma inteligente de usar SRecord, o ha resuelto un problema difícil con
SRecord, podría contribuir a esta página del manual, haciéndola más útil para todos.
Envíe su ejemplo en un correo electrónico a la dirección de correo electrónico al final de esta página del manual.

MUDADO ARCHIVO FORMATOS


La mas simple de las cosas srec_cat(1) puede hacer es convertir de un formato de archivo EPROM a
otro. Al leer esta sección, tenga en cuenta que puede hacer muchas de estas
cosas simultáneamente en un comando. Solo se desglosan por separado para hacerlos
Más fácil de entender.

Intel a Motorola
Uno de los ejemplos más simples es convertir archivos del formato hexadecimal de Intel a Motorola S‐
Formato de registro:

srec_cat archivo de intel -inteligencia -o archivo srec

Tenga en cuenta que el especificador de formato sigue inmediatamente al nombre del archivo que describe.
Elija dos formatos que comprenda SRecord, y puede convertir entre todos ellos.
(Excepto las salidas de ensamblador, BASIC, C y FPGA que son solo de escritura).

Motorola a Intel
Convertir al revés es igual de simple:

srec_cat archivo srec -o archivo de intel -inteligencia

El formato predeterminado es el formato Motorola S-Record, por lo que no es necesario especificarlo después
el nombre del archivo.

diferente Formas of la mismos Formato
Lamentablemente, es común que algunos programadores de EPROM confusos solo implementen una parte
de la especificación utilizada para representar sus archivos hexadecimales. Por ejemplo, algunos compiladores
producir datos Motorola "s19" (es decir, registros de datos S1 con registros de inicio S9, 16 bits
campos de dirección) que estaría bien excepto que algunos programadores EPROM tontos insisten en
Datos de Motorola "s37" (es decir, registros de datos S3 con registros de inicio S7, dirección de 32 bits
campos).

Es posible convertir de una forma Motorola a otra usando el -Dirección-Longitud
opción:

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

Este comando dice que use direcciones de cuatro bytes (32 bits) en la salida.

Esta sección también se aplica a los archivos hexadecimales de Intel, ya que también tienen la capacidad de seleccionar
de una variedad de anchos de dirección. Para convertir de una forma Intel a otra usando el
mismo -Dirección-Longitud opción:

srec_cat i32.hex -o i16.hex -address ‐ length = 3

Este comando dice que use direcciones segmentadas de 16 bits “i20hex” en la salida. Una longitud de dirección
de 4 es el valor predeterminado (direccionamiento lineal "i32hex" de 32 bits), y una longitud de dirección de 2
solicitar direccionamiento “i8hex” de 16 bits.

Línea Longitudes
De vez en cuando se encontrará con un programador EPROM de mente débil que no puede hacer frente
con líneas de texto largas, asumen que solo habrá 46 caracteres por línea y
barf cuando ven las longitudes de línea predeterminadas que srec_cat(1) escribe (o peor aún, obtén una pila
garabatear y chocar).

La definición de formato de registro S de Motorola permite hasta 255 bytes de carga útil o líneas de
514 caracteres, más la terminación de la línea. Todos los programadores de EPROM debo tener lo suficiente
búferes de línea grandes para hacer frente a registros de este tamaño. Pocos lo hacen.

La opción -line-length se puede utilizar para especificar la longitud máxima de la línea (sin incluir la
nueva línea) que se utilizará en la salida. Por ejemplo, cargas útiles de 16 bytes para Motorola hex

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

La opción de longitud de línea interactúa con la opción de longitud de dirección, por lo que algunos retoques para
optimizar para su situación particular, muchos serán necesarios.

Salida Bloquear Tamaño
De vez en cuando se encontrará con un antiguo programador EPROM tonto que no puede
hacer frente a largos registros de datos, suponen que sólo habrá como máximo 16 bytes de
datos por registro, y barf cuando ven las cargas útiles predeterminadas de 32 bytes que srec_cat(1)
escribe (o peor, la sobrecarga del búfer provoca un paso de hierba alta que hace garabatos en su
EPROM).

La definición de formato hexadecimal de Intel permite hasta 255 bytes de datos de carga útil por registro. Todos
Programadores EPROM debo tener búferes de datos suficientemente grandes para hacer frente a los registros
grande. Buena suerte con eso.

La opción -Output-Block-Size se puede utilizar para especificar el tamaño de los datos de registro que se utilizarán en
producción. Por ejemplo, Intel hexadecimal con cargas útiles de 16 bytes:

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

Tenga cuidado de no poner el -obs opción entre el nombre del archivo de salida y el formato
especificador.

Solo la Datos, Por favor,
Hay algunos programadores de EPROM tontos que solo pueden hacer frente a registros de datos, y son
incapaz de hacer frente a los registros de encabezado o registros de dirección de inicio de ejecución. Si tienes esto
problema, el -sólo datos La opción se puede utilizar para suprimir casi todo excepto el
datos. El efecto real depende del formato, por supuesto, porque algunos no tienen estos
características de todos modos.

El -sólo datos La opción es mano corta. Hay cuatro propiedades que pueden ser -discapacitado or
habilitado por separado. Ver el srec_cat(1) página de manual para obtener una descripción del -discapacitado y
habilitado .

Por ejemplo, su programador neanderthal EPROM requiere Motorola hexadecimal con registros de encabezado
(S0), pero sin registros de recuento de datos (S5). No usar el -sólo datos La opción lo tiene vomitar
el registro de recuento de datos, pero utilizando el -sólo datos La opción tiene barf en el encabezado que falta
registro. Utilizando el -disable = recuento de datos La opción dejaría el registro de encabezado intacto mientras
suprimiendo el registro de recuento de datos.

Fecha Cabezales
El srec_cat(1) el comando siempre intenta pasar a través de los registros de encabezado sin cambios, siempre que
están presentes. Incluso intenta preservarlos a través de cambios de formato de archivo, hasta el límite
los formatos de archivo son capaces de.

Si no hay un registro de encabezado de archivo y desea agregar uno, o desea anular
un registro de encabezado de archivo existente, utilice el -encabezamiento=cadena opción. Deberá citar el
string (para aislarlo del shell) si contiene espacios o metacaracteres del shell.

Ejecución Sus datos Aqui Direcciones
El srec_cat(1) el comando siempre intenta pasar a través de las direcciones de inicio de ejecución (normalmente
que aparecen al final del archivo), siempre que estén presentes. Se ajustan a lo largo
con los registros de datos del -compensar filtrar. Incluso intenta conservarlos en todos los archivos.
cambios de formato, hasta el límite que los formatos de archivo son capaces de hacer.

Si no hay un registro de dirección de inicio de ejecución y desea agregar uno, o desea
para anular un registro de dirección de inicio de ejecución existente, utilice el -ejecución-inicio-
de facturación=número .

Tenga en cuenta: la dirección de inicio de ejecución es un concepto diferente al de la primera dirección en
memoria de sus datos. Piense en ello como una dirección "goto" a la que el monitor saltará cuando
la carga hexagonal está completa. Si desea cambiar el lugar donde comienzan sus datos en la memoria, use el
-compensar filtrar.

Fijación Sumas de comprobación
Algunos desarrolladores de firmware integrado están cargados con herramientas ingeniosas que producen
Sumas de comprobación incorrectas, que los modelos más atentos del programador EPROM no aceptarán.

Para arreglar las sumas de verificación en un archivo, use el -ignorar-sumas de comprobación opción. Por ejemplo:

srec_cat broken.srec -ignore ‐ checksums -o fixed.srec

Las sumas de control en roto.srec se analizan (sigue siendo un error si están ausentes) pero son
Sin revisar. La resultante Fixed.srec archivo tiene sumas de comprobación correctas. los -ignorar-sumas de comprobación
La opción solo se aplica a la entrada.

Esta opción se puede utilizar en cualquier formato de archivo que tenga sumas de comprobación, incluido Intel hex.

Descubrir Misterio Formatos
Consulte las Qué Formato Is Este? sección, a continuación, para saber cómo descubrir y convertir EPROM misteriosas
cargar formatos de archivo.

BINARIO ARCHIVOS


Es posible convertir ay desde archivos binarios. Incluso puede mezclar archivos binarios y
otros formatos juntos en el mismo srec_cat(1) comando.

Escritura Binario Archivos
La forma más sencilla de leer un archivo hexadecimal y convertirlo en un archivo binario se ve así:

srec_cat fred.hex -o fred.bin -binario

Esto lee el archivo hexadecimal de Motorola fred.srec y lo escribe en el fred.bin tan crudo
binario.

Tenga en cuenta que los datos se colocan en el archivo binario en el desplazamiento de bytes especificado por el
direcciones en el archivo hexadecimal. Si hay huecos en los datos, se rellenan con cero.
Esto es, por supuesto, común con la salida del enlazador donde el código se coloca comenzando en un
lugar particular en la memoria. Por ejemplo, cuando tiene una imagen que comienza en 0x100000,
el primer 1 MB del archivo binario de salida será cero.

Puede cancelar automáticamente este desplazamiento usando un comando como

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

El comando anterior funciona compensando el fred.hex archivo más bajo en memoria por lo menos
dirección en el fred.hex datos del archivo.

Vea también el srec_binario(5) página de manual para obtener detalles adicionales.

Reading Binario Archivos
La forma más sencilla de leer un archivo binario y convertirlo se ve así

srec_cat fred.bin -binario -o fred.srec

Esto lee el archivo binario fred.bin y vuelve a escribir todos sus datos como un
Archivo Motorola S-Record.

A menudo, este binario no está exactamente donde lo desea en el espacio de direcciones, porque está
se supone que reside en la dirección cero. Si necesita moverlo, use el -compensar filtrar.

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

También debe evitar los "agujeros" de archivo que se llenan con cero. Puedes usar el -cultivo
filtro, de usted podría utilizar el -descargar filtrar si no sabe exactamente dónde están los datos.

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

El comando anterior elimina las ejecuciones de cero bytes que tienen una longitud de 512 bytes o más. Si tu
El archivo contiene 1 GB de bytes cero a la izquierda, esto va a ser lento, puede ser mejor usar
la dd(1) comando para cortar y cortar en dados primero.

UNIÓN ARCHIVOS JUNTOS CONTRA


El srec_cat comando toma su nombre de UNIX gato(1) comando, que es la abreviatura de
"Catenar" o "unirse". los srec_cat El comando une los archivos de carga de EPROM.

Ver todas In Un
Unir archivos de carga EPROM en un solo archivo es simple, simplemente nombre tantos archivos como
la línea de comando que necesite:

srec_cat archivo1 archivo2 -o archivar

Este ejemplo son todos los archivos Motorola S-Record, porque ese es el formato predeterminado. Usted puede
tener múltiples formatos en un solo comando, y srec_cat(1) seguirá funcionando. Tu ni siquiera
tiene que generar el mismo formato:

srec_cat archivo1 -espectro archivo2 -necesita \
-o archivar -signéticos

Todos estos son formatos antiguos, sin embargo, no es raro tener que mezclar y combinar Intel
y formatos de Motorola en un solo proyecto.

Filtrado: Después Integrándose
Hay ocasiones en las que desea unir dos conjuntos de datos y luego aplicar un filtro
al resultado combinado. Para hacer esto, usa paréntesis.

srec_cat \
'(' \
en archivo -excluir 0xFFF0 0x10000 \
-generate 0xFFF0 0xFFF8 -repeat ‐ string 'Bananas' \
')' \
-b-e-longitud 0xFFF8 4 \
-b ‐ e ‐ suma de comprobación ‐ neg 0xFFFC 4 4 \
-o archivar

El comando de ejemplo anterior cataloga un archivo de entrada (con el área de datos generada excluida)
con una cadena constante. Esta entrada catenada se filtra luego para agregar una longitud de 4 bytes, y
una suma de comprobación de 4 bytes.

Integrándose De extremo a extremo
Con demasiada frecuencia, los rangos de direcciones en los archivos de carga EPROM se superpondrán. Obtendrás un
error si lo hacen. Si ambos archivos comienzan desde la dirección cero, porque cada uno entra en un
EPROM por separado, es posible que deba utilizar el filtro de compensación:

srec_cat archivo1 \
archivo2 -desplazamiento 0x80000 \
-o archivar

A veces desea que los dos archivos se sigan exactamente, pero no conoce el
compensar por adelantado:

srec_cat archivo1 \
archivo2 -desplazamiento-dirección-máxima archivo1 \
-o archivar

Observe que donde antes era un número (0x80000), ahora hay un cálculo (-máximo-
addr archivo1). Esto es posible en la mayoría de los lugares donde se puede usar un número (también -minimum-addr y
-distancia).

CULTIVO Las DATOS


Es posible copiar un archivo de carga EPROM, seleccionando direcciones para mantener y direcciones para
descarte.

Qué A Guardar
Una actividad común es recortar sus datos para que coincidan con su ubicación EPROM. Su vinculador puede agregar
otra basura que no te interesa, p.ej. en la ubicación de la RAM. En este ejemplo,
hay una EPROM de 1 MB en el límite de 2 MB:

srec_cat en archivo -cultivo 0x200000 0x300000 \
-o archivar

El límite inferior para todos los rangos de direcciones es inclusivo, el límite superior es exclusivo. Si tu
restarlos, obtienes el número de bytes.

Dirección Compensación
Posiblemente, tenga un programador de EPROM idiota, y emite si la imagen de EPROM
no comienza en cero. Para saber dónde está comience en la memoria, use el
información_srec(1) comando:

$ información_srec ejemplo.srec
Formato: Motorola S ‐ Record
Encabezado: enlazador de cadena de herramientas extra-whiz
Dirección de inicio de ejecución: 0x00200000
Datos: 0x200000 - 0x32AAEF
$

En lugar de cortar el archivo de comando del vinculador, simplemente compensar las direcciones:

srec_cat en archivo -recortar 0x200000 0x300000 -desplazamiento −0x200000 \
-o archivar

Tenga en cuenta que el desplazamiento dado es negativas, tiene el efecto de restar ese valor de
todas las direcciones en los registros de entrada, para formar las direcciones de los registros de salida. En este caso,
cambiando la imagen de nuevo a cero.

Este ejemplo también demuestra cómo se pueden encadenar los filtros de entrada: primero,
recortar y luego el desplazamiento, todo en un solo comando, sin la necesidad de archivos temporales.

Si todo lo que desea hacer es compensar los datos para comenzar desde la dirección cero, esto puede ser
automatizado, por lo que no tiene que saber la dirección mínima por adelantado, utilizando srec_cat's
capacidad para calcular algunas cosas en la línea de comando:

srec_cat en archivo -desplazamiento - -minimum-addr en archivo \
-o archivar

Tenga en cuenta los espacios a ambos lados del signo menos, son obligatorios.

Qué A Lanzar Fuera
Hay ocasiones en las que necesita excluir un pequeño rango de direcciones de un archivo de carga EPROM,
en lugar de querer mantener un rango de direcciones pequeño. los -excluir El filtro se puede utilizar para
este propósito.

Por ejemplo, si desea excluir el rango de direcciones donde el número de serie de un
El dispositivo incrustado se mantiene, digamos 0x20 bytes en 0x100, usaría un comando como este:

srec_cat entrada.srec -excluir 0x100 0x120 -o salida.srec

El salida.srec archivo tendrá un agujero en los datos en las ubicaciones necesarias.

Tenga en cuenta que puede tener ambos -cultivo y -excluir en la misma línea de comando, lo que funcione
más naturalmente para su situación.

Discontinuo Dirección Ranges
Los rangos de direcciones no tienen que ser un solo rango, puede crear un rango de direcciones usando
más de un par.

srec_cat en archivo -cultivo 0x100 0x200 0x1000 0x1200 \
-o archivar

Este filtro da como resultado datos de 0x100..0x1FF y datos de 0x1000..0x1200 para pasar
a través, el resto se deja caer. Esto es más eficiente que encadenar un -cultivo y una
-excluir filtrar juntos.

EMOCIONANTE COSAS ALREDEDOR


También es posible cambiar la dirección de los registros de datos, tanto hacia adelante como hacia atrás.
También es posible reorganizar dónde se colocan los registros de datos en la memoria.

Compensación Filtrar
El -desplazamiento =número El filtro opera en las direcciones de los registros. Si el numero es positivo
las direcciones se mueven muchos bytes más arriba en la memoria, los valores negativos se mueven hacia abajo.

srec_cat en archivo -recortar 0x200000 0x300000 -desplazamiento −0x200000 \
-o archivar

El ejemplo anterior mueve el bloque de datos de 1 MB en 0x200000 a cero (el desplazamiento es
negativas) y descarta el resto de los datos.

Byte Intercambio
Hay ocasiones en las que los bytes de los datos deben intercambiarse, convirtiendo entre grandes
datos endian y little-endian generalmente.

srec_cat en archivo -byte-intercambio 4 -o archivar

Esto invierte bytes en valores de 32 bits (4 bytes). El valor predeterminado, si no proporciona un ancho,
es invertir bytes en valores de 16 bits (2 bytes). De hecho, puedes usar cualquier valor extraño que
como, ni siquiera tiene que ser una potencia de 2. Quizás 64 bits (8 bytes) pueden ser útiles
un día.

Binario Salida
Debe tener cuidado con los archivos binarios en la salida, porque los huecos están llenos de ceros.
Su programa de 100 kB en la parte superior de la memoria direccionada de 32 bits creará un archivo de 4 GB. Ver
srec_binario(5) para saber cómo entender y evitar este problema, generalmente con el -compensar filtrar.

Splitting an Imagen:
Si tiene un bus de datos de 16 bits, pero está utilizando dos EPROM de 8 bits para almacenar su firmware,
puede generar las imágenes pares e impares utilizando el -Separar filtrar. Asumiendo tu
el firmware está en el firmware.hex archivo, utilice lo siguiente:

srec_cat firmware.hex -split 2 0 -o firmware.even.hex
srec_cat firmware.hex -split 2 1 -o firmware.odd.hex

Esto dará como resultado las dos imágenes EPROM necesarias. Tenga en cuenta que las direcciones de salida son
dividido por el múltiplo dividido, por lo que si sus imágenes EPROM están en un desplazamiento particular (digamos
0x10000, en el siguiente ejemplo), debe eliminar el desplazamiento y luego reemplazarlo ...

firmware srec_cat.hex \
-desplazamiento −0x10000 -dividir 2 0 \
-desplazamiento 0x10000 -o firmware.even.hex
firmware srec_cat.hex \
-desplazamiento −0x10000 -dividir 2 1 \
-desplazamiento 0x10000 -o firmware.odd.hex

Tenga en cuenta cómo la capacidad de aplicar varios filtros simplifica lo que de otro modo sería mucho
guión más largo.

Striping
Un segundo uso para el -Separar El filtro es la creación de bandas de memoria.

No tiene que dividir en partes de ancho de bytes, puede elegir otros tamaños. Es común
desea convertir datos de 32 bits de ancho en dos conjuntos de datos de 16 bits de ancho.

srec_cat firmware.hex -split 4 0 2 -o firmware.01.hex
srec_cat firmware.hex -split 4 2 2 -o firmware.23.hex

Esto es relativamente simple de entender, pero puede usar franjas aún más anchas.

En este siguiente ejemplo, el hardware requiere que los bloques de 512 bytes se alternen entre 4
EPROM. La generación de las 4 imágenes se haría de la siguiente manera:

srec_cat firmware.hex -split 0x800 0x000 0x200 -o firmware.0.hex
srec_cat firmware.hex -split 0x800 0x200 0x200 -o firmware.1.hex
srec_cat firmware.hex -split 0x800 0x400 0x200 -o firmware.2.hex
srec_cat firmware.hex -split 0x800 0x600 0x200 -o firmware.3.hex

Asimétrico Striping
Un ejemplo más peculiar de creación de bandas es el microcontrolador Microchip dsPIC33F, que tiene un
patrón de almacenamiento de memoria extraño y pueden almacenar 3 bytes en una dirección que debería
solo contienen 2 bytes. El resultado es un archivo hexadecimal que ha llenado con ceros el byte superior (poco
endian), y todas las direcciones se duplican con respecto a lo que están en el chip. Aquí hay un
ejemplo:

S1130000000102000405060008090A000C0D0E0098
S1130010101112001415160018191A001C1D1E00C8
S1130020202122002425260028292A002C2D2E00F8
S1130030303132003435360038393A003C3D3E0028

Para deshacerse de los 00 bytes de relleno, dejando solo los 3/4 bytes significativos, también usa
el filtro dividido, con su adicional anchura argumento, como este:

srec_cat ejemplo.srec -split 4 0 3 -o no_dross.srec

Esto da como resultado un archivo con los 00 bytes de relleno eliminados. Se parece a esto:

S113000000010204050608090A0C0D0E1011121451
S1130010151618191A1C1D1E2021222425262829EC
S11300202A2C2D2E30313234353638393A3C3D3E87

Observe que las direcciones también son 3/4 del tamaño. Puede revertir esto usando el
-un dividir y -fill = 0 filtros.

Deshacer Imágenes
El filtro no dividido se puede utilizar para invertir los efectos del filtro dividido. Tenga en cuenta que el
el rango de direcciones se expande dejando huecos entre las rayas. Usando todas las rayas,
se vuelve a montar la entrada completa, sin agujeros.

srec_cat -o firmware.hex \
firmware.even.hex -unsplit 2 0 \
firmware.odd.hex -sin dividir 2 1

El ejemplo anterior invierte el ejemplo anterior de bus de datos de 16 bits. En general, deshaces
con los mismos parámetros con los que dividió.

RELLENO Las ESPACIOS EN BLANCO


A menudo, los archivos de carga EPROM tendrán "agujeros", lugares donde el compilador y el enlazador
no poner nada. Para algunos propósitos, esto está bien, y para otros propósitos, algo debe
terminar con los agujeros.

El Llene Filtrar
Es posible llenar los espacios en blanco donde sus datos no se encuentran. El ejemplo más simple de
esto llena toda la EPROM:

srec_cat en archivo -llenar 0x00 0x200000 0x300000 -o archivar

Este ejemplo llena los huecos, si los hay, con ceros. Debe especificar un rango, con un
Espacio de direcciones de 32 bits, llenar todo genera enorme cargar archivos.

Si solo desea llenar los vacíos en sus datos y no desea llenar toda la EPROM,
tratar:

srec_cat en archivo -rellenar 0x00 -sobre en archivo -o archivar

Este ejemplo demuestra el hecho de que dondequiera que se pueda especificar un rango de direcciones, el
-encima y -dentro de se pueden utilizar opciones.

Vaciar la Espacios en blanco
Es común tener que "rellenar" una imagen EPROM después de leerla en un chip. Generalmente,
habrá tenido todos los agujeros rellenados con 0xFF (las áreas de la EPROM que no programa muestran
como 0xFF cuando los lea).

Para deshacerse de todos los bytes 0xFF en los datos, use este filtro:

srec_cat en archivo -deshacer 0xFF -o archivar

Esto se deshará de que todas los bytes 0xFF, incluidos los que realmente quería allí.
Hay dos formas de lidiar con esto. Primero, puede especificar una longitud de ejecución mínima para el
vaciar:

srec_cat en archivo -deshacer 0xFF 5 -o archivar

Esto dice que las ejecuciones de 1 a 4 bytes de 0xFF están bien, y que solo se debe crear un agujero
para ejecuciones de 5 o más bytes 0xFF seguidos. El segundo método es volver a llenar el
huecos intermedios:

srec_cat archivar -llenar 0xFF -sobre archivar \
-o archivo2

El método que elija dependerá de sus necesidades y de la forma de los datos en su EPROM.
Es posible que deba combinar ambas técnicas.

Dirección Autonomía Relleno
Algunos formatos de datos tienen 16 bits de ancho y se llenan automáticamente con 0xFF bytes si es
necesario para completar la otra mitad de una palabra que no está en los datos. Si lo necesitas
llenar con un valor diferente, puede usar un comando como este:

srec_cat en archivo -llena 0x0A \
-dentro de en archivo -ajuste-de-rango 2 \
-o archivar

Esto le da al filtro de relleno un rango de direcciones calculado a partir de los detalles del archivo de entrada.
El rango de direcciones son todos los rangos de direcciones cubiertos por datos en el en archivo, extendido
hacia abajo (si es necesario) al comienzo de cada subrango a un múltiplo de 2 bytes y extendido
hacia arriba (si es necesario) al final de cada subrango hasta un múltiplo de 2 bytes. Esto también funciona
para múltiplos más grandes, como límites de página de 1kB de chips flash. Este relleno de rango de direcciones
funciona en cualquier lugar donde se requiera un rango de direcciones.

Llene con Derechos de Autor
Es posible llenar las partes no utilizadas de su EPROM con un mensaje de copyright repetido.
Cualquiera que intente aplicar ingeniería inversa a sus EPROM verá el aviso de derechos de autor en
su editor hexadecimal.

Esto se logra con dos fuentes de entrada, una de un archivo de datos y otra que es
generado sobre la marcha.

srec_cat en archivo \
-generar '(' 0 0x100000 -minus -within en archivo ')' \
-repeat-string 'Copyright (C) 1812 Tchaikovsky. '\
-o archivar

Observe el rango de direcciones para la generación de datos: toma el rango de direcciones de su
EPROM, en este caso 1 MB a partir de 0, y le resta los rangos de direcciones utilizados por
el archivo de entrada.

Si desea escribir esto con el año actual (porque 1812 está un poco desactualizado) use
la capacidad de sustitución de salida de la cáscara (tics inversos):

srec_cat en archivo \
-generar '(' 0 0x100000 -minus -within en archivo ')' \
-repeat ‐ string "Copyright (C)` fecha +% Y` Tchaikovsky. "\
-o archivar

La cadena especificada se repite una y otra vez, hasta que ha llenado todos los huecos.

Ofuscar con Ruido
A veces desea llenar sus imágenes EPROM con ruido, para ocultar dónde están los datos reales.
se detiene y comienza. Puedes hacer esto con el -llenado-aleatorio filtrar.

srec_cat en archivo -llenado aleatorio 0x200000 0x300000 \
-o archivar

Funciona igual que el -llenar filtro, pero usa números aleatorios en lugar de un byte constante
.

Llene Con 16 bits Palabras
Cuando no funciona llenar la imagen con un valor de byte constante, y necesita una constante
Valor de palabra de 16 bits en su lugar, utilice el -repetir-datos generador, que toma un tiempo arbitrariamente largo
secuencia de bytes para usar como patrón de relleno:

srec_cat en archivo \
-generador '(' 0x200000 0x300000 -minus -within en archivo ')' \
-repetir-datos 0x1B 0x08 \
-o archivar

Observe cómo el rango de direcciones del generador evita una vez más los rangos de direcciones ocupados por
la en archivodatos de. Tienes que conseguir el endian-ness tú mismo.

INSERTAR MEJORA DATOS


De vez en cuando querrá insertar datos constantes o datos no producidos por su
compilador o ensamblador, en sus imágenes de carga EPROM.

Binario Medio literal
Una forma sencilla es tener la información deseada en un archivo. Para insertar el archivo
contenidos literalmente, sin interpretación de formato, utilice el binario formato de entrada:

srec_cat en archivo -binario -o archivar

Probablemente sea necesario utilizar un el desplazamiento filtrar para mover los datos a donde usted
realmente lo quiero dentro de la imagen:

srec_cat en archivo -binario -desplazamiento 0x1234 -o archivar

También es posible utilizar la entrada estándar como fuente de datos, lo que se presta a
siendo escrito. Por ejemplo, para insertar la fecha y hora actuales en un archivo de carga EPROM,
podrías usar una pipa:

fecha | srec_cat - -bin -offset 0xFFE3 -o archivar

El nombre de archivo especial “-” significa leer desde la entrada estándar. La salida de la datos
El comando tiene siempre 29 caracteres y el desplazamiento que se muestra lo colocará en la parte superior de un
Imagen EPROM de 64 KB.

Repitiendo En el momento que todos los DARWINs coticen incluyendo los deslizamientos
El Llene con Derechos de Autor La sección anterior muestra cómo repetir una cadena una y otra vez. Nosotros
puede usar una sola repetición para insertar una cadena solo una vez.

srec_cat -generate 0xFFE3 0x10000 -repeat ‐ string "` fecha` "\
-o archivar

Observe cómo el rango de direcciones para la generación de datos coincide exactamente con la longitud del
datos(1) tamaño de salida. Por supuesto, puede agregar su archivo de entrada al anterior srec_cat(1)
comando para catenar su imagen EPROM junto con la fecha y la hora.

Inserción A Largo
Otra posibilidad es agregar el número de confirmación de Subversion a su imagen EPROM. En esto
Por ejemplo, lo estamos insertando como un valor little-endian de 4 bytes en la dirección 0x0008. los
El número de confirmación de Subversion está en el $ versión variable de shell en este ejemplo:

srec_cat -generate 0x0008 0x000C -l ‐ e ‐ constant $ versión 4 \
en archivo -excluir 0x0008 0x000C \
-o archivar

Tenga en cuenta que usamos un filtro para asegurarnos de que haya un agujero en la entrada donde el número de versión
va, en caso de que el enlazador ponga algo allí.

DATOS SOBRE NOSOTROS Las DATOS


Es posible agregar una variedad de datos sobre los datos a la salida.

Sumas de comprobación
El -big-endian-suma de comprobación negativa El filtro se puede usar para sumar los datos y luego insertar el
negativo de la suma en los datos. Esto tiene el efecto de sumar a cero cuando el
La suma de comprobación en sí se suma, siempre que el ancho de la suma coincida con el ancho del valor insertado.

srec_cat en archivo \
-recortar 0 0xFFFFFC \
-llenado aleatorio 0 0xFFFFFC \
-b ‐ e ‐ suma de comprobación ‐ neg 0xFFFFFC 4 4 \
-o archivar

En este ejemplo, tenemos una EPROM en el megabyte más bajo de memoria. El filtro de cultivo
asegura que solo estamos sumando los datos dentro de la EPROM, y no en ningún otro lugar. los
-el filtro de relleno aleatorio llena los huecos que quedan en los datos con valores aleatorios. Finalmente, la -b‐
El filtro e-checksum-neg inserta una suma de comprobación de 32 bits (4 bytes) en formato big-endian en la última
4 bytes de la imagen EPROM. Naturalmente, hay una pequeña versión endian de este filtro como
bien.

Su código incrustado puede verificar la EPROM usando un código C similar al siguiente:

unsigned long * begin = (unsigned long *) 0;
unsigned long * end = (unsigned long *) 0x100000;
suma larga sin signo = 0;
mientras (comienzo <fin)
suma + = * comenzar ++;
si (suma! = 0)
{
Vaya
}

El -big-endian-checksum-bitnot El filtro es similar, excepto que la suma de la suma de comprobación
debe producir un valor de todos-uno-bits (-1). Por ejemplo, usando pantalones cortos en lugar de largos:

srec_cat en archivo \
-cultivo 0 0xFFFFFE \
-llene 0xCC 0x00000 0xFFFFFE \
-b-e-checksum-neg 0xFFFFFE 2 2 \
-o archivar

Suponiendo que eligió el filtro de endianidad correcto, su código incrustado puede verificar la EPROM
usando código C similar al siguiente:

unsigned short * begin = (unsigned short *) 0;
unsigned short * end = (unsigned short *) 0x100000;
suma corta sin signo = 0;
mientras (comienzo <fin)
suma + = * comenzar ++;
si (suma! = 0xFFFF)
{
Vaya
}

También hay una -b-e-suma de comprobación positiva filtro, y un filtro little-endian correspondiente, que
inserta la suma simple, y que se verificaría en C usando una prueba de igualdad.

srec_cat en archivo \
-recortar 0 0xFFFFFF \
-completar 0x00 0x00000 0xFFFFFF \
-b-e-suma de comprobación-neg 0xFFFFFF 1 1 \
-o archivar

Suponiendo que eligió el filtro de endianidad correcto, su código incrustado puede verificar la EPROM
usando código C similar al siguiente:

carácter sin firmar * comenzar = (carácter sin firmar *) 0;
carácter sin firmar * end = (carácter sin firmar *) 0xFFFFF;
suma de caracteres sin signo = 0;
mientras (comienzo <fin)
suma + = * comenzar ++;
si (suma! = * fin)
{
Vaya
}

En el caso de 8 bits, no importa si usa big-endian o little-endian
filtrar.

Búsqueda Volcado hexagonal
Puede ver la suma de comprobación de sus datos utilizando el formato de salida "hexadecimal-volcado". Este es
útil para mirar valores calculados, o para depurar un srec_cat(1) comando antes
inmortalizándolo en un guión.

srec_cat en archivo \
-cultivo 0 0x10000 \
-completar 0xFF 0x0000 0x10000 \
-b ‐ e ‐ checksum ‐ neg 0x10000 4 \
-cultivo 0x10000 0x10004 \
-o - -hex-dump

Este comando lee en el archivo, hace una suma de verificación de los datos y coloca la suma de verificación en 0x10000,
recorta el resultado para que contenga solo la suma de comprobación y luego imprime la suma de comprobación en el
salida estándar en un formato de volcado hexadecimal clásico. El nombre de archivo especial "-" significa
"La salida estándar" en este contexto.

Cíclico Redundancia Cheques
Las sumas de comprobación aditivas simples tienen una serie de limitaciones teóricas, relacionadas con los errores
pueden y no pueden detectar. Los métodos CRC tienen menos problemas.

srec_cat en archivo \
-recortar 0 0xFFFFFC \
-llene 0x00 0x00000 0xFFFFFC \
-b ‐ e ‐ crc32 0xFFFFFC \
-o archivar

En el ejemplo anterior, tenemos una EPROM en el megabyte más bajo de memoria. los -cultivo filtrar
asegura que solo estamos sumando los datos dentro de la EPROM, y no en ningún otro lugar. los -llenar
El filtro llena los huecos que quedan en los datos. Finalmente, el -b-e-checksum-neg el filtro inserta un
Suma de comprobación de 32 bits (4 bytes) en formato big-endian en los últimos 4 bytes de la imagen EPROM.
Naturalmente, también hay una pequeña versión endian de este filtro.

La suma de comprobación se calcula utilizando el CRC estándar de la industria de 32 bits. Porque SRecord es
fuente abierta, siempre puede leer el código fuente para ver cómo funciona. Hay muchos que no
Versiones GPL de este código disponibles en Internet y adecuadas para incrustar en
firmware propietario.

También hay disponible un CRC de 16 bits.

srec_cat en archivo \
-cultivo 0 0xFFFFFE \
-completar 0x00 0x00000 0xFFFFFE \
-b ‐ e ‐ crc16 0xFFFFFE \
-o archivar

La suma de comprobación se calcula mediante la fórmula CCITT. Como SRecord es de código abierto,
Siempre puede leer el código fuente para ver cómo funciona. Hay muchas versiones no GPL de
este código está disponible en Internet y es adecuado para incrustarlo en firmware propietario.

Puede ver el CRC de sus datos utilizando el formato de salida "hexadecimal-volcado".

srec_cat en archivo \
-cultivo 0 0x10000 \
-completar 0xFF 0x0000 0x10000 \
-b ‐ e ‐ crc16 0x10000 \
-cultivo 0x10000 0x10002 \
-o - -hex-dump

Este comando lee en el archivo, calcula el CRC de los datos y coloca el CRC en
0x10000, recorta el resultado para que contenga solo el CRC y luego imprime la suma de comprobación en el
salida estándar en un formato de volcado hexadecimal clásico.

¿Dónde? Is My ¿Datos?
Hay varias propiedades de su imagen EPROM que tal vez desee insertar en la
datos.

srec_cat en archivo -b ‐ e ‐ mínimo 0xFFFE 2 -o archivar

El ejemplo anterior inserta la dirección mínima de los datos (low Agua) en los datos, como
dos bytes en orden big-endian en la dirección 0xFFFE. Esto incluye el mínimo en sí. Si
los datos ya contienen bytes en la dirección dada, debe usar un filtro de exclusión.
El número de bytes predeterminado es 4.

También hay una -l-e-mínimo filtro para insertar valores little-endian, y dos más
filtros llamados -b-e-exclusivo-mínimo y -l-e-exclusivo-mínimo que no incluyen el
mínimo en sí mismo en el cálculo de la dirección de datos mínima.

srec_cat en archivo -b-e-máximo 0xFFFFFC 4 -o archivar

El ejemplo anterior inserta la dirección máxima de los datos (high Agua + 1, al igual que
rangos de direcciones) en los datos, como cuatro bytes en orden big-endian en la dirección 0xFFFFFC.
Esto incluye el máximo en sí. Si los datos ya contienen bytes en el
dirección, debe utilizar una -excluir filtrar. El número de bytes predeterminado es 4.

También hay una -l-e-máximo filtro para insertar valores little-endian, y dos más
filtros llamados -b-e-exclusivo-máximo y -l-e-exclusivo-máximo que no incluyen el
máximo en sí mismo en el cálculo de la dirección de datos máxima.

srec_cat en archivo -b-e-longitud 0xFFFFFC 4 -o archivar

El ejemplo anterior inserta la longitud de los datos (high Agua + 1 - low Agua) en el
datos, como cuatro bytes en orden big-endian en la dirección 0xFFFFFC. Esto incluye la longitud
sí mismo. Si los datos ya contienen bytes en la ubicación de la longitud, debe utilizar un
-excluir filtrar. El número de bytes predeterminado es 4.

También hay una -l-e-longitud filtro para insertar una longitud little-endian, y el -ser-
longitud exclusiva y -l-e-exclusivo-largo filtros que no incluyen la longitud en sí
en el cálculo.

Qué Formato Is Este?
Puede obtener una variedad de información sobre un archivo de carga EPROM utilizando el información_srec(1)
mando. Por ejemplo:

$ información_srec ejemplo.srec
Formato: Motorola S ‐ Record
Encabezado: "http://srecord.sourceforge.net/"
Dirección de inicio de ejecución: 00000000
Datos: 0000 - 0122
0456-0FFF
$

Este ejemplo muestra que el archivo es un Motorola S ‐ Record. El texto del encabezado del archivo es
impreso, junto con la dirección de inicio de ejecución. La última sección muestra la dirección
rangos que contienen datos (el límite superior de cada subrango es inclusive, en lugar de la
exforma agrupada utilizada en la línea de comando.

$ información_srec algún-archivo-extraño.hex -adivinar
Formato: Signetics
Datos: 0000 - 0122
0456-0FFF
$

El ejemplo anterior adivina el formato de archivo de carga EPROM. No es infalible pero suele
lo hace bien. Puedes usar -adivinar en cualquier lugar al que le des un formato explícito, pero
tiende a ser más lento y por eso no se recomienda. Además, para compilación automatizada
sistemas, desea errores graves lo antes posible; si un archivo no está en el esperado
formato, quieres que vomite.

DESTRUYENDO Las DATOS


Es posible cambiar los valores de los bytes de datos de varias formas.

srec_cat en archivo -y 0xF0 -o archivar

El ejemplo anterior realiza una operación AND bit a bit de los bytes de datos con la máscara 0xF0. los
las direcciones de los registros no se modifican. En realidad, no puedo pensar en un uso para este filtro.

srec_cat en archivo -o 0x0F -o archivar

El ejemplo anterior realiza un OR bit a bit de los bytes de datos con los bits 0x0F. los
las direcciones de los registros no se modifican. En realidad, no puedo pensar en un uso para este filtro.

srec_cat en archivo -x o 0xA5 -o archivar

El ejemplo anterior realiza un OR exclusivo bit a bit de los bytes de datos con los bits 0xA5.
Las direcciones de los registros no se modifican. Podrías usar esto para ofuscar el contenido de
su EPROM.

srec_cat en archivo -no -o archivar

El ejemplo anterior realiza un NO bit a bit de los bytes de datos. Las direcciones de los registros son
sin alterar. ¿Seguridad por oscuridad?

DERECHOS DE AUTOR


srec_cat Versión 1.58
Derechos de autor (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011Peter Miller

El srec_cat el programa viene SIN GARANTÍA ABSOLUTAMENTE; para obtener más detalles, utilice el 'srec_cat
-Versión Licencia'comando. Este es un software gratuito y puede redistribuirlo.
bajo ciertas condiciones; para obtener más detalles, utilice el 'srec_cat -Versión Licencia'comando.

Utilice srec_examples en línea utilizando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad




×
Anuncio
❤ ️Compre, reserve o adquiera aquí: sin costo, ayuda a mantener los servicios gratuitos.