ST-Linkそのままでも一応はいろいろ出来るのだけど、ツールがプロプラだったりして面倒臭いことが多いので、OpenOCDを使う決心をする。WindowsでIARのツールとかでやるんだったら、そういったことをする必要はないのだけど、「不自由なソフトウェア」はいろいろと不自由だ。
「別に割り切ればいいじゃん」的なことも思わないではないのだが、IARの統合環境とか使ってても、幸せになれる気がしない。そこで、環境をOpenOCDを使ったものにする。
STM32VLDiscoveryのST-LinkはV1なので、
は使えない。STM32F3DiscoveryのST-LinkはV2なので、これを使うこと。
STM32VLDiscoveryの場合は、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は使わんけど。