Hvorfor konvertere UF2 til HEX?
UF2 pakker inn fastvare for «dra-og-slipp»-flashing, mens .hex (Intel HEX) er et ASCII-format som koder både dataene og deres minneadresser, og brukes av mange flash-verktøy og programmerere. Siden uf2conv.py ikke genererer Intel HEX, går veien via en rå .bin slik at objcopy (fra GNU binutils) kan legge til adresseregistrene. Dette er vanlig når en målenhets programmerer eller bootloader forventer .hex i stedet for UF2.
Hvordan konvertere UF2 til HEX
uf2conv.py deretter objcopy OPEN-SOURCE
Kjør uf2conv.py firmware.uf2 -c -o firmware.bin, deretter objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex for å legge til flash-offset.
objcopy (GNU binutils / arm-none-eabi) FREE
Bruk verktøykjedens arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Legg til --change-addresses for å plassere dataene på riktig minneadresse.
SRecord (srec_cat) OPEN-SOURCE
Hvis objcopys håndtering av offset feiler, kjør srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel for å bygge Intel HEX med en nøyaktig adresse.
Om disse formatene
En UF2-fil er et fastvarebilde i Microsofts USB Flashing Format, brukt til å programmere mikrokontrollerkort over USB. Du åpner den ikke i en app - du setter kortet i bootloader-modus slik…
Åpne .UF2-detaljer →En .hex-fil er en Intel HEX-fil: kompilert fastvare (firmware) for en mikrokontroller som en Arduino, AVR eller PIC-brikke, lagret som ren tekst. Du kjører den ikke på en PC - du «flasher»…
Åpne .HEX-detaljer →Kvalitet og hva du bør passe på
- Det finnes ingen enkeltkommando for UF2-til-HEX; den rå
.bin-filen i midten mister adressen, så du må oppgi flash-basen på nytt i objcopy/srec-trinnet. - Hvis du oppgir feil offset, vil
.hex-filen plassere koden på feil minneadresse, noe som kan ødelegge enheten eller føre til at den ikke starter. - Noen versjoner av objcopy har hatt feil ved konvertering fra binær til ihex; SRecord er det anbefalte alternativet for nøyaktige offsets.
Ofte stilte spørsmål
Hvorfor to trinn?
uf2conv.py eksporterer bare rå .bin og C-tabeller, ikke Intel HEX. Du konverterer UF2 til .bin, og bruker deretter objcopy eller SRecord for å lage .hex.Hvilken offset skal jeg bruke?
--change-addresses eller srec -offset.Hvor får jeg tak i objcopy?
arm-none-eabi-objcopy fra GNU Arm Embedded-verktøykjeden.Hva om objcopy gir feil adresser?
srec_cat med en eksplisitt -offset, som håndterer adresseplassering fra binær til Intel HEX på en pålitelig måte.