O que é o formato de ficheiro HEX?
Arquivos com a extensão .hex usam o formato Intel HEX - um formato de registro ASCII de texto simples que codifica firmware binário compilado para que possa ser transferido de forma confiável para um programador ou ferramenta de gravação. Em vez de armazenar dados binários brutos, cada byte de conteúdo é representado como dois caracteres hexadecimais, o que mantém o arquivo totalmente legível por humanos em qualquer editor de texto.
Arquivos .hex são sempre texto simples e podem ser abertos com um editor de texto padrão, como o Notepad. Para gravar o firmware em um microcontrolador, são utilizadas ferramentas especializadas como avrdude ou Arduino IDE. Onde o código de máquina bruto é necessário, um compilador também pode gerar uma imagem binária .bin, ou um Motorola S-record .srec para sistemas que preferem esse formato.
Um arquivo .hex é o resultado de um compilador ou montador convertendo código-fonte em código de máquina e, em seguida, codificando-o para transferência segura para o dispositivo de destino.
Onde os arquivos .hex são usados
Os dados contidos nos arquivos .hex são usados para programar microcontroladores e para gravar conteúdo em memórias incorporadas, como armazenamento EEPROM e Flash. Os microcontroladores estão instalados em muitos dispositivos de uso comum - desde controles remotos e sistemas que controlam o motor de um carro até modernos sensores de IoT e hardware de robótica.
Estrutura de dados em arquivos .hex
Os dados hexadecimais em um arquivo .hex são armazenados em linhas de texto chamadas registros, e cada registro consiste em seis campos:
- Código de início - dois pontos (
:) que marcam o início de cada registro - Contagem de bytes - dois dígitos hexadecimais definindo o número de bytes de dados naquele registro
- Endereço - quatro dígitos hexadecimais especificando o endereço de destino de 16 bits (endereçando até 64 KB por segmento no formato base)
- Tipo de registro - dois dígitos hexadecimais, de
00a05(por exemplo,00= registro de dados,01= fim do arquivo) - Dados - a carga útil real, com cada byte codificado como dois caracteres hexadecimais
- Checksum - dois dígitos hexadecimais contendo a soma de verificação de complemento de dois de todos os bytes anteriores no registro
A linha final de todo arquivo Intel HEX válido é o registro fixo de fim de arquivo :00000001FF.
Segurança e proteção
RISCO: MEDIUMUm arquivo .hex contém dados simples e não pode ser executado no seu PC por si só, portanto, abrir um em um editor de texto ou hexadecimal é inofensivo. O risco real está no dispositivo: gravar um firmware não confiável pode inutilizar (brick) o hardware ou carregar código malicioso em um microcontrolador. Grave apenas arquivos .hex do fabricante do dispositivo ou de uma fonte em que você confia, e confirme se o arquivo corresponde exatamente à sua placa/chip antes de fazer o upload. Editar bytes de firmware manualmente também pode corromper a imagem.
Detalhes do formato
em resumo- Hex dump genérico - Uma transcrição legível por humanos dos bytes brutos de outro arquivo (colunas de deslocamento + hex + ASCII) produzida por um editor hexadecimal ou ferramentas como xxd/hexdump; às vezes, blobs binários brutos também são salvos informalmente como .hex.
Programas que abrem arquivos HEX
Detalhes técnicos
especificação profunda| Codificação | Texto ASCII puro; cada byte de dados é representado como dois caracteres hexadecimais |
| Caractere de início de registro | Dois pontos `:` (0x3A) - cada linha de registro começa com este caractere; não há número mágico binário |
| Tipos de registro | Seis tipos numerados de 00-05: dados (00), fim de arquivo (01), endereço de segmento estendido (02), endereço de segmento inicial (03), endereço linear estendido (04), endereço linear inicial (05) |
| Faixa de endereço base | Endereçamento de 16 bits por segmento, cobrindo até 64 KB sem registros de extensão de endereço |
| Faixa de endereço estendida | Até 4 GB (32 bits) usando registros de Endereço Linear Estendido tipo 04, permitindo mapeamento de memória completo de 32 bits |
| Máximo de bytes de dados por registro | Até 255 bytes (0xFF) de dados por registro; a prática comum utiliza 16 ou 32 bytes por registro |
| Algoritmo de checksum | Complemento de dois de 8 bits de todos os bytes no registro (contagem de bytes, endereço, tipo de registro e dados), excluindo os dois pontos iniciais |
| Marcador de fim de arquivo | O registro fixo `:00000001FF` deve encerrar todo arquivo Intel HEX válido |
| Tipo MIME | text/plain |
| Ordem dos bytes de endereço | Big-endian - byte mais significativo primeiro nos campos de endereço e contagem de vários bytes |
| Uso primário | Programação de Flash e EEPROM em microcontroladores como as famílias AVR, PIC, ARM Cortex-M e 8051 |
| Origem da toolchain | Saída de compiladores e montadores, incluindo avr-gcc, MPLAB X IDE, Keil MDK e IAR Embedded Workbench |
| Sobrecarga de tamanho de arquivo | Aproximadamente 1,4-2× o tamanho do binário bruto, pois cada byte de dados se torna dois caracteres ASCII mais os bytes de enquadramento por registro |
| Lançado | 1973 (Intel HEX format) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | en.wikipedia.org |
Conversões de HEX
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos HEX.