Wednesday 11 October 2017

0x5fff In Binary Option


Cpchunk 1.0.0.4 Una herramienta para copiar trozos de archivos Qué es cpchunk (copiar fragmento) copia datos binarios de un archivo e inserta en (o reemplaza) otro archivo. Específicamente, copia len bytes de offset1 en el archivo A en offset2 en el archivo B. También puede añadir al archivo B o reemplazar el archivo B en su lugar. Por lo tanto, cpchunk puede ser pensado como una herramienta de copia para partes de archivos en lugar de archivos enteros. ADVERTENCIA: cpchunk generalmente asume que usted sabe lo que está haciendo. Puede ser bastante fácil de sobrescribir más datos de lo que pretendía, o truncar un archivo que desea actualizar. No podemos asumir ninguna responsabilidad por cualquier cosa que suceda durante el uso del programa, ya sea que funcione correctamente o no. Como con cualquier herramienta, copia de seguridad de sus datos si no desea perderlo Lo que es bueno para cpchunk se escribió como una herramienta de hacking ROM, pero no tiene ningún comportamiento específico para tratar con ROMs. Cuando quiera copiar (parte de) un archivo en (parte de) otro archivo, cpchunk es su herramienta. Aquí hay un ejemplo del mundo real. El juego de arcade Donkey Kong almacena su código de programa principal de 0x0000 a 0x3fff en el espacio de memoria. Sin embargo, este código debe dividirse en cuatro archivos ROM diferentes: 0x0000-0fff se almacena en c5etg. bin 0x1000-1fff se almacena en c5ctg. bin 0x2000-2fff se almacena en c5btg. bin 0x3000-3fff se almacena en c5atg. bin Desde Estos bloques son contiguos, un programador que hace una ROM para este hardware probablemente preferiría crear una sola ROM de 16 KB llamada, digamos, dkong. bin, y luego dividir la ROM en cuatro después. Para realizar esta división, el programador ejecuta los siguientes comandos: La opción - s define el desplazamiento de la fuente a copiar, y la opción - l define la longitud del fragmento a copiar. Así que las líneas se pueden leer como extraer 0x1000 bytes de dkong. bin que comienzan en 0x0000 y ponerlos en c5etg. bin, y así sucesivamente. Supongamos que el programador estaba haciendo una ROM para el hardware de Donkey Kong Junior. El mapa de ROM para este hardware es bastante extraño: djr1-c5bf-2.5b contiene 0x0000-0fff, a continuación, 0x3000-3fff djr1-c5cf-2.5c contiene 0x2000-27ff, a continuación, 0x4800-0x4fff, a continuación, 0x1000-0x17ff, a continuación, 0x5800-0x5fff Djr1-c5ef-2.5e contiene 0x4000-47ff, a continuación, 0x2800-0x2fff, a continuación, 0x5000-0x57ff, a continuación, 0x1800-0x1fff Bizarro, no lo es Pero no es ningún problema para cpchunk. Aquí están los comandos: Aquí la opción - a se utiliza para anexar al archivo de destino. Tenga en cuenta que la opción - a no tiene que colocarse antes del nombre de archivo de destino, pero su función parece más clara. Cómo instalar El método preferido si tiene un Python 3.4 o posterior es escribir pip instalar cpchunk en la línea de comandos. Cómo usar la escritura cpchunk - h debe ser suficiente para captar los parámetros. Aquí hay unos ejemplos. Rasgando un archivo de 0x1000 a 0x1fff inclusive: En este caso, dado que no se especifica ningún desplazamiento de destino, cpchunk reemplazará en lugar de modificar ripped. bin. Extraer un archivo de 0x1000 a 0x1fff inclusive e insertarlo en otro archivo en 0x800: En este caso, si dest. bin no existe, el programa generará un error. Toque el archivo (o cree por algún otro medio) si realmente desea insertar en un archivo vacío. Rasgando un archivo de 0x1000 a 0x1fff incluido y añadiéndolo al final de otro archivo: GDM y Gnome no funcionan, mostrando sólo el cursor y el fondo de pantalla Hola a todos, I039ve acaba de comenzar con ArchLinux. Después de una instalación limpia GDM y Gnome don039t trabajo. I039ll explicar mi error: - gdm se congela justo cuando lo inicie y mostrar sólo el cursor del ratón. Puedo moverlo. - gnome muestra sólo el fondo de pantalla y de nuevo puedo mover el cursor, pero no pasa nada. He intentado iniciarlo con startx, con kdm y con slim. Ninguno de ellos funciona. El. xinitrc que he estado usando consiste en una sola línea: he probado los tres comandos. He intentado cargar slim y kdm desde inittab y desde rc. conf, así como escribir directamente el comando en el tty. Openbox y KDE funcionan bien. He intentado encontrar algo en los errores. xsession, pero no existe. Lo mejor que puedo conseguir es slim. log en / var / log / y el gdm registra en / var / log / gdm / He intentado cambiar los controladores gráficos de nvidia a nouveau. Incluso he reinstalado Arch desde cero, pero no hizo nada para detener este error. Dbus se ejecuta desde rc. conf y se muestra en el ps como en ejecución, pero los registros de gdm muestran que de alguna manera no están comunicando (o al menos eso creo). En los registros puedo ver un error diciendo que. Xauthority no existe, pero lo más extraño es que existe. He estado tres días luchando con esto, buscando en estos foros, pero no puedo resolverlo. Cualquier ayuda será muy apreciada, gracias. Descripción: El ensamblador y enlazador MSP430 crea archivos de objetos que están en formatos binarios que fomentan la programación modular y proporcionan métodos poderosos y flexibles para administrar segmentos de código y memoria del sistema de destino. La mayoría de los programadores EPROM no aceptan archivos de objetos como entrada. La utilidad de conversión hexadecimal convierte un archivo de objeto en uno de varios formatos hexadecimales ASCII estándar, adecuado para cargar en un programador EPROM. La utilidad también es útil en otras aplicaciones que requieren la conversión hexadecimal de un archivo de objeto (por ejemplo, cuando se utilizan depuradores y cargadores). La utilidad de conversión hexadecimal puede producir estos formatos de archivo de salida: ASCII-Hex, soportando direcciones de 16 bits Extensión Tektronix (Tektronix) Intel MCS-86 (Intel) Motorola Exorciser (Motorola-S), soportando direcciones de 16 bits Texas Instruments SDSMAC (TI 12.1 La función de utilidades de conversión hexadecimal en el flujo de desarrollo de software La figura 12-1 resalta el papel de la utilidad de conversión hexadecimal en el proceso de desarrollo de software. Figura 12-1 Utilidad de conversión hexadecimal en el flujo de desarrollo de software MSP430 12.2 Invocación de la utilidad de conversión hexadecimal Existen dos métodos básicos para invocar la utilidad de conversión hexadecimal: Especifique las opciones y los nombres de archivo en la línea de comandos. El ejemplo siguiente convierte el archivo firmware. out en formato TI-Tagged, produciendo dos archivos de salida, firm. lsb y firm. msb. Hex430 - t firmware - o firm. lsb - o firm. msb Especifique las opciones y los nombres de archivo en un archivo de comandos. Puede crear un archivo que almacene opciones de línea de comandos y nombres de archivo para invocar la utilidad de conversión hexadecimal. El ejemplo siguiente invoca la utilidad utilizando un archivo de comandos denominado hexutil. cmd: hex430 hexutil. cmd Además de la información de línea de comandos normal, puede utilizar las directivas ROMS y SECTIONS de la utilidad de conversión hexadecimal en un archivo de comandos. 12.2.1 Invocación de la utilidad de conversión hexadecimal Desde la línea de comandos Para invocar la utilidad de conversión hexadecimal, escriba: 12.2.2 Invocación de la utilidad de conversión hexadecimal con un archivo de comandos Un archivo de comandos es útil si planea invocar la utilidad más de una vez con la Archivos de entrada y opciones. También es útil si desea utilizar las directivas de utilidad de conversión hexadecimal ROMS y SECTIONS para personalizar el proceso de conversión. Los archivos de comandos son archivos ASCII que contienen uno o más de los siguientes: Opciones y nombres de archivo. Estos se especifican en un archivo de comandos exactamente de la misma manera que en la línea de comandos. ROMS. La directiva ROMS define la configuración de memoria física de su sistema como una lista de parámetros de rango de direcciones. (Véase la Sección 12.4.) SECCIONES. La directiva SECTIONS especifica qué secciones del archivo de objeto se seleccionan. (Ver Sección 12.5.) Comentarios. Puede agregar comentarios a su archivo de comandos utilizando los / y / delimitadores. Por ejemplo: / Este es un comentario. / Para invocar la utilidad y utilizar las opciones que definió en un archivo de comandos, escriba: También puede especificar otras opciones y archivos en la línea de comandos. Por ejemplo, puede invocar la utilidad utilizando un archivo de comandos y las opciones de la línea de comandos: hex430 firmware. cmd --mapfirmware. mxp El orden en el que aparecen estas opciones y nombres de archivo no es importante. La utilidad lee todas las entradas de la línea de comandos y toda la información del archivo de comandos antes de iniciar el proceso de conversión. Sin embargo, si está utilizando la opción - q, debe aparecer como la primera opción en la línea de comandos o en un archivo de comandos. La opción --help muestra la sintaxis para invocar al compilador y lista las opciones disponibles. Si la opción --help es seguida por otra opción o frase, se muestra información detallada sobre la opción o frase. Por ejemplo, para ver información sobre las opciones asociadas con la generación de una tabla de arranque, utilice --help boot. La opción --quiet suprime el banner normal de los utilitarios de conversión hexadecimal y la información de progreso. Suponga que un archivo de comandos denominado firmware. cmd contiene estas líneas: firmware. out / input file / - ti-tagged / TI-Tagged / - outfilefirm. lsb / output file / - outfilefirm. msb / output file / Invoque la utilidad de conversión hexadecimal introduciendo: hex430 firmware. cmd Este ejemplo muestra cómo convertir un archivo denominado appl. out en ocho archivos hexadecimales en formato Intel. Cada archivo de salida tiene un byte de ancho y 4K bytes de largo. Archivo appl. out / input / --intel / formato Intel / --mapappl. mxp / archivo de mapa / ROMS ROW2: origin0x00004000 len0x4000 archivos romwidth8 SECCIONES 12.3 Descripción de los anchos de memoria La utilidad de conversión hexadecimal hace que su arquitectura de memoria sea más flexible permitiéndole especificar Memoria y anchos de ROM. Para usar la utilidad de conversión hexadecimal, debe entender cómo la utilidad trata los anchos de palabra. Tres anchos son importantes en el proceso de conversión: Los términos palabra de destino, palabra de memoria y palabra ROM se refieren a una palabra de tal anchura. La figura 12-2 ilustra las fases separadas y distintas del flujo de proceso de las utilidades de conversión hexadecimal. Figura 12-2 Utilidad de conversión hexadecimal Flujo de proceso 12.3.1 Ancho objetivo El ancho objetivo es el tamaño de unidad (en bits) de la palabra procesadores objetivo. El ancho se fija para cada objetivo y no se puede cambiar. Los objetivos MSP430 tienen un ancho de 16 bits. 12.3.2 Especificación del ancho de memoria El ancho de memoria es el ancho físico (en bits) del sistema de memoria. Normalmente, el sistema de memoria tiene físicamente el mismo ancho que el ancho del procesador de destino: un procesador de 16 bits tiene una arquitectura de memoria de 16 bits. Sin embargo, algunas aplicaciones requieren que las palabras de destino se rompan en palabras de memoria múltiples, consecutivas y más estrechas. De forma predeterminada, la utilidad de conversión hexadecimal define el ancho de la memoria en el ancho de destino (en este caso, 16 bits). Puede cambiar el ancho de la memoria (excepto el formato TI-TXT) mediante: Usando la opción --memwidth. Esto cambia el valor de ancho de memoria para todo el archivo. Establecimiento del parámetro memwidth de la directiva ROMS. Esto cambia el valor de ancho de memoria para el intervalo de direcciones especificado en la directiva ROMS y anula la opción --memwidth para ese rango. Consulte la Sección 12.4. Para ambos métodos, utilice un valor que sea una potencia de 2 mayor o igual a 8. Debería cambiar el valor predeterminado de ancho de memoria de 16 sólo cuando necesite romper palabras de destino únicas en palabras de memoria consecutivas y más estrechas. El formato TI-TXT tiene 8 bits de ancho No puede cambiar el ancho de memoria del formato TI-TXT. El formato hexadecimal TI-TXT admite un ancho de memoria de sólo 8 bits. La Figura 12-3 muestra cómo el ancho de memoria está relacionado con los datos del archivo de objeto. Figura 12-3 Datos de archivo de objeto y anchos de memoria 12.3.3 Partición de datos en archivos de salida El ancho de ROM determina cómo la utilidad de conversión hexadecimal divide los datos en archivos de salida. El ancho de ROM especifica el ancho físico (en bits) de cada dispositivo ROM y el archivo de salida correspondiente (normalmente un byte u ocho bits). Después de que los datos de archivo de objeto se asignan a las palabras de memoria, las palabras de memoria se dividen en uno o más archivos de salida. El número de archivos de salida se determina mediante las siguientes fórmulas: Si ancho de memoria ancho de la ROM: número de archivos ancho de la memoria Ancho de la ROM Si ancho de la memoria lt ancho de la ROM: número de archivos 1 Por ejemplo, para un ancho de memoria de 16. podría especificar un ROM valor de ancho de 16 y obtener un único archivo de salida que contiene palabras de 16 bits. O puede utilizar un valor de ancho de ROM de 8 para obtener dos archivos, cada uno con 8 bits de cada palabra. El ancho de ROM predeterminado que utiliza la utilidad de conversión hexadecimal depende del formato de salida: Todos los formatos hexadecimales, excepto TI-Tagged, se configuran como listas de bytes de 8 bits; la anchura de ROM predeterminada para estos formatos es de 8 bits. TI-Tagged es un formato de 16 bits, la anchura de ROM predeterminada para TI-Tagged es de 16 bits. El formato con etiquetas de TI tiene 16 bits de ancho No puede cambiar el ancho de la ROM del formato con etiqueta de TI. El formato TI-Tagged sólo admite un ancho de ROM de 16 bits. El formato TI-TXT tiene 8 bits de ancho No puede cambiar el ancho de la ROM del formato TI-TXT. El formato hexadecimal TI-TXT admite sólo un ancho de ROM de 8 bits. Puede cambiar el ancho de ROM (excepto los formatos TI-Tagged y TI-TXT) mediante: Usando la opción --romwidth. Esta opción cambia el valor de ancho de la ROM para todo el archivo de objeto. Establecer el parámetro romwidth de la directiva ROMS. Este parámetro cambia el valor de ancho de ROM para un rango de dirección de ROM específico y anula la opción --romwidth para ese rango. Consulte la Sección 12.4. Para ambos métodos, utilice un valor que sea una potencia de 2 mayor o igual a 8. Si selecciona un ancho de ROM que es más ancho que el tamaño natural del formato de salida, la utilidad simplemente escribe campos de varios bytes en el archivo. La opción --romwidth se ignora para los formatos TI-TXT y TI-Tagged. La Figura 12-4 ilustra cómo los datos de archivo de objeto, la memoria y los anchos de ROM están relacionados entre sí. Figura 12-4 Anchos de datos, memoria y ROM 12.3.4 Especificación de la orden de palabras para las palabras de salida Existen dos formas de dividir una palabra ancha en ubicaciones de memoria consecutivas en el mismo archivo de salida de la utilidad de conversión hexadecimal: --orderMS especifica el ordenamiento big-endian , En el que la parte más significativa de la palabra ancha ocupa la primera de las ubicaciones consecutivas. --orderLS especifica el orden de little-endian, en el que la parte menos significativa de la palabra ancha ocupa la primera de las ubicaciones consecutivas. De forma predeterminada, la utilidad utiliza formato big-endian. A menos que su programa de cargador de arranque piense en formato little-endian, evite usar --orderLS. 12.4 La directiva ROMS La directiva ROMS especifica la configuración de memoria física de su sistema como una lista de parámetros de rango de direcciones. Cada intervalo de direcciones produce un conjunto de archivos que contiene los datos de salida de la utilidad de conversión hexadecimal que corresponde a ese intervalo de direcciones. Cada archivo se puede utilizar para programar un solo dispositivo ROM. La directiva ROMS es similar a la directiva MEMORY del vinculador MSP430: ambos definen el mapa de memoria del espacio de direcciones de destino. Cada entrada de línea en la directiva ROMS define un rango de direcciones específico. La sintaxis general es: especifica la longitud de un rango de memoria como la longitud física del dispositivo ROM. Se puede introducir como longitud, len o l. El valor debe ser una constante decimal, octal o hexadecimal. Si omite el valor de longitud, por defecto es la longitud de todo el espacio de direcciones. Especifica la anchura ROM física del rango en bits (consulte la Sección 12.3.3). Cualquier valor que especifique aquí reemplaza la opción --romwidth. El valor debe ser una constante decimal, octal o hexadecimal que sea una potencia de 2 mayor o igual a 8. especifica el ancho de memoria del rango en bits (consulte la Sección 12.3.2). Cualquier valor que especifique aquí reemplaza la opción --memwidth. El valor debe ser una constante decimal, octal o hexadecimal que sea una potencia de 2 mayor o igual a 8. Cuando se utiliza el parámetro memwidth, también debe especificar el parámetro paddr para cada sección de la directiva SECTIONS. (Véase la Sección 12.5.) Especifica un valor de relleno para utilizar en el rango. En modo de imagen, la utilidad de conversión hexadecimal utiliza este valor para rellenar cualquier agujero entre secciones de un rango. Un agujero es un área entre las secciones de entrada que comprende una sección de salida que no contiene ningún código o datos reales. El valor de relleno debe ser una constante decimal, octal o hexadecimal con un ancho igual al ancho de destino. Cualquier valor que especifique aquí reemplaza la opción --fill. Cuando utilice fill, también debe usar la opción --image línea de comandos. (Véase la Sección 12.9.2.) Identifica los nombres de los archivos de salida que corresponden a este rango. Incluya la lista de nombres entre llaves y ordénelas del menos significativo al archivo de salida más significativo, donde los bits de la palabra de memoria se numeran de derecha a izquierda. El número de nombres de archivo debe ser igual al número de archivos de salida generados por el intervalo. Para calcular el número de archivos de salida, consulte la Sección 12.3.3. La utilidad le advierte si se enumeran demasiados o pocos nombres de archivo. A menos que esté usando la opción --image, todos los parámetros que definen un rango son opcionales, las comas y los signos iguales son también opcionales. Un rango sin origen o longitud define el espacio de direcciones completo. En el modo de imagen, se requiere un origen y una longitud para todos los rangos. Los rangos no deben superponerse y deben estar listados en orden de dirección ascendente. 12.4.1 Cuándo utilizar la directiva ROMS Si no utiliza una directiva ROMS, la utilidad define un rango único predeterminado que incluye todo el espacio de direcciones. Esto es equivalente a una directiva ROMS con un solo rango sin origen o longitud. Utilice la directiva ROMS cuando desee: Programar grandes cantidades de datos en ROM de tamaño fijo. Cuando especifica rangos de memoria correspondientes a la longitud de sus ROM, la utilidad rompe automáticamente la salida en bloques que se ajustan a las ROM. Restringir la salida a ciertos segmentos. También puede utilizar la directiva ROMS para restringir la conversión a un determinado segmento o segmentos del espacio de direcciones de destino. La utilidad no convierte los datos que caen fuera de los rangos definidos por la directiva ROMS. Las secciones pueden abarcar límites de rango, la utilidad los divide en el límite en rangos múltiples. Si una sección cae completamente fuera de cualquiera de los rangos que usted defina, la utilidad no convierte esa sección y no emite mensajes ni advertencias. Por lo tanto, puede excluir secciones sin enumerarlas por su nombre con la directiva SECTIONS. Sin embargo, si una sección cae parcialmente en un rango y parcialmente en memoria no configurada, la utilidad emite una advertencia y convierte sólo la parte dentro del rango. Utilice el modo de imagen. Cuando utiliza la opción --image, debe utilizar una directiva ROMS. Cada rango se rellena completamente para que cada archivo de salida en un rango contenga datos para todo el rango. Los agujeros antes, entre o después de las secciones se rellenan con el valor de relleno de la directiva ROMS, con el valor especificado con la opción --fill o con el valor por defecto de 0. 12.4.2 Ejemplo de la directiva ROMS La directiva ROMS En el Ejemplo 12-1 muestra cómo 16K bytes de memoria de 16 bits podrían ser particionados para dos EPROM de 8 bits de 8K bytes. La Figura 12-5 ilustra los archivos de entrada y salida. Ejemplo 12-1 Un ejemplo de directiva ROMS Figura 12-5 El archivo infile. out particionado en cuatro archivos de salida El archivo de mapa (especificado con la opción --map) es ventajoso cuando se utiliza la directiva ROMS con rangos múltiples. El archivo de mapa muestra cada intervalo, sus parámetros, nombres de archivos de salida asociados y una lista de contenidos (nombres de sección y valores de relleno) desglosados ​​por dirección. El Ejemplo 12-2 es un segmento del archivo de mapa resultante del ejemplo del Ejemplo 12-1. Ejemplo 12-2 Salida del archivo de mapa del ejemplo 12-1 Mostrar rangos de memoria ----------------------------------- ------------------ 4000..5fff Page0 Ancho8 EPROM1 ------------------------- ---------------------------- ARCHIVOS DE SALIDA: rom4000.b0 b0..b7 rom4000.b1 b8..b15 CONTENIDO: 4000 .. 487f. text 4880..5b7f FILL 0000 5b80..5fff. data ----------------------------------- ------------------ 6000..7fff Page0 Ancho8 EPROM2 ------------------------- ---------------------------- ARCHIVOS DE SALIDA: rom6000.b0 b0..b7 rom6000.b1 b8..b15 CONTENIDO: 6000 .. 633f. data 6340..66ff FILL ff00 6700..7c7f. table 7c80..7fff FILL ff00 EPROM1 define el rango de direcciones de 0x4000 a 0x5FFF con las siguientes secciones: El resto del rango se rellena con 0xFF00 (a partir del valor de relleno especificado ). Los datos de este rango se convierten en dos archivos de salida: rom6000.b0 contiene bits 0 a 7 rom6000.b1 contiene bits 8 a 15 12.5 La directiva SECTIONS Puede convertir secciones específicas del archivo de objeto por nombre con la directiva SECTIONS de conversión hexadecimal SECTIONS . También puede especificar las secciones que desea localizar en ROM en una dirección diferente a la dirección de carga especificada en el archivo de comandos de vinculador. Si: Utiliza una directiva SECTIONS, la utilidad convierte sólo las secciones que se enumeran en la directiva e ignora todas las demás secciones del archivo de objeto. No use una directiva SECTIONS, la utilidad convierte todas las secciones inicializadas que caen dentro de la memoria configurada. Las secciones no inicializadas nunca se convierten, independientemente de si las especifica en una directiva SECTIONS. Secciones generadas por el compilador C / C El compilador MSP430 C / C genera automáticamente estas secciones: Secciones inicializadas:.text. Const. Y. cinit Secciones no inicializadas:.bss. Stack y. sysmem Utilice la directiva SECTIONS en un archivo de comandos. (Véase la Sección 12.2.2.) La sintaxis general es: El número de rango en la directiva ROMS. Los rangos se numeran empezando por 0. Si no hay ninguna directiva ROMS, o sólo un rango, la utilidad omite este carácter. El número de archivo en el conjunto de archivos para el intervalo, empezando por 0 para el archivo menos significativo. Por ejemplo, asuma que a. out es para un procesador de destino de 16 bits y está creando salida de formato Intel. Con ningún nombre de archivo de salida especificado, la utilidad produce dos archivos de salida denominados a. i0, a. i1, a. i2, a. i3. Si incluye la siguiente directiva ROMS cuando invoca la utilidad de conversión hexadecimal, tendría cuatro archivos de salida: Estos archivos de salida. Contiene datos en estas ubicaciones. 0x1000 a 0x1FFF 0x2000 a 0x2FFF 12.9 Modo de imagen y la opción --fill Esta sección señala las ventajas de operar en modo de imagen y describe cómo producir archivos de salida con una imagen precisa y continua de un rango de memoria de destino. 12.9.1 Generación de una imagen de memoria Con la opción --image, la utilidad genera una imagen de memoria llenando completamente todos los rangos mapeados especificados en la directiva ROMS. Un archivo objeto consta de bloques de memoria (secciones) con ubicaciones de memoria asignadas. Típicamente, todas las secciones no están adyacentes: hay agujeros entre secciones en el espacio de direcciones para el que no hay datos. Cuando se convierte un archivo de este tipo sin el uso del modo de imagen, la utilidad de conversión hexadecimal puentea estos orificios utilizando los registros de direcciones en el archivo de salida para saltar al principio de la siguiente sección. En otras palabras, puede haber discontinuidades en las direcciones de archivo de salida. Algunos programadores EPROM no admiten discontinuidades de dirección. En el modo de imagen, no hay discontinuidades. Cada archivo de salida contiene un flujo continuo de datos que corresponde exactamente a un rango de direcciones en la memoria de destino. Los orificios antes, entre o después de las secciones se rellenan con un valor de relleno que se suministra. Un archivo de salida convertido utilizando el modo de imagen todavía tiene registros de direcciones, ya que muchos de los formatos hexadecimales requieren una dirección en cada línea. Sin embargo, en el modo de imagen, estas direcciones siempre son contiguas. Definición de los rangos de memoria de destino Si utiliza el modo de imagen, también debe utilizar una directiva ROMS. En el modo de imagen, cada archivo de salida corresponde directamente a un rango de memoria de destino. Debe definir los rangos. Si no suministra los rangos de memoria de destino, la utilidad intentará crear una imagen de memoria de todo el espacio de direcciones del procesador de destino. Esto es potencialmente una enorme cantidad de datos de salida. Para evitar esta situación, la utilidad requiere que restrinja explícitamente el espacio de direcciones con la directiva ROMS. 12.9.2 Especificación de un valor de relleno La opción --fill especifica un valor para llenar los agujeros entre secciones. El valor de relleno debe especificarse como una constante entera después de la opción --fill. Se supone que el ancho de la constante es el de una palabra en el procesador objetivo. Por ejemplo, especificando - rellene 0x0FF. El valor constante no es signo extendido. La utilidad de conversión hexadecimal utiliza un valor de relleno predeterminado de 0 si no especifica un valor con la opción de relleno. La opción --fill sólo es válida cuando se utiliza --image en caso contrario, se ignora. 12.9.3 Pasos a seguir en el uso del modo de imagen Invoque la utilidad de conversión hexadecimal con la opción --image. Opcionalmente puede utilizar la opción --zero para restablecer el origen de la dirección a 0 para cada archivo de salida. Si no especifica un valor de relleno con la directiva ROMS y quiere un valor diferente al valor predeterminado de 0, utilice la opción --fill. 12.10 Control de la dirección del dispositivo ROM El campo de dirección de la salida de la utilidad de conversión hexadecimal corresponde a la dirección del dispositivo ROM. El programador EPROM graba los datos en la ubicación especificada por el campo de dirección del archivo de salida de la utilidad de conversión hexadecimal. La utilidad de conversión hexadecimal ofrece algunos mecanismos para controlar la dirección de inicio en ROM de cada sección. Sin embargo, muchos programadores EPROM ofrecen control directo de la ubicación en la ROM en la que se queman los datos. El campo de dirección del archivo de salida de la utilidad de conversión hexadecimal está controlado por los siguientes elementos, que se enumeran desde la prioridad baja a alta: El archivo de comandos del vinculador. De forma predeterminada, el campo de dirección del archivo de salida de la utilidad de conversión hexadecimal es la dirección de carga (como se indica en el archivo de comandos del vinculador). El parámetro paddr de la directiva SECTIONS. Cuando se especifica el parámetro paddr para una sección, la utilidad de conversión hexadecimal omite la dirección de carga de sección y coloca la sección en la dirección especificada por paddr. La opción - cero. Cuando se utiliza la opción - cero, la utilidad restablece el origen de la dirección a 0 para cada archivo de salida. Puesto que cada archivo comienza en 0 y cuenta hacia arriba, cualquier registro de dirección representa desplazamientos desde el principio del archivo (la dirección dentro de la ROM) en lugar de las direcciones de destino reales de los datos. Debe utilizar la opción --zero junto con la opción --image para forzar la dirección inicial en cada archivo de salida a cero. Si especifica la opción --zero sin la opción --image, la utilidad emite una advertencia e ignora la opción --zero. 12.11 Diagnóstico de la utilidad de conversión hexadecimal de control La utilidad de conversión hexadecimal utiliza ciertas opciones de compilador C / C para controlar los diagnósticos generados por el convertidor hexadecimal. Categoriza el diagnóstico identificado por id como un error. Para determinar el identificador numérico de un mensaje de diagnóstico, utilice la opción --displayerrornumber primero en un enlace independiente. A continuación, utilice --diagerror id para recategorizar el diagnóstico como un error. Sólo puede modificar la gravedad de los diagnósticos discrecionales. Categoriza el diagnóstico identificado por id como una observación. Para determinar el identificador numérico de un mensaje de diagnóstico, utilice la opción --displayerrornumber primero en un enlace independiente. Luego use --diagremark id para recategorizar el diagnóstico como una observación. Sólo puede modificar la gravedad de los diagnósticos discrecionales. Suprime el diagnóstico identificado por id. Para determinar el identificador numérico de un mensaje de diagnóstico, utilice la opción --displayerrornumber primero en un enlace independiente. A continuación, utilice --diagsuppress id para suprimir el diagnóstico. Sólo puede suprimir los diagnósticos discrecionales. Categoriza el diagnóstico identificado por id como una advertencia. Para determinar el identificador numérico de un mensaje de diagnóstico, utilice la opción --displayerrornumber primero en un enlace independiente. A continuación, utilice --diagwarning id para recategorizar el diagnóstico como una advertencia. Sólo puede modificar la gravedad de los diagnósticos discrecionales. Muestra un identificador numérico de diagnóstico junto con su texto. Utilice esta opción para determinar qué argumentos necesita suministrar a las opciones de supresión de diagnóstico (--diagsuppress, --diagerror, --diagremark y --diagwarning). Esta opción también indica si un diagnóstico es discrecional. Un diagnóstico discrecional es aquel cuya gravedad puede ser anulada. Un diagnóstico discrecional incluye el sufijo - D de lo contrario, no hay sufijo presente. Consulte la Guía del usuario del compilador MSP430 Optimizing C / C para obtener más información sobre la comprensión de los mensajes de diagnóstico. Problemas observaciones (advertencias no esenciales), que se suprimen de forma predeterminada. Los bits de dirección determinan cuántos bits de la información de dirección soporta el formato. Los formatos con direcciones de 16 bits admiten direcciones de hasta 64 KB. La utilidad trunca las direcciones de destino para ajustarse al número de bits disponibles. El ancho predeterminado determina el ancho de salida predeterminado del formato. Puede cambiar el ancho predeterminado utilizando la opción --romwidth o utilizando el parámetro romwidth en la directiva ROMS. No puede cambiar el ancho predeterminado del formato Tag-TI, que admite sólo un ancho de 16 bits. 12.12.1 Formato de objeto ASCII-Hex (opción - ascii) El formato de objeto ASCII-Hex admite direcciones de 16 bits. El formato consiste en un flujo de bytes con bytes separados por espacios. La figura 12-6 ilustra el formato ASCII-Hex. Figura 12-6 Formato de objeto ASCII-Hex El archivo comienza con un carácter ASCII STX (ctrl-B, 02h) y termina con un carácter ASCII ETX (ctrl-C, 03h). Los registros de direcciones se indican con AXXXXXXX, en el que XXXXXXXX es una dirección hexadecimal de 8 dígitos (16 bits). Los registros de direcciones están presentes sólo en las siguientes situaciones: Cuando se producen discontinuidades Cuando el flujo de bytes no comienza en la dirección 0 Puede evitar todas las discontinuidades y cualquier registro de dirección utilizando las opciones --image y --zero. Esto crea una salida que es simplemente una lista de valores de byte. 12.12.2 Formato de objeto Intel MCS-86 (opción - intel) El formato de objeto Intel admite direcciones de 16 bits y direcciones extendidas de 32 bits. El formato Intel consiste en un prefijo de 9 caracteres (4 campos) que define el inicio del registro, el número de bytes, la dirección de carga y el tipo de registro, los datos y un sufijo de suma de comprobación de 2 caracteres. El prefijo de 9 caracteres representa tres tipos de registro: Registro de dirección lineal extendido El tipo de registro 00, el registro de datos, comienza con dos puntos (.) Y es seguido por el recuento de bytes, la dirección del primer byte de datos, el tipo de registro (00) , Y la suma de comprobación. La dirección es el menos significativo 16 bits de una dirección de 32 bits este valor se concatena con el valor de la más reciente 04 (extensión de dirección lineal) de registro para crear una dirección completa de 32 bits. La suma de comprobación es el complemento 2s (en forma binaria) de los bytes anteriores del registro, incluidos el byte, la dirección y los bytes de datos. El tipo de registro 01, el registro de fin de archivo, también comienza con dos puntos (.), Seguido por el recuento de bytes, la dirección, el tipo de registro (01) y la suma de comprobación. El tipo de registro 04, el registro de dirección lineal ampliado, especifica los 16 bits de dirección superiores. Comienza con dos puntos (.), Seguido por el recuento de bytes, una dirección ficticia de 0h, el tipo de registro (04), los 16 bits más significativos de la dirección y el checksum. Los campos de dirección subsiguientes en los registros de datos contienen los bytes menos significativos de la dirección. La figura 12-7 ilustra el formato de objeto hexadecimal de Intel. Figura 12-7 Formato de objeto hexadecimal Intel 12.12.3 Formato de objeto Exorciser de Motorola (opción - motorola) Los formatos Motorola S1, S2 y S3 admiten direcciones de 16 bits, 24 bits y 32 bits, respectivamente. Los formatos consisten en un registro de inicio de archivo (encabezado), registros de datos y un registro de fin de archivo (terminación). Each record consists of five fields: record type, byte count, address, data, and checksum. The three record types are: The load address in the data record specifies where the object code will be located. The first digit specifies the address length this is always 8. The remaining characters of the data record contain the object code, two characters per byte. Figure 12-9 illustrates the Tektronix object format. Figure 12-9 Extended Tektronix Object Format 12.12.5 Texas Instruments SDSMAC (TI-Tagged) Object Format (--titagged Option) The Texas Instruments SDSMAC (TI-Tagged) object format supports 16-bit addresses, including start-of-file record, data records, and end-of-file record. Each data records consists of a series of small fields and is signified by a tag character: Figure 12-10 illustrates the tag characters and fields in TI-Tagged object format. Figure 12-10 TI-Tagged Object Format If any data fields appear before the first address, the first field is assigned address 0000h. Address fields may be expressed but not required for any data byte. The checksum field, preceded by the tag character 7, is the 2s complement of the sum of the 8-bit ASCII values of characters, beginning with the first tag character and ending with the checksum tag character (7 or 8). The end-of-file record is a colon (. ). 12.12.6 TI-TXT Hex Format (--titxt Option) The TI-TXT hex format supports 16-bit hexadecimal data. It consists of section start addresses, data byte, and an end-of-file character. These restrictions apply: The number of sections is unlimited. Each hexadecimal start address must be even. Each line must have 16 data bytes, except the last line of a section. Data bytes are separated by a single space. The end-of-file termination tag q is mandatory. The data record contains the following information:

No comments:

Post a Comment