Perché convertire UF2 in HEX?
UF2 racchiude il firmware per il flashing drag-and-drop, mentre .hex (Intel HEX) è un formato ASCII che codifica sia i dati che i relativi indirizzi di memoria, utilizzato da molti flasher e programmatori. Poiché uf2conv.py non emette Intel HEX, si passa attraverso un .bin grezzo e si lascia che objcopy (da GNU binutils) aggiunga i record degli indirizzi. Questo è comune quando il programmatore o il bootloader di un target si aspetta un .hex anziché un UF2.
Come convertire UF2 in HEX
uf2conv.py poi objcopy OPEN-SOURCE
Esegui uf2conv.py firmware.uf2 -c -o firmware.bin, quindi objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex per aggiungere l'offset della flash.
objcopy (GNU binutils / arm-none-eabi) FREE
Usa l' arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex della toolchain. Aggiungi --change-addresses per posizionare i dati all'indirizzo di memoria corretto.
SRecord (srec_cat) OPEN-SOURCE
Se la gestione dell'offset di objcopy non funziona correttamente, esegui srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel per creare l'Intel HEX con un indirizzo preciso.
Informazioni su questi formati
Un file UF2 è un'immagine firmware nel formato USB Flashing Format di Microsoft, utilizzato per programmare schede a microcontrollore tramite USB. Non si apre in un'app: si mette la scheda…
Apri dettagli .UF2 →Un file .hex è un file Intel HEX: firmware compilato per un microcontrollore come un chip Arduino, AVR o PIC, memorizzato come record di testo semplice. Non si esegue su un PC - viene…
Apri dettagli .HEX →Qualità e a cosa prestare attenzione
- Non esiste un comando unico da UF2 a HEX; il
.binintermedio perde l'indirizzo, quindi è necessario fornire nuovamente l'offset di base della flash nel passaggio objcopy/srec. - Se l'offset è errato, il file
.hexposizionerà il codice all'indirizzo di memoria sbagliato, il che può bloccare il dispositivo o impedirne l'avvio. - Alcune versioni di objcopy presentavano regressioni nella conversione da binario a ihex; SRecord è l'alternativa consigliata per offset esatti.
Domande frequenti
Perché due passaggi?
uf2conv.py emette solo .bin grezzi e array C, non Intel HEX. Converti l'UF2 in .bin, quindi usa objcopy o SRecord per creare l' .hex.Quale offset devo usare?
--change-addresses o l' -offset di srec.Dove posso trovare objcopy?
arm-none-eabi-objcopy dalla toolchain GNU Arm Embedded.Cosa succede se objcopy fornisce indirizzi errati?
srec_cat di SRecord con un -offset esplicito, che gestisce in modo affidabile il posizionamento degli indirizzi da binario a Intel HEX.