ラズパイを無料でARMコア向けJTAG/SWDアダプタにしてみた
ざざっと読むための目次
概要
ラズベリーパイにOpenOCDをインストールして、ARMコアをSWDでデバッグしてみました。
ラズパイにデバッグ環境を構築することによって、以下のようなメリットがあります。
・無料!!
・ロボットなどの動体のデバッグが可能
・VNCやSSHを使用することで離れたから場所からリモートデバッグが可能
・VNCやSSHを使用することでローカルPCにインストールせずにデバッグが可能
その前に
JTAG
JTAG(ジェイタグ)は、IEEE1149.1で規定されている規格です。
プリント基板検査のための規格でしたが、現在はCPUのデバッグに使用されています。
つまり、JTAG信号を使用してCPUのメモリやレジスタにアクセスしたりすることができます。
SWD
JTAGには4本も信号線が必要になるため、2本線でアクセスできるように開発された規格です。
環境構築
環境構築は、こちらのページをご覧ください。
[nlink url=”http://g-action.gack2u.com/raspberry-pi-openocd/”]
テスト
ターゲットとの接続
ターゲットは、STMicro NUCLEO-F030R8を使用します。
/usr/local/share/openocd/scripts/boardに対応しているボードが確認できます。
以下のように結線します。
信号 | Raspberry Pi | Nucleo |
GND | pin20(GND) | CN4 pin3 |
SWDIO | pin18(GPIO24) | CN4 pin4 |
SWCLK | pin22(GPIO25) | CN4 pin2 |
Reset | pin12(GPIO18) | CN4 pin5 |
3.3V (Require) | pin1(+3.3V) | CN4 pin1 |
ボード設定
STMicro NUCLEO-F030R8では、以下のようにボードを設定する必要があります。
ご使用するボードでもデバッグインターフェースや電源供給設定は必要となる可能性があります。
JP1: ジャンパ未接続
JP5: U5V側へジャンパ(1-2)
CN2: ジャンパ1-2/3-4接続
OpenOCDのcfgファイル作成
ラズベリーパイで制御するためのcfgファイルを作成します。
1 2 3 |
cd /usr/local/share/openocd/scripts/board sudo cp st_nucleo_f0.cfg rpi2_st_nucleo_f0.cfg sudo nano rpi2_st_nucleo_f0.cfg |
OpenOCDは、Nucleoボードに対応しているのですが、修正する必要があります。
1 2 3 4 5 6 7 |
source [find interface /raspberrypi2-native.cfg] transport select swd source [find target/stm32f0x.cfg] reset_config srst_only |
OpenOCD実行
下記コマンドでOpenOCDを起動します。
1 |
sudo openocd -f /usr/local/share/openocd/scripts/board/rpi2_st_nucleo_f0.cfg |
接続に成功すると、以下のようなメッセージが表示されます。
telnetから制御
telnetからOpenOCDを制御できます。
telnetがインストールされていない場合は、telnetをインストールしてください。
sudo apt-get install telnet
1 |
telnet localhost 4444 |
コマンドは以下のようなものがあります。
コマンド | 説明 |
targets | ターゲットの情報を表示します |
halt | ターゲットプログラムを停止させます |
resume | ターゲットプログラムを再開させます |
コマンド詳細は下記をご覧ください。
http://openocd.org/doc/html/General-Commands.html
GDBから制御
下記コマンドでgdbから制御できます。
gdbがインストールされていない場合は、gdbをインストールしてください。
sudo apt-get install gdb-arm-none-eabi
1 2 |
arm-none-eabi-gdb target remote localhost:3333 |
コマンドは以下のようなものがあります。
コマンド | 説明 |
info reg | レジスタを表示します |
load | ターゲットにプログラムをロードします |
list | ブレークしている行の周辺を表示します |
コマンド詳細は下記をご覧ください。(よく使用するコマンド)
http://www.kumikomi.net/interface/sample/201503/if03_100.pdf
※ help allで全コマンドが表示されます。
「くがとしお」的 まとめ
無料でARMコアのデバッグ環境を構築できました。
OpenOCDで対応しているボードであれば、同様の手順でデバッグできると思います。
無料でデバッグ環境が構築できるメリットは大きいと思います。
前回の記事でも思いましたが、やはりいい感じのGUIが欲しいですね。
では!(^^)/