Por que converter UF2 para HEX?
O UF2 envolve o firmware para gravação via «arrastar e soltar», enquanto o .hex (Intel HEX) é um formato ASCII que codifica tanto os dados quanto seus endereços de memória, usado por muitos gravadores e programadores. Como o uf2conv.py não gera Intel HEX, você faz a rota através de um .bin bruto e deixa o objcopy (do GNU binutils) adicionar os registros de endereço. Isso é comum quando o programador ou bootloader de um alvo espera um .hex em vez de UF2.
Como converter UF2 para HEX
uf2conv.py depois objcopy OPEN-SOURCE
Execute uf2conv.py firmware.uf2 -c -o firmware.bin, depois objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex para adicionar o deslocamento da flash.
objcopy (GNU binutils / arm-none-eabi) FREE
Use a ferramenta da toolchain arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Adicione --change-addresses para colocar os dados no endereço de memória correto.
SRecord (srec_cat) OPEN-SOURCE
Se o manuseio de offset do objcopy falhar, execute srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel para construir o Intel HEX com um endereço preciso.
Sobre estes formatos
Um arquivo UF2 é uma imagem de firmware no formato USB Flashing Format da Microsoft, usado para programar placas de microcontroladores via USB. Você não o abre em um aplicativo - você…
Abrir detalhes de .UF2 →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 →Qualidade e o que observar
- Não existe um comando único para UF2-para-HEX; o
.binbruto no meio do processo perde o endereço, então você deve fornecer novamente o offset base da flash na etapa do objcopy/srec. - Se errar o offset, o
.hexcolocará o código no endereço de memória errado, o que pode inutilizar (brick) ou impedir a inicialização do dispositivo. - Algumas versões do objcopy tiveram regressões ao converter binário para ihex; o SRecord é o fallback recomendado para offsets exatos.
Perguntas frequentes
Por que duas etapas?
uf2conv.py apenas exporta .bin bruto e arrays C, não Intel HEX. Você converte UF2 para .bin, depois usa objcopy ou SRecord para criar o .hex.Qual offset devo usar?
--change-addresses ou srec -offset.Onde consigo o objcopy?
arm-none-eabi-objcopy da toolchain GNU Arm Embedded.E se o objcopy der endereços errados?
srec_cat do SRecord com um -offset explícito, que lida com o posicionamento de endereços de binário para Intel HEX de forma confiável.