Intel hexagonal

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 14 de diciembre de 2017; las comprobaciones requieren 23 ediciones .

Intel HEX  es un formato de archivo diseñado para representar datos binarios arbitrarios en forma de texto. Por razones históricas, es el estándar de facto para flashear varios microcircuitos con memoria ( microcontroladores , ROM , EEPROM , etc.). En consecuencia, la mayoría de las herramientas para preparar imágenes de firmware ( compiladores , editores, visores, etc.) pueden funcionar con este formato.

El archivo suele tener la extensión .hex. Los nombres I8HEX, I16HEX e I32HEX a veces se utilizan para identificar el conjunto de registros utilizados en un archivo. I8HEX solo usa entradas con tipos 00/01 (direccionamiento de 16 bits), I16HEX agrega entradas 02/03 (direccionamiento de 20 bits) e I32HEX agrega entradas 04/05 (direccionamiento de 32 bits).

La ventaja del formato (a diferencia del binario simple) es la capacidad de especificar solo ciertas áreas de direcciones (con precisión de byte ). Muchas arquitecturas de microcontroladores tienen múltiples áreas de programación con amplias brechas de direccionamiento entre ellas.

Formato de grabación

Explicación uno

El archivo consta de líneas de texto ASCII . Cada línea representa una entrada. Cada entrada comienza con dos puntos ( : ), seguida de un conjunto de dígitos hexadecimales que son múltiplos de un byte :

Explicación dos

Un archivo Intel HEX puede contener cualquier número de entradas. Cada entrada es una cadena ASCII que consta de varios pares de dígitos hexadecimales. La cadena debe comenzar con un carácter de dos puntos y terminar con un par de caracteres CR y LF. El registro consta de cinco campos con el siguiente formato:

: LL AAAA TT DD… CC

Cada grupo de letras (LL, AAAA, TT, etc.) es un campo separado. Cada letra es un dígito hexadecimal separado (4 bits). Cada campo consta de al menos dos dígitos hexadecimales (un byte). A continuación se muestra un desglose de los campos de registro:

Entrada de dirección de segmento

Un archivo de formato Intel HEX puede contener entradas para procesadores Intel 8086 que definen la dirección del segmento (en otras palabras, el número de párrafo, un párrafo tiene 16 bytes). Si se usa la directiva H167, este tipo de registro reemplaza el registro de dirección lineal extendida. El número de párrafo se utiliza como compensación de dirección para todos los registros de datos que siguen a este registro. El desplazamiento es el desplazamiento de la dirección cuatro bits a la izquierda. Por ejemplo, un desplazamiento de 0x1234 daría la dirección real 0x12340. Ejemplo de grabación:

: 02 0000 02 1000 CE

dónde:

Entrada de dirección extendida

Cuando se utiliza la directiva H167, el archivo de formato Intel HEX posiblemente contenga entradas de direcciones lineales extendidas. Este tipo de entrada define los valores de los dos bytes más significativos de la dirección absoluta (bits 16-31). Estos dos bytes más significativos de la dirección se utilizarán como compensación de dirección para todos los registros de datos que siguen a este registro. Ejemplo de grabación:

: 02 0000 04 00FF FB

dónde:

Grabación de fin de archivo

Los archivos con formato Intel HEX deben tener una entrada de fin de archivo (EOF).

Ejemplo de grabación:

: 00 0000 01FF _

dónde:

Ejemplos

Ejemplo 1

: 10 0100 00 214601360121470136007EFE09D21901 40 : 10 0110 00 2146017EB7C20001FF5F160021480119 88 : 10 0120 00 194E79234623965778239EDA3F01B2CA A7 : 10 0130 00 3F0156702B5E712B722B732146013421 C7 : 00 0000 01 FF

     Empezar a grabar      Número de bytes de datos en esta entrada (fila)      La dirección desde la que se empiezan a colocar los datos de este registro      tipo de registro      Datos      Registrar suma de control

Ejemplo 2

Ejemplo de un registro de datos:

: 10 2462 00 464C5549442050524F46494C4500464C 33

dónde

Ejemplo 3

:020000021000EC :10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 :10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 :10C22000F04EF05FF06CF07DCA0050C2F086F097DF :10C23000F04AF054BCF5204830592D02E018BB03F9 :020000020000FC :04000000FA00000200 :00000001FF

     Registro con dirección de segmento (registro tipo 02). Los 2 bytes de datos contienen la parte alta de la dirección.      Registros con datos (tipo de registro 00).      Un registro que marca el final de un archivo (tipo de registro 01). Las líneas posteriores a esta entrada se ignoran.

Véase también

Enlaces