エンジニア「くがとしお」のレベル上げ

エンジニアとして色々なことができるように資格取得、電子工作、アプリ開発を頑張ります。

ラズパイにオープンソースの無料デバッグ環境を構築してmbedボードをデバッグ

      2016/04/26

DSC01889

概要

ラズベリーパイにCMSIS-DAP対応のOpenOCDをインストールして
CMSIS-DAPを搭載したmbedボードをラズパイからデバッグしてみました。
ラズパイにデバッグ環境を構築することによって、以下のようなメリットがあります。
・ロボットなどの動体のデバッグが可能
・VNCやSSHを使用することで離れたから場所からリモートデバッグが可能
・VNCやSSHを使用することでローカルPCにインストールせずにデバッグが可能
 

スポンサードリンク

その前に…

CMSIS-DAP

CMSIS-DAPとは、ARMコアへのDAP(デバッグアクセスポート)への標準化された
アクセス方法を提供するものです。
ターゲットをホストコンピュータとUSBで接続することで、JTAGエミュレータを使用せずに
デバッグすることができます。

 

 

OpenOCD

Open On-Chip Debuggerの略。
OpenOCDとは、GDBもしくはtclスクリプトによってARM、MIPS、その他コアへの
JTAGアクセスを提供するオープンソースソフトウェアです。

OpenOCDがCMSIS-DAP対応したため、CMSIS-DAPを搭載しているmbedボードなどは
JTAGエミュレータを使用せずにデバッグできます。

 

環境構築

依存ツールのインストール

OpenOCDのために必要なツールを下記コマンドでインストールします。

 

HIDAPIライブラリのインストール

HID APIのソースをgitで取得します。
gitがインストールされていない場合は、gitをインストールしてください。
sudo apt-get install git

作成されたディレクトリに移動後、makefileを作成します。

 

コンパイル等の処理をします。

 

インストールします。
/usr/local/libにHIDAPIライブラリがインストールされます。

 

HIDAPIライブラリのパスを追加します。

 

PATHを追加します。
nanoは、Ctrl+X後にYで保存できます。



共有ライブラリのキャッシュを更新します。

 

インストール後は、ソースディレクトリは不要なため削除します。

 

OpenOCDのインストール

OpenOCDのソースをgitで取得します。

 

作成されたディレクトリに移動後、makefileを作成します。

 

コンパイル等の処理をします。

 

インストールします。
/usr/local/bin/openocdにインストールされます。
設定ファイルは、/usr/local/share/openocd/scriptsに作成されます。

 

インストール後は、ソースディレクトリは不要なため削除します。

 

UDEVルールの追加

OpenOCDをIDE等で使用するためにUDEVルールを設定しておきます。

 

まずは、USBのVendorIDとProductIDを調べます。

 

この例では、以下のようになります。
新規にファイルを作成します。

 

以下のように作成します。

 

テスト

OpenOCDの実行

下記コマンドでOpenOCDを起動します。

 

接続に成功すると、以下のようなメッセージが表示されます。

スクリーンショット 2016-04-02 10.29.46

 

telnetから制御

telnetからOpenOCDを制御できます。
telnetがインストールされていない場合は、telnetをインストールしてください。
sudo apt-get install telnet

スクリーンショット 2016-04-02 10.31.13

 

コマンドは以下のようなものがあります。

コマンド 説明
targets ターゲットの情報を表示します
halt ターゲットプログラムを停止させます
resume ターゲットプログラムを再開させます

コマンド詳細は下記をご覧ください。
http://openocd.org/doc/html/General-Commands.html

 

GDBから制御

下記コマンドでgdbから制御できます。
gdbがインストールされていない場合は、gdbをインストールしてください。
sudo apt-get install gdb-arm-none-eabi

 

コマンドは以下のようなものがあります。

コマンド 説明
info reg レジスタを表示します
load ターゲットにプログラムをロードします
list ブレークしている行の周辺を表示します

コマンド詳細は下記をご覧ください。(よく使用するコマンド)
http://www.kumikomi.net/interface/sample/201503/if03_100.pdf
※ help allで全コマンドが表示されます。

スクリーンショット 2016-04-02 12.20.42

 

「くがとしお」的 まとめ

無料でARMコアのデバッグ環境を構築できました。
ロボットをリモートデバッグするシーン等で、使えるかもしれないなと思いました。

GDBのフロントエンドアプリケーションがあれば、GUIでGDBを制御することができます。
DDD、Insight等のオープンソースアプリケーションがありますが、あまりイケてない感じでした。

ロボット等の動体デバッグで有用となるAHBメモリアクセスやPMUやPCサンプリング等が
GUIから制御できれば、面白いツールになるかもしれませんね。
Qtの勉強も兼ねて、時間があればGUI作成に挑戦してみたいです。(遠い遠い未来か。。。)
今回構築した環境でCMSIS-DAPを搭載していないARMコアのJTAG制御もできました。

ラズパイを無料でARMコア向けJTAG/SWDアダプタにしてみた
概要 ラズベリーパイにOpenOCDをインストールして、ARMコアをSWDでデバッグしてみました。 ラズパイにデバッグ環境を構築することによって、以下のようなメリッ

 

では!(^^)/

 - 組み込み, 電子工作 ,

PAGE TOP