STM32VLDiscovoryでOpenOCDを使うメモ

ST-Linkそのままでも一応はいろいろ出来るのだけど、ツールがプロプラだったりして面倒臭いことが多いので、OpenOCDを使う決心をする。WindowsでIARのツールとかでやるんだったら、そういったことをする必要はないのだけど、「不自由なソフトウェア」はいろいろと不自由だ。

「別に割り切ればいいじゃん」的なことも思わないではないのだが、IARの統合環境とか使ってても、幸せになれる気がしない。そこで、環境をOpenOCDを使ったものにする。

STM32VLDiscoveryのST-LinkはV1なので、

STSW-LINK003

は使えない。STM32F3DiscoveryのST-LinkはV2なので、これを使うこと。

STM32VLDiscoveryの場合は、zadigを使う。

zadig

こいつを起動して、ドライバをWinUSBにする。

zadigでデバイス一覧を表示させるには、

Options > List All Devices

とやると、一覧が作られる。ここで「覚えのあるデバイス」を選ぶこと。だいたいは「STM32 STLink」みたいな名前になっているはず。

Install Driver(Reinstall Driver)を選ぶと、ドライバを入れてくれる。

これに成功すれば、OpenOCDを起動する時に、

> openocd -s tcl -f board/stm32vldiscovery.cfg

とかやれば、特にエラーもなく動いてくれる。

メッセージで、

Info: This adapter doesn't support configurable speed

とか出て、「エラーか?」と怯むが、別にエラーでもなんでもないので、慌てる必要はない。

現時点でのOpenOCDはVer 0.8が最新。あっちこっちのウェブの情報では0.5とか0.6で書かれていて、うまく動かなかった時に「もしかしてOpenOCDが新し過ぎる?」とか心配になるが、別にそんなことはなく0.8でも問題なく動く。動かないのは一重にLibUSBの問題。正しいものが入っていれば、ST-LinkがV1だろうがV2だろうが、問題ない(もちろん合ってないとダメ)。

リモートデバッグに必要なポートは、特に何もしなくても開いている模様。気になる向きは、

telnet_port 4444
gdb_port 3333

とか指定しておいても良いが、別になくても良いようだ。

Eclipse等で使うためには、以下のコマンドを定義しておくと良いらしい。

proc halt_mpu { } {
    init
    reset halt
}

適当なファイルに書いて、OpenOCD起動時に-fで指定する。まー、Eclipseは使わんけど。

参考

ちょっと工業系が通りますよ @ ウィキ STM32開発環境構築 > ドライバのインストール