====== ST-Link - Der STM32 Notanker ====== ===== YouTube Video #102 ===== {{youtube>wDN6lhUq3wA?half}} \\ ===== STM32 St-Link Typen ===== * V2 * V2.1 (Clone) * Läuft nicht immer unter Windows! * V3 MINIE ===== ST-Link Pins ===== ^ Funktion ^ ST-Link 2.x Clone ^ ST-Link V3Minie ^ Notes ^ Kabel ^ | 3,3V | 3V3 (nicht empfohlen) | - | | **Rot** | | GND | GND | GND | | **Schwarz** | | SWDIO | (SW)DIO | T_J**TMS**/T_SWDIO (Pin 3) | SWD data input/output | **Blau** | | SWCLK | (SW)CLK | T_J**CLK**/T_SWCLK (Pin 4) | SWD Clock | **Gelb** | | NRST | RST | T_N**RST** (Pin 9) | Reset of targets STM32 | **Grau** | | VDD-Target | - | T_VCC (Pin10) | VDD von der Platine! \\ Input Pin! **Nur nötig beim ST-Link V3 Adapter!** | **Orange** | ===== Verbindungen ===== * beim V2 reicht DIO, CLK, GND * Beim V3 **muss** die Spannung des Board mit angeschlossen werden \\ Hinweis: Das ist **NICHT** die Versorgung für das Board! * Board muss extra mit Strom versorgt werden (USB oder 12/24v) -> ggf. auf Jumper achten! ===== stlink Tools ===== * ''sudo apt install gcc build-essential cmake libusb-1.0-0 libusb-1.0-0-dev libgtk-3-dev pandoc -y'' * ''cd ~ && mkdir build -p && cd build'' * ''git clone https://github.com/stlink-org/stlink.git'' * ''cd stlink'' * ''make clean && make release'' * ''sudo make install'' * **Problem** : ''st-flash: error while loading shared libraries: libstlink.so.1'' \\ https://github.com/stlink-org/stlink/issues/478 \\ **Lösung** : ''sudo ldconfig'' ===== Flash lesen ===== * ''st-info %%--%%probe %%--%%connect-under-reset'' * Flashgröße ermitteln anhand der Ausgabe vom vorherigen Befehl \\ Bsp: flash: 32768 (pagesize: 1024) 32768 / 1024 = 32k * ''st-flash %%--%%connect-under-reset read firmware.bin 0x8000000 32k'' ===== Klipper flashen ===== * Beispiel 32K Application Offset * ''st-flash %%--%%connect-under-reset erase'' * ''st-flash %%--%%connect-under-reset write katapult.bin 0x8000000'' * ''st-flash %%--%%connect-under-reset write klipper.bin 0x8008000'' * Beispiel kein Bootloader * ''st-flash %%--%%connect-under-reset erase'' * ''st-flash %%--%%connect-under-reset write klipper.bin 0x8000000'' ^ Application Offset ^ Bytes ^ Hex ^ Startadresse ^ Kommando ^ | Kein Bootloader | - | | 0x8000000 | ''st-flash --connect-under-reset write firmware.bin 0x8000000'' | | 16 Kib | 16 * 1024 = 16.384 | 4000h | 0x8004000 | ''st-flash --connect-under-reset write firmware.bin 0x8004000'' | | 28 Kib | 28 * 1024 = 28.672 | 7000h | 0x8007000 | ''st-flash --connect-under-reset write firmware.bin 0x8007000'' | | 32 KiB | 32 * 1024 = 32.768 | 8000h | 0x8008000 | ''st-flash --connect-under-reset write firmware.bin 0x8008000'' | | 48 Kib | 48 * 1024 = 49.152 | C000h | 0x800C000 | ''st-flash --connect-under-reset write firmware.bin 0x800C000'' | | 64 Kib | 64 * 1024 = 65.536 | 1 0000h | 0x8010000 | ''st-flash --connect-under-reset write firmware.bin 0x8010000'' | | 128 Kib | 128 * 1024 = 131.072 | 2 0000h | 0x8020000 | ''st-flash --connect-under-reset write firmware.bin 0x8020000'' | ===== Board Check ===== * ''dmesg'' * ''ls -lR /dev/ | grep -v '\%%->%%\s../tty' | grep -e 'tty%%[[:%%alpha%%:]]%%' -e serial'' * ''~/klipper $ ../klippy-env/bin/python ./klippy/console.py /dev/ttyACM0'' ===== bin2hex, hex2bin ===== * Bin 2 Hex : ''objcopy %%--%%input-target=binary %%--%%output-target=ihex test.bin test.hex'' * Hex 2 Bin : ''objcopy %%--%%input-target=ihex %%--%%output-target=binary test.hex test.bin'' ===== Bootloader extrahieren ===== * ''Bootloader offset'' ermitteln * Offset umrechnen in HEX \\ Bsp: Bootloader offset 8k -> 8k * 1024 = 0x2000h * Datei im Hexeditor (HxD https://mh-nexus.de/de/hxd/) laden und alles nach der Adresse löschen * Datei speichern und fertig ===== Original Bootloader ===== * https://github.com/GadgetAngel/BTT_SKR_13_14_14T_SD-DFU-Bootloader/tree/main