Leírás
Ott van az asztalon a frissen összerakott STM32 panel. Tápot kap, a program még sehol, USB bootloader pedig nincs rajta. Ilyenkor kerül elő az ST-Link V2 (STM8/STM32) programozó-debugger: USB-n kapcsolódik a számítógéphez, a mikrokontroller felé pedig STM32 esetén SWD, STM8 esetén SWIM interfészen dolgozik.
STM32-nél a használata jóval többről szólhat egy .hex vagy .bin fájl feltöltésénél. Megfelelő fejlesztőkörnyezetből megállítható a program egy töréspontnál, lépésenként végig lehet menni a kódon, közben pedig nézhetők a változók, regiszterek és memóriaértékek. Amikor egy program “valahol itt romlik el”, ez sokkal többet mond, mint néhány soros kiírás.
A kompakt fémház egyik végén közvetlen USB-A csatlakozó van, a célpanel felőli jelek pedig a házon jelölve találhatók. A csomaghoz 4 eres anya-anya szalagkábel tartozik, így például tüskesoros fejlesztőpanelekhez rögtön használható.
A 12 Mbit/s adat az USB Full-Speed kapcsolat névleges sebessége. A tényleges programfeltöltés tempóját emellett az SWD vagy SWIM kapcsolat, a cél-mikrokontroller és annak Flash memóriája is meghatározza.
Mire használjuk a műhelyasztalon?
Egy BluePill jó példa. Elkészült a program STM32CubeIDE-ben vagy más fejlesztőkörnyezetben, most pedig fel kell tölteni az STM32F103-ra. A panel SWDIO pontja megy az SWDIO-ra, az SWCLK az SWCLK-ra, a föld pedig a GND-re.
Itt az azonos nevű jeleket kötjük össze. Ez elsőre apróságnak tűnik, de UART után könnyű reflexből keresztbekötésben gondolkodni. SWD-nél SWDIO-SWDIO és SWCLK-SWCLK a helyes irány.
A célpanelnek közben stabil tápellátás kell. Saját tápról működő panelnél a programozó és a céláramkör földjét közösíteni kell, különben az SWD jeleknek nincs közös referenciafeszültségük.
Ha a kapcsolat felépült, ugyanazon a néhány vezetéken lehet firmware-t írni és hibát keresni. Nem kell külön soros bootloader csak azért, hogy új program kerüljön a Flash memóriába.
Programfeltöltés és debug – ugyanaz a kábel, más munka
Programozáskor a cél egyszerű: elkészült a firmware, kerüljön be a mikrokontroller Flash memóriájába. Ez lehet fejlesztés közbeni feltöltés, kész .hex vagy .bin fájl beírása, illetve egy már összeállított panel felprogramozása.
Debugnál ennél mélyebbre lehet menni. Tegyél például töréspontot arra a sorra, ahol egy állapotgépnek át kellene váltania. Amikor a processzor odaér, megállítható a futás, megnézhető egy változó tartalma, majd soronként tovább lehet lépni.
Ez időzítési hibánál, rossz perifériabeállításnál vagy egy váratlan programágnál sokszor gyorsabban elvezet a hibához, mint amikor újabb és újabb printf() sorokat rakunk a programba.
STM8-nál ugyanez a programozó SWIM interfészt használ. A kapcsolat és a fejlesztői eszközök mások, ezért STM8 bekötésnél mindig a SWIM jelöléseket kell követni.
Első STM32 bekötés
A legegyszerűbb SWD összeállításnál a következő jeleket keresd a panelen:
- SWDIO;
- SWCLK;
- GND;
- a célpanel megfelelő tápellátása.
A programozó házán lévő jelöléseket érdemes közvetlenül leolvasni. A kábelek színe helyett mindig a felirat legyen a támpont, mert a különböző szalagkábeleknél nincs olyan színkód, amelyre biztosan lehetne építeni.
Ha saját NYÁK készül, már a tervezéskor célszerű kivezetni legalább az SWDIO, SWCLK és GND pontokat. Egy kis tüskesor vagy tesztpont később rengeteg időt spórol, főleg akkor, amikor a firmware még nincs kész.
Normál SWD programozásnál a debug interfész felől érjük el az STM32-t. Emiatt a BOOT0 állítgatása a szokásos ST-Linkes feltöltésnek nem központi része.
“No STM32 target found” – itt érdemes végigmenni a láncon
Ez az a hibaüzenet, amellyel előbb-utóbb szinte minden STM32-as asztalon találkozunk. Ilyenkor célszerű sorrendben haladni.
Először nézd meg, hogy a célpanel valóban kap-e tápot. Utána jöhet a közös GND, majd az SWDIO és SWCLK vezeték. Ha valamelyik vezeték egy sorral arrébb került a tüskesoron, a programozó USB oldala még tökéletesen működhet, miközben a célprocesszort egyáltalán nem látja.
A következő lépés a debug órajel csökkentése lehet. Hosszabb vezeték, zajos próbapad vagy lassabb célrendszer mellett egy kisebb SWD frekvencia sokszor stabilabb kapcsolatot ad.
Olyan firmware esetén, amely indulás után gyorsan átállítja a debug lábakat vagy problémás állapotba viszi a processzort, a reset alatti kapcsolódás is hasznos lehet, amennyiben a használt programozókivitel és a bekötés kezeli az NRST jelet.
A célpanel tápját külön kezeld
A kompakt ST-Link változatokon gyakran található tápfeszültséghez kapcsolódó kivezetés, de a T66266 biztos kimeneti terhelhetősége nincs megadva.
Egy LED-del és mikrokontrollerrel szerelt apró próbapanel fogyasztása és egy kijelzőt, relét vagy rádiós modult is hajtó fejlesztőpanel terhelése teljesen más nagyságrend lehet. Műhelyben ezért tisztább megoldás, ha a célpanel megkapja a saját, megfelelően méretezett tápját, az ST-Link pedig a programozási és debug kapcsolatot végzi.
Saját tápos célpanelnél a GND-k közösítése továbbra is szükséges az SWD jelátvitelhez.
Hol nélkülözhetetlen?
- BluePill STM32F103 fejlesztőpanel programozásánál.
- Saját tervezésű STM32 panel első firmware-ének feltöltésénél.
- STM32 program futásának töréspontos hibakeresésénél.
- Regiszterek és változók vizsgálatánál fejlesztés közben.
- Bootloader nélküli STM32 céláramkör programozásánál.
- STM8 mikrovezérlők SWIM programozásánál.
- Olyan beágyazott projektben, ahol soros kiírás mellett mélyebb hibakeresésre is szükség van.
Mire kell figyelni beüzemeléskor?
| Mire figyelj? | Mit okoz? |
|---|---|
| Kap tápot a cél-mikrokontroller? | Táp nélkül az ST-Link USB oldala működhet, a célprocesszor mégsem jelenik meg. |
| Közös a GND? | Közös referencia nélkül az SWD jelek nem értelmezhetők megbízhatóan. |
| SWDIO az SWDIO-ra került? | Az adatvonal hibás bekötésénél nem épül fel a kapcsolat. |
| SWCLK az SWCLK-ra került? | Az órajel hibás bekötése ugyanúgy “target not found” hibához vezethet. |
| Túl magas az SWD órajel? | Hosszabb vagy zajos bekötésnél kisebb debug frekvencia stabilabb lehet. |
| STM8-at programozol? | STM8 esetén SWIM kapcsolatot kell használni az STM32-es SWD helyett. |
| A programozóról táplálnád az egész panelt? | A T66266 táp-kimenetének biztos terhelhetősége nincs megadva. |
USB 12 Mbit/s – mit jelent használat közben?
A programozó USB 2.0 Full-Speed eszközként legfeljebb 12 Mbit/s névleges USB adatsebességet használ. Ettől egy 256 kB-os Flash tartalom feltöltése nem válik automatikusan 12 Mbit/s sebességű műveletté. A PC és a programozó közötti USB csak az egyik szakasz. Ezután jön az SWD vagy SWIM kapcsolat, majd maga a Flash törlése és írása a célprocesszorban. Fejlesztés közben ezért sokkal fontosabb a stabil kapcsolat, mint maga a 12 Mbit/s adat. Egy bizonytalan próbapadi SWD bekötésnél inkább vegyél vissza a debug órajelből.
STM8 esetén másik ajtón megyünk be
STM32 oldalon SWD-ről beszélünk, STM8-nál SWIM-ről. Ez a programozó mindkét családhoz használható, a vezetékeket viszont az adott interfész szerint kell bekötni. STM8-nál a SWIM adatvonal, GND és a céláramkör megfelelő jelei számítanak. A régebbi STM8 fejlesztési környezetek között az STVD és STVP is használ ST-Link kapcsolatot, illetve IAR környezetből is végezhető fejlesztés és hibakeresés.
Szoftveroldalon mire számíts?
A programozóhoz biztosan megadott környezetek között szerepel az ST-LINK Utility 2.0 vagy újabb, STVD 2 vagy újabb, STVP 3.2.3 vagy újabb, IAR EWARM 6.20 vagy újabb, IAR EWSTM8 1.30 vagy újabb és Keil RVMDK 4.21 vagy újabb.
Mai STM32 fejlesztésnél a STM32CubeIDE és STM32CubeProgrammer a kézenfekvő ST eszközlánc. Az ST-LINK/V2 mint platform támogatott ezekben, a kompakt V2-kompatibilis programozók belső firmware-e viszont gyártási sorozatonként eltérhet. Emiatt a legfrissebb CubeProgrammerrel való biztos együttműködést ennél a konkrét kompakt változatnál nem érdemes automatikusnak venni.
Ha a számítógép USB-n már látja a programozót, de a fejlesztőkörnyezet nem, az USB-driver és a programozó firmware-kompatibilitása külön hibakeresési pont. Ha maga az ST-Link megjelenik, de a célprocesszor hiányzik, akkor már az SWD bekötés, tápellátás és debug beállítás felé érdemes továbbmenni.
Amikor más programozó kell
- Dokumentált JTAG csatlakozást igénylő célhardverhez olyan debugger szükséges, amelynél a teljes JTAG kivezetés biztosan rendelkezésre áll.
- Újabb STM32 családok rendszeres fejlesztéséhez és nagyobb debug sebességhez egy aktuális STLINK-V3 eszköz kényelmesebb alap.
- Elektromosan lebegő vagy veszélyes potenciálon lévő céláramkörhöz galvanikusan leválasztott debug interfészt kell használni.
- Nagy sorozatú gyártási programozáshoz olyan eszköz célszerű, amelynek firmware-verziója, sorozatszáma és szoftvertámogatása gyártási környezetre dokumentált.
- Olyan munkához, ahol SWO trace vagy speciális debug funkció kötelező, ezek támogatását külön igazolt debuggerrel érdemes megoldani.
Műhelytipp
Ha saját STM32 panel készül, az SWD pontokat már a NYÁK tervezésekor tedd könnyen elérhető helyre. SWDIO, SWCLK és GND három apró tesztpontként is elfér, mégis sokkal kényelmesebb lesz az első életre keltés.
Az első programozást érdemes egyszerű firmware-rel kezdeni. Egy villogó LED vagy egy könnyen ellenőrizhető GPIO már megmutatja, hogy a táp, az órajel, a programozás és a processzor alapvetően működik.
Ha ez rendben van, utána jöhet a nagyobb alkalmazás és a debugger. Így amikor később megáll a program, már nem egyszerre kell a NYÁK hibáját, az ST-Link bekötést és a teljes firmware-t keresni.
Műszaki jellemzők
| Jellemző | Érték |
|---|---|
| Terméktípus: | kompakt STM8/STM32 programozó-debugger |
| Kompatibilitási család: | ST-Link V2 |
| STM32 interfész: | SWD |
| STM8 interfész: | SWIM |
| STM32 funkció: | programozás és hibakeresés |
| STM8 funkció: | programozás és hibakeresés |
| PC csatlakozó: | USB-A, közvetlen |
| USB interfész: | USB 2.0 Full-Speed |
| USB névleges maximális sebesség: | 12 Mbit/s |
| Firmware frissítés: | belső frissítési lehetőség megadva, konkrét firmware-kompatibilitás az ST-Link szoftverben |
| Operációs rendszerek: | Windows / Linux / macOS támogatás |
| Működési hőmérséklet: | -40…+85 °C |
Támogatott szoftverek
- ST – LINK Utility 2.0 és újabb
- STVD 2 és újabb
- STVP 3.2.3 és újabb
- IAR EWARM V6.20 és újabb
- IAR EWSTM8 V1.30 és újabb
- KEIL RVMDK V4.21 és újabb
Dokumentáció
- ST-LINK/V2 felhasználói kézikönyv STMicroelectronics
- STM32CubeProgrammer ST-LINK telepítés STMicroelectronics
- ST-LINK USB driver STSW-LINK009 STMicroelectronics
Csomag
- 1 db ST-Link V2 (STM8/STM32) programozó-debugger
- 1 db 4 eres anya-anya szalagkábel













villanyos –
A ST-Link firmware-t NE UPDATE-eld!
Nagyon jól működik a régi firmware-rrel.
Németh Krisztián –
Az eszköz tökéletesen működik.