Компания Bootlin опубликовала первый выпуск инструментария Snagboot, предназначенного для восстановления и перепрошивки встраиваемых устройств, переставших загружаться, например, из-за повреждения прошивки. Код Snagboot написан на языке Python и открыт под лицензией GPLv2.
Большинство встраиваемых платформ в случае повреждения прошивки предоставляют работающие через USB или UART интерфейсы для восстановления работы и передачи загрузочного образа, но данные интерфейсы специфичны для каждой платформы и требует применения для восстановления утилит, привязанных к продуктам отдельных производителей. Snagboot выступает аналогом специализированных, в основном проприетарных, утилит для восстановления и перепрошивки устройств, таких как STM32CubeProgrammer, SAM-BA ISP, UUU и sunxi-fel.
Snagboot рассчитан на работу с широким спектром плат и встраиваемых устройств, что избавляет разработчиков встраиваемых систем от необходимости изучения специфики использования разных утилит. Например, первый выпуск snagboot может применяться для восстановления устройств на базе SoC ST STM32MP1, Microchip SAMA5, NXP i.MX6/7/8, Texas Instruments AM335x, Allwinner SUNXI и Texas Instruments AM62x.
Инструментарий включает две утилиты для загрузки и перепрошивки:
- snagrecover – использует специфичные для различных производителей механизмы работы с кодом в ПЗУ для инициализации внешней оперативной памяти и запуска загрузчика U-Boot без изменения содержимого постоянной памяти.
- snagflash – взаимодействует с запущенным U-Boot для прошивки системного образа в неизменяемую память, используя DFU (Device Firmware Upgrad), UMS (USB Mass Storage) или Fastboot.