前回、STM32F446書込&デバッグを行いました。
そこで、ST-LINKについて疑問を持ったので、メモ代わりにまとめておこうと思います。
ST-LINKは、STマイクロエレクトロニクス社がSTM8&STM32マイコン向けに提供しているライタ&デバッガの呼称です。
ST-LINKのバージョン
以下の種類の違いがあります。
- ST-LINK
- ST-LINK/V2 OpenOCDが使用可能
- ST-LINK/V2-1 V2の機能に、仮想シリアルポート機能とUSBマスストレージ機能が追加
- ST-LINK/V3 USB速度が最大480Mbps、SPI/I2C/CAN/GPIOのブリッジ機能が追加
商品ラインナップ
STマイクロエレクトロニクス社製
- ST-LINK/V2、ST-LINK/V2-ISOL(絶縁タイプ)
- STLINK-V3SET
- STLINK-V3MINI
- STLINK-V3MODS
各社
- ST-Link V2 プログラミング ユニット amazonで最安523円
デバッガ接続とソフトウェアシステム図
パソコンの内部でのソフトウェア間でのデータやり取りです。
マニュアルに図がないので、おそらくこんな感じではないかという図になります。
デバッガとターゲットマイコンの接続
JTAGの場合
以下のようにターゲットマイコンと接続します。
- TDI (Test Data In)
- TDO (Test Data Out) デイジーチェーン接続時に次のデバイスに接続
- TCK (Test Clock)
- TMS (Test Mode Select)
- TRST (Test Reset) オプション
- GND
SWDの場合
SWDはSerial Wire Debuggingの略です。以下のように接続します。
- SWCLK (Serial Wire Clock)
- SWDIO (Serial Wire Data I/O)
- RESET:ソフトリセットがあるので不要。Standbyモードなど低消費電力にするとハードリセットが必要
- GND
JTAGと配線を共有できると書かれており、以下のように書かれた資料を見つけました。
SWDは、ARM社が定めたJTAGと共存可能な2線式のデバッグインタフェースです。JTAGとの互換性はなく、端子を共有しているだけにすぎません。特別なパターンをTMSに送ることでJTAGからSWDに切り替わります。
SWDのプロトコルは、ADI(ARM Debug Interface)v5とCoreSight用に特化されていて、ICの中に作られたデバッグポートやアクセスポートを通じて、レジスタに32bitの値を書き込んだり読み出したりする目的に特化されています。
デバッグ用のレジスタの機能はCoreSightの規格で定められていて、SWDはその物理層を担っているにすぎません。
SWDのプロトコルにはバージョン1とバージョン2があります。バージョン1では、デバッグアダプタとターゲットは1対1で接続しなければなりませんが、バージョン2では複数のターゲットをスター配線できるようになりました。このような接続をマルチドロップといいます。
引用:https://happytech.jp/wordpress/tag/st-link-v2-1/
SWIMの場合
SWIMは、Single-Wire Interface Moduleの略で、以下のように接続します。
- SWIM
- RESET:ソフトリセットがあるので不要。Standbyモードなど低消費電力にするとハードリセットが必要
- GND
デバッグで使用するソフトウェア
こういったソフトウェアを介して、デバッグをアプリケーションで行えるようです。
参考URL:
https://www.st.com/ja/development-tools/st-link-v2.html
http://blog.livedoor.jp/prittyparakeet/archives/1070961147.html
https://happytech.jp/wordpress/tag/st-link-v2-1/
http://akizukidenshi.com/catalog/g/gM-14361/
https://denshikousakusenka.jimdofree.com/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89/stm32/st-link/
https://blog.st.com/stlink-v3set-in-circuit-debugger-programmer/
http://www.besttechnology.co.jp/modules/knowledge/?OpenOCD
https://ja.wikipedia.org/wiki/JTAG
http://www.tokudenkairo.co.jp/jtag/adv2018/08.php
http://www.gnu.org/software/gdb/
https://www.segger.com/downloads/jlink/
http://openocd.org/
http://idken.net/posts/2017-08-31-jlink/