Varför konvertera UF2 till HEX?
UF2 omsluter firmware för drag-och-släpp-flashning, medan .hex (Intel HEX) är ett ASCII-format som kodar både data och dess minnesadresser, vilket används av många flash-verktyg och programmerare. Eftersom uf2conv.py inte skapar Intel HEX, går du via en rå .bin och låter objcopy (från GNU binutils) lägga till adressposterna. Detta är vanligt när en målenhets programmerare eller bootloader förväntar sig .hex snarare än UF2.
Hur man konverterar UF2 till HEX
uf2conv.py sedan objcopy OPEN-SOURCE
Kör uf2conv.py firmware.uf2 -c -o firmware.bin, sedan objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex för att lägga till flash-offseten.
objcopy (GNU binutils / arm-none-eabi) FREE
Använd verktygskedjans arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Lägg till --change-addresses för att placera datan på rätt minnesadress.
SRecord (srec_cat) OPEN-SOURCE
Om objcopy:s hantering av offset inte fungerar, kör srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel för att bygga Intel HEX med en exakt adress.
Om dessa format
En UF2-fil är en firmware-avbildning i Microsofts USB Flashing Format, som används för att programmera mikrokontrollerkort via USB. Du öppnar den inte i en app - du sätter kortet i…
Öppna detaljer för .UF2 →En .hex-fil är en Intel HEX-fil: kompilerad firmware för en mikrokontroller som en Arduino, AVR eller PIC-chip, lagrad som textposter. Du kör den inte på en PC - du «flashar» den till…
Öppna detaljer för .HEX →Kvalitet & vad man bör tänka på
- Det finns inget enstaka kommando för UF2-till-HEX; den råa
.bin-filen i mitten tappar adressen, så du måste ange flash-basens offset igen i objcopy/srec-steget. - Om du anger fel offset kommer
.hex-filen att placera koden på fel minnesadress, vilket kan göra enheten obrukbar eller förhindra uppstart. - Vissa versioner av objcopy har haft problem med att konvertera binär till ihex; SRecord är den rekommenderade reservlösningen för exakta offsetvärden.
Vanliga frågor
Varför två steg?
uf2conv.py matar bara ut rå .bin och C-arrayer, inte Intel HEX. Du konverterar UF2 till .bin och använder sedan objcopy eller SRecord för att skapa .hex.Vilken offset ska jag använda?
--change-addresses eller srec -offset.Var får jag tag på objcopy?
arm-none-eabi-objcopy från GNU Arm Embedded-verktygskedjan.Vad händer om objcopy ger fel adresser?
srec_cat med en explicit -offset, vilket hanterar adressplacering från binär till Intel HEX på ett tillförlitligt sätt.