bootlin (компанія, що спеціалізується на Linux для вбудованих систем), дав про це знати кілька днів тому запуск snagboot, призначений для відновлення та прошивки вбудованих пристроїв, які перестали завантажуватися, наприклад, через пошкодження прошивки.
snagboot Він народився тому, що більшість вбудованих платформ забезпечують інтерфейси USB або UART для відновлення та передачі завантажувальних образів у разі пошкодження прошивки, але ці інтерфейси є специфічні для кожної платформи і вимагають використання утиліт відновлення, пов’язаних із продуктами окремих виробників.
Щоб вирішити цю проблему, Bootlin із задоволенням випускає сьогодні новий інструмент відновлення й оновлення під назвою Snagboot, який має стати загальною заміною з відкритим вихідним кодом для інструментів від виробника, згаданих вище.
Про Snagboot
Аналогом спеціалізованих утиліт виступає Snagboot, переважно власники, для відновлення та оновлення пристроїв, таких як STM32CubeProgrammer, SAM-BA ISP, UUU та sunxi-fel.
snagboot призначений для роботи з широким спектром плат і вбудованих пристроїв, що позбавляє розробників вбудованих систем необхідності вивчати тонкощі використання різних утиліт.
Наприклад, першу версію snagboot можна використовувати для відновлення пристроїв на базі ST STM32MP1, Microchip SAMA5, NXP i.MX6/7/8, Texas Instruments AM335x, Allwinner SUNXI і Texas Instruments AM62x SoC.
Є деякі інструменти, які використовують переваги цієї функції, щоб запропонувати швидке відновлення та оновлення через USB, наприклад STM32CubeProgrammer, SAM-BA або UUU. Однак усі ці інструменти залежать від виробника, а це означає, що розробникам, які працюють на різних типах платформ, доводиться перемикатися між різними інструментами та вивчати, як користуватися кожним із них.
Згадується, що Snagboot містить дві утиліти для завантаження та оновлення:
- snagrecover- Використовує специфічні механізми коду ROM виробника для ініціалізації зовнішньої RAM і запуску завантажувача U-Boot без зміни вмісту постійної пам'яті.
- snagflash- Взаємодіє з запущеним U-Boot для перезавантаження образу системи в енергонезалежну пам’ять за допомогою DFU (Оновлення мікропрограми пристрою), UMS (USB Mass Storage) або Fastboot.
Для тих, кому цікаво щоб дізнатися більше про цеЗверніть увагу, що код Snagboot написаний на Python і є відкритим під ліцензією GPLv2.
Як встановити Snagboot на Linux?
Для тих, хто зацікавлений у можливості встановити Snagboot у своїй системі, вони повинні це знати Ви можете зробити це досить легко. Їм слід лише встановити необхідні залежності, щоб потім не мати проблем.
Перший — libhidapi, який можна встановити наступним чином (залежно від вашого дистрибутива). Їм просто потрібно відкрити термінал і ввести в ньому:
Debian / Ubuntu
sudo apt install libhidapi-hidraw0
Або ви також можете встановити:
sudo apt install libhidapi-libusb0
Arch Linux (хоча його також можна встановити з AUR, дивіться команду встановлення нижче)
sudo pacman -S hidapi
RHEL/Fedora
sudo dnf -y install hidapi
Після цього все, що вам потрібно зробити, це встановити Snagboot за допомогою pip, і для цього просто введіть таку команду:
python3 -m pip install --user snagboot
Нарешті, нам залишиться лише додати правила udev, щоб snagrecover мав доступ для читання та запису до USB-пристроїв цільових SoC:
snagrecover --udev > 80-snagboot.rules
sudo cp 80-snagboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
І готові, ви можете почати працювати з цим інструментом. У випадку користувачів Arch Linux, як згадувалося раніше, інструмент можна встановити безпосередньо з AUR, і для цього їм потрібно лише ввімкнути репозиторій і встановити майстер AUR.
Команда для встановлення інструменту:
yay -S snagboot
І останнє, але не менш важливе: для тих, хто вважає за краще компілювати самостійно, просто запустіть наступне:
git клон https://github.com/bootlin/snagboot.git
cd snagboot
./install.sh
Щодо посібників та інструкцій з використання, ви можете переглянути всю цю інформацію в наступна посилання.