まずは言い訳から…

間が開いてしまった。”mbedのデバッガはCMSIS-DAPがベースだよな。”とか考えてしまったので調べてみると、最新のOpenOCDはサポートしてることを知った。四苦八苦しながらOpenOCDのデバッグ環境を整えてみた。
ST-Linkでデバッグ構築を記述する予定だったのだが、OpenOCDについて記述する。

HIDデバイスライブラリをインストール

CMSIS-DAPはHIDデバイスなので必要なライブラリィをインストール

$>sudo apt-get install libtool libudev-dev autoconf libusb-dev libusb-1.0-0-dev
$>git clone http://github.com/signal11/hidapi.git
$>cd hidapi/
$>./bootstrap
$>./configure
$>make
$>sudo make install
$>sudo ln -s /usr/local/lib/libhidapi-hidraw.so.0 /usr/lib/libhidapi-hidraw.so.0

そしてCMSIS-DAPデバッガがユーザレベルで動くように権限変更

>$ sudo vim /etc/udev/rules.d/99-hidraw-permissions.rules

としてファイルを開き以下の内容を書き込む。

最新のOpenOCDをインストール

KERNEL==”hidraw*”, SUBSYSTEM==”hidraw”, MODE=”0664″, GROUP=”plugdev”

$>git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
$>cd openocd/
$>./bootstrap
$>./configure --enable-maintainer-mode --enable-cmsis-dap --enable-hidapi-libusb --enable-stlink
$>make
$sudo make install

そしてOpenOCDがサポートしているデバッガの権限を変更する。

>$sudo cp /usr/local/share/openocd/contrib/99-openocd.rules /etc/udev/rules.d/

これにて”/usr/local/bin”に、openocdがインストールされた。

>$ openocd --version
Open On-Chip Debugger 0.9.0-dev-00038-gae3baa9 (2014-06-06-20:29)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.sourceforge.net/doc/doxygen/bugs.html

Eclipseの設定

イントールしたARMのプラグインをインストールしたときに、OpenOCD用のプラグインもインストールした。
今回はこれを利用する。

設定である。まずはEclipseを立ち上げ、実行(R) -> デバッグの構成(B) を選び、GDB OpenOCD Debuggingをクリツクする。

デバックの構成1

デバックの構成1

デバッガの設定を以下のようにopenocdとGDBのパス設定をする。特別なところはターゲットボードを設定したぐらいだ。

デバックの構成2

デバックの構成2

これで、設定は終わりだ。デバックを開始するとプログラムがターゲットにダウンロードされデバッガが起動する。
これまではOpenOCD用のスクリプトを書く必要があったがプラグインが代行してくれる。簡単になった。

CMSIS-DAPデバッグ失敗…

次はCMSIS-DAPデバッグだ。ターゲットにmbed LPC1768をつないでやってみたのだけど、こんな感じでプログラムのターゲットへのダウンロードがいつまでも終わらず(始まらず?)、ハングアップ状態になってしまう。

エラーになる

エラーになる

う〜ん。動かない。CMSIS-DAPデバッグはもう少し待つ必要があるのかも…

結局のところSTM32だけ

残念ながらデバッグできるのはSTM32だけなのだ。それでもST-LinkユーティリティはST-Linkのファームウェアを更新すると認識しなくなったりと不具合があったが、OpenOCDは安定している。
こちらの環境の方がよいかもしれない。

これは、この前公開したmbed STM32VLDテストソースに少し手を加えてデバッグしてるところだ。快適である。

mbed STM32VLDをデバッグ

mbed STM32VLDをデバッグ