Что такое формат файла DFU?
Файлы .dfu хранят данные для обновления прошивки устройств, подключенных по USB, в соответствии со спецификацией USB Device Firmware Upgrade (USB-IF, редакция 1.1, 2004 г.). Формат в основном используется для встраиваемых систем и микроконтроллеров - STM32, Atmel, Nordic Semiconductor и аналогичных платформ, а не для потребительских устройств Apple, вопреки распространенному заблуждению.
Обновление прошивки устройства всегда несет в себе риск повреждения оборудования и должно выполняться с особой осторожностью. Прошивка - это программное обеспечение, встроенное в энергонезависимую память устройства в виде полноценной операционной системы или промежуточного уровня управления. Прошивку можно обновить с помощью файлов .dfu, передаваемых через USB-соединение. Поврежденная прошивка может привести к необратимому выходу устройства из строя. Большинство современных устройств используют меры безопасности против сбоев обновления: суффикс DFU добавляет контрольную сумму CRC32 к каждому файлу .dfu, что позволяет устройству проверить целостность перед применением обновления.
Файл .dfu состоит из полезной нагрузки прошивки, специфичной для конкретного устройства, за которой следует обязательный 16-байтовый суффикс DFU в самом конце файла. Суффикс кодирует ID производителя USB (vendor ID), ID продукта (product ID), версию спецификации DFU (bcdDFU) и CRC32. Компания STMicroelectronics расширяет базовый формат вариантом DfuSe, используемым в STM32CubeProgrammer.
Режим восстановления iOS DFU от Apple использует тот же протокол USB, но Apple распространяет прошивки в виде подписанных пакетов .ipsw, а не в виде «сырых» файлов .dfu.
Безопасность и защита
РИСК: MEDIUMФайлы DFU - это образы прошивок, предназначенные для записи в аппаратные устройства. Прошивка некорректной или вредоносной прошивки может навсегда превратить устройство в «кирпич» (плохая прошивка может повредить загрузчики). Прошивайте только файлы .dfu от официального производителя устройства. Сам файл инертен как данные; риск заключается в выполнении операции прошивки. Будьте осторожны с сайтами, распространяющими прошивки - всегда сверяйтесь с официальными источниками производителя и проверяйте CRC.
Детали формата
в двух словах- Apple iOS DFU mode - Устройства Apple поддерживают режим DFU (состояние USB-устройства), но прошивка Apple распространяется в виде подписанных файлов .ipsw, а не .dfu; .dfu не является расширением, специфичным для Apple.
Программы, открывающие файлы DFU
Технические подробности
глубокая спецификация| Расположение суффикса DFU | Последние 16 байт файла - сигнатура DFU является суффиксом, а не заголовком |
| Магические байты суффикса | Байты от EOF-7 до EOF-5: `0x55`, `0x46`, `0x44` - читается как `DFU` в обратном порядке (`UFD`) |
| Проверка целостности | CRC32 по всем байтам файла, кроме самого финального 4-байтового поля `dwCRC`; хранится в суффиксе DFU |
| Порядок байтов | Little-endian (поля суффикса DFU согласно спецификации USB-IF) |
| Версия спецификации DFU | Поле `bcdDFU` в суффиксе: `0x0100` = DFU 1.0 (1999); `0x011A` = DFU 1.1 (2004) |
| Полезная нагрузка прошивки | Специфичный для устройства двоичный код перед суффиксом - стандартных магических байтов нет; формат определяется производителем |
| ID производителя/продукта | Поля `idVendor` и `idProduct` в суффиксе идентифицируют целевой класс USB-устройства |
| STMicroelectronics DfuSe | Расширенный вариант: ASCII-префикс `DfuSe` в начале полезной нагрузки; используется STM32CubeProgrammer для прошивок STM32 |
| Отличие Apple | Восстановление iOS DFU использует тот же протокол USB, но прошивка распространяется в виде подписанных пакетов `.ipsw`, а не файлов `.dfu` |
| Сжатие | Отсутствует в базовой спецификации DFU |
| Основное использование | Встраиваемые микроконтроллеры (STM32, Atmel/AVR, Nordic Semiconductor) и другие USB-DFU-совместимые устройства |
| Открытая спецификация | Спецификация USB DFU Revision 1.1 (USB-IF, 2004) определяет суффикс; формат полезной нагрузки прошивки является проприетарным для производителя |
| Кроссплатформенные инструменты | Инструмент командной строки с открытым исходным кодом `dfu-util` поддерживает стандартные DFU-устройства на Windows, macOS и Linux |
| Выпущен | 1999 (USB DFU specification 1.0 from USB-IF; revision 1.1 published 2004) |
| Последняя версия | USB DFU Specification Revision 1.1 (2004, USB.org) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.usb.org |
Конвертации DFU
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DFU.