Por que converter HEX para BIN?
O Intel HEX armazena firmware compilado como registros ASCII de texto simples; cada byte é codificado como dois dígitos hexadecimais envolvidos em campos de endereço e checksum. Muitas ferramentas de gravação de firmware, bootloaders e utilitários de atualização de dispositivos esperam uma imagem plana .bin - por exemplo, placas STM32 aceitam um arquivo .bin arrastado para sua unidade USB, enquanto o conjunto de ferramentas Arduino gera .hex. A conversão permite usar firmware construído por um conjunto de ferramentas com um gravador que espera o outro formato.
Como converter HEX para BIN
avr-objcopy OPEN-SOURCE
Execute avr-objcopy -I ihex -O binary firmware.hex firmware.bin em um terminal. No Linux, o objcopy genérico do binutils do sistema aceita as mesmas flags sem o pacote específico para AVR.
SRecord OPEN-SOURCE
Execute srec_cat firmware.hex -Intel -o firmware.bin -Binary. O SRecord lida com lacunas de endereço no arquivo HEX preenchendo-as com 0xFF, correspondendo à memória flash apagada.
Sobre estes formatos
Um arquivo .hex é um arquivo Intel HEX: firmware compilado para um microcontrolador como um chip Arduino, AVR ou PIC, armazenado como registros de texto simples. Você não o executa em um PC…
Abrir detalhes de .HEX →Um arquivo BIN é, na maioria das vezes, uma cópia bruta, setor por setor, de um CD ou DVD que vem acompanhada de um arquivo de texto .cue correspondente que descreve as faixas. Monte-o com…
Abrir detalhes de .BIN →Qualidade e o que observar
- A saída
.biné menor que o.hexporque o Intel HEX codifica cada byte como dois dígitos hexadecimais ASCII, além da sobrecarga de estrutura. - Se o arquivo HEX tiver lacunas de endereço - comum quando as regiões de flash e EEPROM são cobertas - o SRecord as preenche com
0xFFpor padrão. - O avr-objcopy vem incluído no Arduino IDE no Windows em
hardware/tools; no macOS, está disponível via Homebrew com o pacote avr-gcc.
Perguntas frequentes
A conversão de HEX para BIN perde algum dado?
Onde encontro o avr-objcopy no Windows?
hardware/tools, ou está disponível através do pacote WinAVR.Posso usar esta conversão para chips que não sejam AVR?
objcopy genérico do binutils do sistema com as mesmas flags; o SRecord também é independente de arquitetura.