Hvorfor konvertere UF2 til HEX?
UF2 indpakker firmware til drag-and-drop-flashning, mens .hex (Intel HEX) er et ASCII-format, der koder både data og deres hukommelsesadresser, hvilket bruges af mange flash-enheder og programmører. Da uf2conv.py ikke udsender Intel HEX, går man via en rå .bin og lader objcopy (fra GNU binutils) tilføje adresseposterne. Dette er almindeligt, når en målenheds programmør eller bootloader forventer .hex frem for UF2.
Sådan konverterer du UF2 til HEX
uf2conv.py derefter objcopy OPEN-SOURCE
Kør uf2conv.py firmware.uf2 -c -o firmware.bin, derefter objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex for at tilføje flash-offsettet.
objcopy (GNU binutils / arm-none-eabi) FREE
Brug værktøjskædens arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Tilføj --change-addresses for at placere dataene på den rigtige hukommelsesadresse.
SRecord (srec_cat) OPEN-SOURCE
Hvis objcopys håndtering af offset fejler, kør srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel for at bygge Intel HEX med en præcis adresse.
Om disse formater
En UF2-fil er et firmware-image i Microsofts USB Flashing Format, der bruges til at programmere mikrocontroller-boards via USB. Du åbner den ikke i en app - du sætter boardet i…
Åbn .UF2 detaljer →En .hex-fil er en Intel HEX-fil: kompileret firmware til en mikrocontroller som f.eks. en Arduino, AVR eller PIC-chip, gemt som almindelige tekstposter. Du kører den ikke på en PC - du…
Åbn .HEX detaljer →Kvalitet & hvad man skal være opmærksom på
- Der findes ingen enkeltkommando til UF2-til-HEX; den rå
.bini midten mister adressen, så du skal genindsætte flash-basis-offsettet i objcopy/srec-trinnet. - Hvis offsettet er forkert, vil
.hex-filen placere koden på den forkerte hukommelsesadresse, hvilket kan ødelægge enheden eller forhindre den i at boote. - Nogle objcopy-versioner har haft fejl ved konvertering fra binær til ihex; SRecord er det anbefalede alternativ til præcise offsets.
Ofte stillede spørgsmål
Hvorfor to trin?
uf2conv.py udsender kun rå .bin og C-arrays, ikke Intel HEX. Du konverterer UF2 til .bin, og bruger derefter objcopy eller SRecord til at lave .hex-filen.Hvilket offset skal jeg bruge?
--change-addresses eller srec -offset.Hvor får jeg objcopy fra?
arm-none-eabi-objcopy fra GNU Arm Embedded-værktøjskæden.Hvad hvis objcopy giver forkerte adresser?
srec_cat med et eksplicit -offset, som håndterer adresseplacering fra binær-til-Intel-HEX pålideligt.