以前の記事でRaspberry PiのJTAGピンを有効にし、J-Linkで接続した。
今回、msys2環境(Windows)から「Olimex ARM-USB-TINY-H」で、Raspberry piへのJTAG接続にチャレンジしてみたので備忘録を残す。
Olimex ARM-USB-TINY-H
ARM-USB-TINY-Hは、JTAGデバッガで5000円程度で買えるもので、私は下記URLから購入した。
https://strawberry-linux.com/catalog/items?code=15045
ドライバーのインストール
ARM-USB-TINY-HのUSER’S MANUAL(参考 1.)の手順に従ってドライバーをインストールする。
「ARM-USB-TINY-H」をパソコンに接続すると、下記のようになっている。
WinUSBドライバーのインストール
http://zadig.akeo.ie/
Zadigを使用して”ARM-USB-OCD-H (Interface 0)”のデバイスにWinUSBを適用する。
“Interface 1″には適用してはいけない。
とりあえず、”Interface 1″のドライバはインストールしなくて良い。
ドライバ−、インストール完了すると下記のようになる。
OpenOCDのインストール
OpenOCDは、msys2のpacmanからもインストールできるので、パッケージを検索して確認。
$ pacman -Ss openocd
mingw32/mingw-w64-i686-openocd 0.10.0-1
OpenOCD - Open On-Chip Debugger (mingw-w64)
mingw32/mingw-w64-i686-openocd-git 0.9.0.r2.g79fdeb3-1
OpenOCD - Open On-Chip Debugger (mingw-w64)
mingw64/mingw-w64-x86_64-openocd 0.10.0-1
OpenOCD - Open On-Chip Debugger (mingw-w64)
mingw64/mingw-w64-x86_64-openocd-git 0.9.0.r2.g79fdeb3-1
OpenOCD - Open On-Chip Debugger (mingw-w64)
mingw-w64-i686-openocdパッケージのインストール
下記コマンドで、mingw32用のopenocdパッケージをインストール。尚、依存するパッケージもインストールされる。
$ pacman -S mingw-w64-i686-openocd
- mingw64環境で使う場合は
mingw-w64-x86_64-openocd
パッケージを使う。
インストールされた設定ファイルの確認
$ ls /mingw32/share/openocd/scripts/interface/ftdi/olimex*.cfg
/mingw32/share/openocd/scripts/interface/ftdi/olimex-arm-jtag-swd.cfg
/mingw32/share/openocd/scripts/interface/ftdi/olimex-arm-usb-ocd.cfg
/mingw32/share/openocd/scripts/interface/ftdi/olimex-arm-usb-ocd-h.cfg
/mingw32/share/openocd/scripts/interface/ftdi/olimex-arm-usb-tiny-h.cfg
/mingw32/share/openocd/scripts/interface/ftdi/olimex-jtag-tiny.cfg
「olimex-arm-usb-tiny-h.cfg
」ファイルがあるので、それを利用する。
configファイルの用意
「Raspbery pi 2」用の設定ファイルは、提供して下さっている人がいるので、下記URLからrpi2.cfg
ファイルを入手。
openocdの起動
JTAGデバッガをケーブルで接続し、Raspberry Piの電源を入れ、下記コマンドで起動。
$ openocd -f interface/ftdi/olimex-arm-usb-tiny-h.cfg -f rpi2.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
adapter speed: 1000 kHz
adapter_nsrst_delay: 400
none separate
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
Info : clock speed 1000 kHz
Info : JTAG tap: rpi2.dap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : rpi2.cpu.0: hardware has 6 breakpoints, 4 watchpoints
Info : rpi2.cpu.1: hardware has 6 breakpoints, 4 watchpoints
Info : rpi2.cpu.2: hardware has 6 breakpoints, 4 watchpoints
Info : rpi2.cpu.3: hardware has 6 breakpoints, 4 watchpoints
openocd
は、Ctrl-c
で終了できる。
openocdのコンソールに接続
別のコマンドプロンプトを開き、下記コマンドを実行。
$ telnet localhost 4444
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>
下記コマンドで状態を確認
> targets
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0 rpi2.cpu.0 cortex_a little rpi2.dap running
1 rpi2.cpu.1 cortex_a little rpi2.dap running
2 rpi2.cpu.2 cortex_a little rpi2.dap running
3* rpi2.cpu.3 cortex_a little rpi2.dap running
>
help
で使えるコマンド説明を表示。exit
コマンドで接続を終了。
GDBで「openocd」に接続
GDBコマンドのインストールは、下記記事を参照。
下記コマンドで、GDBを起動。
$ arm-unknown-eabi-gdb hoge.elf
(gdb) target remote localhost:3333
いろいろエラーは出るが接続できた。ただ、load
コマンドで失敗する。調べると他の人も同様の現象が発生している?よう。
まだ何か足りない?ようであるが、この先は後日試していきたい。
- gdbは「
quit
」コマンドで終了。 - gdbでよく使うコマンドは姉妹サイトの下記URL参照
【GDB】基本コマンド [新石器Wiki]
追記(2017/8/18)
下記記事でも紹介しているように、macOSから試した場合と同様に接続できない。
又、「J-Link Lite ARM」を使ってもOpenOCDからだと同様に接続できなかったので、アダプタの問題ではなく、OpenOCDの設定か使い方に問題あるのか???
補足
- ARM-USB-TINY-Hは、interfaee 0がJTAG用、interface 1がシリアル通信用になっている。
参照記事
- 【macOS】ARM-USB-TINY-HでRaspberry pi 2にJTAG接続する
- 【Windows/msys2】J-Link LITE ARMでRaspberry pi 2にGDBでJTAG接続する
参考
- ARM-USB-TINY-H USER’S MANUAL
- RaspberryPi3 64bitモード ベアメタルをJTAGデバッグする
- Raspberry Pi2をJTAGデバッグできました
- OpenOCD User’s Guide
- 安価なJTAG ICEのOlimex ARM-USB-TINY-H を使ってみた
- ARM-USB-TINY-H で Raspberry Pi を JTAG デバッグ
- 「ラズパイARM体得プログラムの動かし方」CQ出版社 Interface誌 2017年2月号 p95〜p107
- 「プロなみJTAGデバックを個人でも! オープンソースOpenOCD入門」CQ出版社 Interface誌 2015年3月号 p96〜p107
コメント