Skip to content
Carlos Delfino edited this page Apr 11, 2021 · 4 revisions

O arquivo HEX Intel é um arquivo no formato ASCII com linhas de texto que obedece o formato Intel de arquivos HEX. Cada linha é um em arquivo Intel HEX contem um registro HEX. Estes registros são feitos de números hexadecimais que representam código de linguagem de máquina e/ou dados. arquivos Intel Hex são normalmente para transferir programas e dados que devem ser gravados em ROM ou EPROM. Muitos programadores EPROM ou emuladores podem usar este formato de arquivo.

O formato

Um arquivo Hex Intel é composto de um certo número de registro HEX. Cada registro é feito de 5 campos exatos que são arranjados na seguinte forma:

:llaaaatt[dd...]cc

Cada grupo de letras corresponde a um campo diferente, e cada letra representa um digital hexadecimal simples. Cada campo é composto de pelo menos dois digitos hexadecimais de comprimento construindo assim um byte como descrito abaixo:

Campo Descrição
: são os "dois pontos" que iniciam cada registro HEX Intel.
ll é o comprimento do registro em bytes do campo dd.
aaaa é o endereço que representa o inicio do dado subsequênte no campo.
tt é o campo que representa o típo de registro HEX, que pode ser um dos seguintes:
00 - data record
01 - end-of-file record
02 - extended segment address record
04 - extended linear address record
05 - start linear address record (MDK-ARM only)
dd é o campo de dados propriamente que presenta um byte dado. um registro pode ter multíplos bytes. O número de bytes de dados na ordem de registo devem bater com o número especificado no campo ll
cc é o campo de checksum que representa o verificador do registro. O verificador é calculado pela soma de módulos de 256 valores em pares hexadecimal, e então tirando o complemento de dois.

Registro de dados

O arquivo Hex Intel é feito de um certo número de registros de dados que são terminados com "retorno de carro e um salto de linha" (Carriage Return e linefeed). Registros de dados aparecem como a seguir:

:10246200464C5549442050524F46494C4500464C33

Este registro é decodificado da seguinte forma:

:10246200464C5549442050524F46494C4500464C33
| |   | |                                 | 
| |   | |                                CC->Checksum
| |   | |                         
| |   |DD->Data
| |   | 
| |   |TT->Record Type
| |   |
| |AAAA->Address
| |   
|LL->Record Length
|
:->Colon

Onde:

  • 10 é o número de bytes de dados no registro.
  • 2462 é o endereço onde o dado está alocado na memória.
  • 00 é o tipo de registro do tipo 00(um registro do tipo dado).
  • 464C...464C é o dado propriamente.
  • 33 é o par de digito verificador.

Registros de Endereçamento Estendido Linear (HEX386)

Registros de endereçamento linear estendido (Extended linear address records) são também conhecidos como registros de endereços de 32-bits e registros HEX386. Estes registros contém os 16bits superiores (bits 16-31) do endereço de dado. O registro de endereço linear extendido sempre tem dois bytes de dados aparenta como a seguir:

:02000004FFFFFC

onde:

  • 02 -> é o número de byte de dados no registro.
  • 0000 -> é o campo de endereço. Para o registro de endereço linear extendido, este campo é sempre 0000.
  • 04 -> é o registro do tipo 04 (um registro de endereço linear extendido).
  • FFFF -> são os 16 bits superiores do endereço.
  • FC -> são o digito verificador do registro e é calculado como "01h + NOT(02h + 00h + 00h + 04h + FFh + FFh)".

Quando um registro de endereço linear estendido é lido, o endereço linear estendido gravado no campo de dados é gravado e então aplicado no registro lido subsequente do arquivo HEX Intel. O Endereço linear se mantem efetivo até ser alterado por outro registro de endereço estentido.

Fontes:

Clone this wiki locally