Зачем конвертировать UF2 в HEX?
UF2 упаковывает прошивку для прошивки методом drag-and-drop, в то время как .hex (Intel HEX) - это ASCII-формат, который кодирует как данные, так и их адреса в памяти, используемый многими прошивальщиками и программаторами. Поскольку uf2conv.py не выдает Intel HEX, вы направляете данные через сырой .bin и позволяете objcopy (из GNU binutils) добавить записи адресов. Это обычно требуется, когда программатор или загрузчик целевого устройства ожидает .hex, а не UF2.
Способы конвертации UF2 в HEX
uf2conv.py затем objcopy OPEN-SOURCE
Запустите uf2conv.py firmware.uf2 -c -o firmware.bin, затем objcopy -I binary -O ihex --change-addresses 0x2000 firmware.bin firmware.hex, чтобы добавить смещение флэш-памяти.
objcopy (GNU binutils / arm-none-eabi) FREE
Используйте инструментарий arm-none-eabi-objcopy -I binary -O ihex firmware.bin firmware.hex. Добавьте --change-addresses, чтобы разместить данные по правильному адресу памяти.
SRecord (srec_cat) OPEN-SOURCE
Если обработка смещения в objcopy работает некорректно, запустите srec_cat firmware.bin -binary -offset 0x2000 -o firmware.hex -intel для создания Intel HEX с точным адресом.
Об этих форматах
Файл UF2 - это образ прошивки в формате Microsoft USB Flashing Format, используемый для программирования плат микроконтроллеров через USB. Его не открывают в приложении - вы переводите…
Открыть детали .UF2 →Файл .hex - это файл Intel HEX: скомпилированная прошивка для микроконтроллера, такого как Arduino, AVR или PIC, хранящаяся в виде текстовых записей. Вы не запускаете его на ПК - вы…
Открыть детали .HEX →Качество и на что обратить внимание
- Не существует команды для прямой конвертации UF2 в HEX; промежуточный
.binтеряет адрес, поэтому вы должны повторно указать базовое смещение флэш-памяти на этапе objcopy/srec. - Ошибка в смещении приведет к тому, что
.hexразместит код по неверному адресу памяти, что может превратить устройство в «кирпич» или привести к сбою загрузки. - В некоторых версиях objcopy были регрессии при конвертации binary в ihex; SRecord является рекомендуемой альтернативой для точных смещений.
Часто задаваемые вопросы
Почему два шага?
uf2conv.py выводит только сырые .bin и массивы C, но не Intel HEX. Вы конвертируете UF2 в .bin, а затем используете objcopy или SRecord для создания .hex.Какое смещение использовать?
--change-addresses или srec -offset.Где взять objcopy?
arm-none-eabi-objcopy из инструментария GNU Arm Embedded.Что если objcopy выдает неверные адреса?
srec_cat из SRecord с явным -offset, который надежно обрабатывает размещение адресов при переходе из binary в Intel HEX.