FT232HLでベアメタルな(?)Raspberry Piを JTAGデバッグする
この記事はkstmアドベントカレンダー10日目の記事として書きました。
qiita.com
はじめに
今回の記事は,1200円(@秋月電子)で購入できるUSBシリアル変換モジュールFT232HLを使ってベアメタルなRaspberry PiのJTAGデバッグ環境を構築したという内容です.
ベアメタルとは,Raspbian等のOSを使用せずに,直接MCUを動作させるようなプログラムを作成し動作させることを言うそうです.
ベアメタルについては,こちら↓の書籍が大変詳しく,今回の記事でもかなり参考にさせていただいているので興味がある方はぜひ読んでみてください.
Raspberry Pi(以下ラズパイと称する)におけるベアメタルプログラミングでは,ラズパイを通常のマイコンのように扱うのでJTAGデバッグが非常に有効です.
JTAGデバッグ便利そうだな〜と思っていたのですがARMのJTAGデバッガとして販売されているものは3000円位からと学生には少々お高めです.
そこで今回,秋月電子通商で1200円で購入できるUSBシリアル変換モジュールFT232HL を用いたJTAGデバッグ環境を構築しました.
僕自身まだ理解できない内容がかなり多いので,おかしな表現・内容があると思いますが,生暖かい視線で見守っていただければと思います.
ソフトウェアの設定
今回の開発環境は以下のようになります.
ホストPC : Linux Mint 18.2 Sonya
ターゲットボード : Raspberry Pi zero (BCM2835)
必要なパッケージ等は適宜インストールしてください.
まず,OpenOCDをインストールします.
(2017/12/10時点での最新版は0.10.0でした.)
下記のコマンドを入力しインストールを行いました.
./configure --enable-ftdi
make
sudo make install
次に,JTAG通信に使うピンを有効にするためのプログラムをラズパイのSDカードに入れますが...
コレに関しては上記の本や他のHPを参照してください(なげやりでスミマセン).
またOpenOCDを使うにあたりcfgファイル(ターゲットやデバッガの情報が入ったファイル)が必要となります.今回ラズパイ用のcfgファイルとして,
raspberrypi/armjtag at master · dwelch67/raspberrypi · GitHub
上記リンクのraspi.cfgを使用させていただきました.ありがとうございました.
ハードウェアの設定
FT232HLとRaspberry Piを接続します.
下記のように接続しました.
ラズパイ :FT232HL
GPIO25 : AD0
GPIO4 : AD1
GPIO24 : AD3
GPIO27 : AD4
GND : GND
こんな感じです.
動かしてみる
OpenOCDは,先ほどダウンロードしたターゲット用のcfgファイルの他にJTAGデバッガ用のcfgファイルも必要です.
OpenOCDインストール時に構築されたディレクトリの中に,
/usr/local/share/openocd/scripts/interface/ftdi/um232h.cfg
FT232HLと互換性がある(らしい)um232h用のcfgファイルがにあったのでコレを使わせてもらいます.
下記のコマンドでOpenOCDを起動します.
OpenOCD -f /usr/local/share/openocd/scripts/interface/ftdi/um232h.cfg -f /hoge/raspi.cfg
エラーを吐かずにターゲットに関する情報が表示されれば成功です.
ここまで来たら上記の本や他のHPを参考にしてgdbを接続し作成したプログラムのデバッグを行ってください.(なげやりでスミマセン(2回目))
僕自身まだgdbの使い方を理解できていないのですが,ブレークポイントを貼ってステップ実行したり,メモリの中身を覗いたりと便利かつ面白い機能がたくさんありそうです.
上級ベアメタラー(?)目指してガシガシ使っていきたいです.