Перепрошивка bootloader STM32 (SKR MINI E3 V3) через ST-LINK V2 clone
Случилась у меня проблемка, что я решил перезаписать прошивку на плате SKR MINI E3 V3 и скомпилил чуть под другой чип и с большим объёмом bootloader'а,
что привело к тому, что плата не выходила на связь с Klipper и не была доступна по USB, после чего начались попытки разобраться сперва с Jlink клоном, но с ним как-то сразу не задалось на mac os, поэтому я взял ST-LINK, Pi4 и начал пробовать.
Питание подается на плату через micro-usb, поэтому 3.3v не подключено.
Как это выглядело в живую:
Нашёл гайд, где человек рассказывает, как можно записать,
но у меня был нюанс, что плата не реагировала на RST сигнал с STшки,
после чего я решил тыкать на RST на плате и ловить через st-info статус.
В итоге это сработало, и на ST-LINK загорелся синий сигнал,
а в терминале я увидел следующее:
pi@mars:~ $ st-info --probe --connect-under-reset Found 1 stlink programmers version: V2J29S7 serial: 630060001200003632574E4E flash: 524288 (pagesize: 2048) sram: 147456 chipid: 0x467 dev-type: STM32G0Bx_G0Cx
После чего надо быстро выполнить вот такую команду:
openocd -f interface/stlink.cfg -f target/stm32g0x.cfg \ -c "init; reset halt; stm32g0x unlock 0; reset halt; \ stm32g0x mass_erase 0; \ program SKR-MINI-E3-V3.0-bootloader.bin verify reset exit 0x08000000"
Эта команда затирает и записывает прошивку, после чего можно отключить ST-LINK и попробовать закинуть прошивку firmware.bin на SD карту.
Если на плате при вставлении моргнет диод в углу
Небольшой гайд, как поставить всё добро, чтобы завелось.
Из ещё нюансов — в гайде, который я вставлю сюда, говорится про версию 1.6.0,
но она просто не скомпилилась на Raspberry,
советую — ставить сразу 1.8.0, она актуальная.
sudo apt-get update cd /usr/local/lib sudo rm -rf all libstlink* rm ~/Repo/stlink/* rmdir ~/Repo/stlink # Установим зависимости sudo apt-get install gcc build-essential cmake libusb-1.0 libusb-1.0-0-dev libgtk-3-dev pandoc sudo apt-get install debhelper sudo apt-get install git sudo apt-get install gdb sudo apt-get install openocd # Клонируем stlink mkdir ~/Repo cd ~/Repo git clone -b v1.8.0 https://github.com/stlink-org/stlink.git cd stlink make clean make release cd build/Release && sudo make install # Обновим ldconfig sudo ldconfig # Скопируем udev-правила sudo cp ~/Repo/stlink/config/udev/rules.d/49-stlink* /etc/udev/rules.d sudo udevadm control --reload-rules sudo udevadm trigger # Добавим пользователя в группу plugdev (на всякий случай) sudo groupadd plugdev sudo adduser $USER plugdev # Настройки для modprobe sudo cp ~/Repo/stlink/config/modprobe.d/stlink_v1.conf /etc/modprobe.d # Перезапускаем систему reboot
Bootloader был взят от сюда:
https://github.com/GadgetAngel/BTT_SKR_13_14_14T_SD-DFU-Bootloader/tree/main/bootloader_bin/backed_up_original_bootloaders/SKR%20mini%20E3%20V3.0/Bootloader
Сам гайд:
https://github.com/GadgetAngel/BTT_SKR_13_14_14T_SD-DFU-Bootloader/blob/main/Guide%20st-flash%20Utility%20for%20ST-Link-V2-Clones%20With%20NRST%20for%20accessing%20STM32%20Processors%20using%20LINUX.pdf