Waarom UF2 naar HEX converteren?
UF2 verpakt firmware voor drag-and-drop-flashen, terwijl .hex (Intel HEX) een ASCII-formaat is dat zowel de gegevens als de geheugenadressen codeert, gebruikt door veel flashers en programmeurs. Omdat uf2conv.py geen Intel HEX uitspuugt, routeert u via een ruwe .bin en laat u objcopy (van GNU binutils) de adresrecords toevoegen. Dit is gebruikelijk wanneer de programmeur of bootloader van een doelapparaat .hex verwacht in plaats van UF2.
Hoe UF2 naar HEX te converteren
uf2conv.py daarna objcopy OPEN-SOURCE
Voer uf2conv.py firmware.uf2 -c -o firmware.bin uit, daarna objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex om de flash-offset toe te voegen.
objcopy (GNU binutils / arm-none-eabi) FREE
Gebruik de toolchain's arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Voeg --change-addresses toe om de gegevens op het juiste geheugenadres te plaatsen.
SRecord (srec_cat) OPEN-SOURCE
Als de offset-afhandeling van objcopy niet goed werkt, voer dan srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel uit om de Intel HEX met een exact adres op te bouwen.
Over deze formaten
Een UF2-bestand is een firmware-image in Microsoft's USB Flashing Format, gebruikt om microcontroller-boards te programmeren via USB. Je opent het niet in een app - je zet het board in…
Open .UF2 details →Een .hex-bestand is een Intel HEX-bestand: gecompileerde firmware voor een microcontroller zoals een Arduino, AVR of PIC-chip, opgeslagen als records in platte tekst. Je voert het niet uit…
Open .HEX details →Kwaliteit & waar op te letten
- Er is geen UF2-naar-HEX-commando in één stap; de ruwe
.binin het midden verliest het adres, dus u moet de flash-basisoffset opnieuw opgeven in de objcopy/srec-stap. - Als u de offset verkeerd instelt, plaatst de
.hexde code op het verkeerde geheugenadres, wat het apparaat onbruikbaar kan maken of kan voorkomen dat het opstart. - Sommige objcopy-versies hadden regressies bij het converteren van binair naar ihex; SRecord is het aanbevolen alternatief voor exacte offsets.
Veelgestelde vragen
Waarom twee stappen?
uf2conv.py voert alleen ruwe .bin en C-arrays uit, geen Intel HEX. U converteert UF2 naar .bin en gebruikt vervolgens objcopy of SRecord om de .hex te maken.Welke offset moet ik gebruiken?
--change-addresses of srec -offset.Waar haal ik objcopy vandaan?
arm-none-eabi-objcopy uit de GNU Arm Embedded toolchain.Wat als objcopy verkeerde adressen geeft?
srec_cat met een expliciete -offset, die de adresplaatsing van binair-naar-Intel-HEX betrouwbaar afhandelt.