Formato de arquivo Intel HEX

intel hex

Confira neste artigo como interpretar as informações armazenadas em um arquivo no formato Intel Hex. Nesse tipo de arquivo são definidos o programa e valores constantes que serão gravados na memória, sendo utilizado em diversos programadores e emuladores.

Padrão Intel Hex

Um arquivo com extensão .hex contém uma sequência de caracteres ASCII que é armazenada seguindo o padrão Intel HEX. De modo geral, cada linha de texto presente no arquivo contém informações representadas utilizando o sistema de numeração hexadecimal. Tais parâmetros são indicados seguindo um formato padrão de linha que é iniciado com o símbolo ‘:’.

:LLAAAATT[DD…]CC

Os parâmetros são apresentados a seguir:

  • LL: Quantidade de bytes na linha;
  • AAAA: Endereço inicial em que as informações serão armazenadas;
  • TT: Campo de extensão;
  • DD: Informações da linha;
  • CC: Código para verificação de erros.

É importante ressaltar que duas letras representam um valor hexadecimal. Assim sendo, verifica-se que cada campo possui, respectivamente: um byte; dois bytes; LL bytes; um byte. Lembre-se que o tamanho do campo DD depende da informação presente em LL.

Campo de Extensão

O campo de extensão é usado para indicar o tipo de informação definida na linha, isto é, no campo DD. Pode ser a definição dos valores armazenados na memória ou algum mecanismo de controle: 

  • 00: Determinação do conjunto de dados;
  • 01: Fim de linha;
  • 02: Extensão de endereço de segmento;
  • 04: Extensão linear de endereço.

Determinação do conjunto de bytes: A informação contida a partir de um endereço de memória. No exemplo, 12 bytes gravados a partir do endereço 50H.

:0C005000456D6261726361646F730000B3

Fim de linha: Indica o final do arquivo HEX.

:00000001FF

Extensão de endereço de segmento: Utilizado no padrão HEX86, este campo define os bits 4-19 de um segmento de endereço de 20 bits. Para este campo são utilizados 2 bytes. Nesse caso, a função do campo é definir um endereço base que será somado aos endereços subsequentes (próximas linhas). Assim sendo, o endereço absoluto é obtido somando o endereço atual com o valor de extensão deslocado de 4 bits.

Endereço absoluto = (Endereço_Segmento << 4) + Endereço_Linha

Extensão linear de endereço: Utilizado no padrão HEX386, este campo define os bits 16-31 de um de endereço de 32 bits. Para este campo são utilizados 2 bytes para definir a parte alta (16 bits) das próximas linhas. Portanto, o endereço absoluto é obitdo somando o endereço atual com o valor de extensão deslocado de 16 bits.

Endereço absoluto = (Endereço_Segmento << 16) + Endereço_Linha

Código para verificação de erros

O código de verificação de erros é obtido da seguinte maneira: Todos os campos são somados, exceto o checksum. Em seguida, toma-se o complemento desse valor. Por fim, é somado o valor 1 para obter o checksum. Essas operações são mostradas no exemplo a seguir:

:0C005000456D6261726361646F730000B3

Soma: 0C + 00 + 50 + 00 + 45 + 6D + 62 + 61 + 72 + 63 + 61 + 64 + 6F+ 73 + 00 + 00 = 44D = 4D.

Complemento = NOT(4D) = B2.

Checksum = B2 + 01 = B3.

Exemplo

Considere o código abaixo compilado para arquitetura AVR de 8 bits.

O arquivo Hex gerado é mostrado na Figura 1. As cinco primeiras linhas são usadas para gravar o programa que é composto pelo código de inicialização e a função main. A penúltima linha é usada para gravar o dado constante na memória. Por fim, a ultima linha apresenta o comando de finalização. 

Exemplo de arquivo Intel Hex.
Figura 1: Exemplo de arquivo Intel Hex.

Saiba mais

“Disassemblando” código Intel Hex com o simulador Kit SENAI PIC16

Conjunto de Instruções do Intel 8051

Compilando C para 8051 com SDCC

Referências

Intel HEX File Format

Imagem em destaque

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

[wpseo_breadcrumb]
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries

Menu
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services