マイクロマウス研修(のり)マウス自作研修

マイクロマウス研修(のり)[17]ライタ&デバッガST-LINKの話

マイクロマウス研修(のり)

記事一覧 のり マイクロマウス研修

前回、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マイクロエレクトロニクス社製

各社

デバッガ接続とソフトウェアシステム図

パソコンの内部でのソフトウェア間でのデータやり取りです。
マニュアルに図がないので、おそらくこんな感じではないかという図になります。

デバッガとターゲットマイコンの接続

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)
  • SWO (Serial Wire Output):デバッグに必須ではないがprintf関数や各種データが取得できるようになるので便利
  • 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

 

デバッグで使用するソフトウェア

こういったソフトウェアを介して、デバッグをアプリケーションで行えるようです。

通信規格(プロトコル)

ARM社が定めた、Cortex-M搭載CPUに対して統一的な方法でハードウェアにアクセスできるインタフェース規格として、CMSIS(シーエムシス)というのがあります。

さらに、ターゲットのDAP(デバッグアクセスポート)への標準化されたアクセス方法を提供するものとしてCMSIS-DAPがあります。ホストコンピュータとUSBで接続し、ターゲットマイコンとはJTAG/SWDで接続するというJTAGエミュレータ(デバッガ)の標準的な規格、またはそれを実現するためのソフトウェアになります。

統合開発環境(IDE)にCMSIS-DAPのプラグインがあれば、Cortex-Mマイコンを手軽にデバッグできるようになります。

CorexのARMコアを実装した各マイコンメーカやサードパーティーは、このプロトコルに対応したハードウェア&ソフトウェアのデバッガを提供してくれています。

オープンソースプロジェクトとして有名なのはDAPLinkです。

Arm Mbed DAPLinkは、Arm Cortex CPU上で動作するアプリケーションソフトウェアのプログラミングとデバッグを可能にするオープンソースのソフトウェアプロジェクトです。一般的にインターフェイスファームウェアと呼ばれるDAPLinkは、アプリケーションMCUのSWDまたはJTAGポートに接続されたセカンダリMCUで動作します。この構成は、ほぼすべての開発ボードはこの構成になっています。開発用ターゲットMCUとCPUデバッグアクセスポートの間にブリッジを作成します。 DAPLinkを使用すると、ドラッグアンドドロッププログラミング、シリアルポート、CMSIS-DAPベースのデバッグが可能になります。

引用:DAPLink ブートローダのアップデート

LPC11U35ボードで自作してみるのも面白いかもしれません。

参考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/
http://rx.tokudenkairo.co.jp/cmsisdap/cmsisdap.html
https://blueeyes.sakura.ne.jp/2017/10/20/604/
https://lowreal.net/2020/10/31/1
https://blog.mmaakkyyii.com/posts/post22/

タイトルとURLをコピーしました