Dlaczego konwertować UF2 na HEX?
UF2 opakowuje oprogramowanie układowe do flashowania metodą „przeciągnij i upuść”, podczas gdy .hex (Intel HEX) to format ASCII, który koduje zarówno dane, jak i ich adresy pamięci, używany przez wiele programatorów. Ponieważ uf2conv.py nie generuje Intel HEX, przechodzisz przez surowy plik .bin i pozwalasz objcopy (z pakietu GNU binutils) dodać rekordy adresowe. Jest to powszechne, gdy programator lub bootloader docelowy oczekuje rozszerzenia .hex zamiast UF2.
Jak przekonwertować UF2 na HEX
uf2conv.py, a następnie objcopy OPEN-SOURCE
Uruchom uf2conv.py firmware.uf2 -c -o firmware.bin, a następnie objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex, aby dodać offset pamięci flash.
objcopy (GNU binutils / arm-none-eabi) FREE
Użyj narzędzia arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Dodaj --change-addresses, aby umieścić dane pod właściwym adresem pamięci.
SRecord (srec_cat) OPEN-SOURCE
Jeśli obsługa offsetu w objcopy nie działa poprawnie, uruchom srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel, aby zbudować Intel HEX z precyzyjnym adresem.
O tych formatach
Plik UF2 to obraz oprogramowania układowego w formacie Microsoft USB Flashing Format, używany do programowania mikrokontrolerów przez USB. Nie otwiera się go w aplikacji - należy wprowadzić…
Otwórz szczegóły .UF2 →Plik .hex to plik Intel HEX: skompilowane oprogramowanie układowe (firmware) dla mikrokontrolera, takiego jak Arduino, AVR lub układ PIC, przechowywane jako rekordy tekstowe. Nie uruchamia…
Otwórz szczegóły .HEX →Jakość i na co uważać
- Nie ma jednego polecenia do konwersji UF2 na HEX; surowy plik
.binpo drodze traci adres, więc musisz ponownie podać bazowy offset flash w kroku objcopy/srec. - Błędne podanie offsetu spowoduje, że plik
.hexumieści kod pod niewłaściwym adresem pamięci, co może „uceglić” urządzenie lub uniemożliwić jego rozruch. - Niektóre wersje objcopy miały regresje przy konwersji z formatu binarnego na ihex; SRecord jest zalecaną alternatywą dla dokładnych offsetów.
Najczęściej zadawane pytania
Dlaczego dwa kroki?
uf2conv.py generuje tylko surowe pliki .bin i tablice C, a nie Intel HEX. Konwertujesz UF2 na .bin, a następnie używasz objcopy lub SRecord, aby utworzyć .hex.Jakiego offsetu użyć?
--change-addresses lub srec -offset.Skąd wziąć objcopy?
arm-none-eabi-objcopy z zestawu narzędzi GNU Arm Embedded.Co jeśli objcopy podaje błędne adresy?
srec_cat z pakietu SRecord z jawnym parametrem -offset, który niezawodnie obsługuje rozmieszczenie adresów przy konwersji z bin na Intel HEX.