FT232HLでベアメタルな(?)Raspberry Piを JTAGデバッグする

この記事はkstmアドベントカレンダー10日目の記事として書きました。
qiita.com

 

 

 はじめに

今回の記事は,1200円(@秋月電子)で購入できるUSBシリアル変換モジュールFT232HLを使ってベアメタルなRaspberry PiJTAGデバッグ環境を構築したという内容です.

akizukidenshi.com

ベアメタルとは,Raspbian等のOSを使用せずに,直接MCUを動作させるようなプログラムを作成し動作させることを言うそうです.

ベアメタルについては,こちら↓の書籍が大変詳しく,今回の記事でもかなり参考にさせていただいているので興味がある方はぜひ読んでみてください.

tatsu-zine.com

 

Raspberry Pi(以下ラズパイと称する)におけるベアメタルプログラミングでは,ラズパイを通常のマイコンのように扱うのでJTAGデバッグが非常に有効です.

JTAGデバッグ便利そうだな〜と思っていたのですがARMのJTAGデバッガとして販売されているものは3000円位からと学生には少々お高めです.

そこで今回,秋月電子通商で1200円で購入できるUSBシリアル変換モジュールFT232HL を用いたJTAGデバッグ環境を構築しました.

僕自身まだ理解できない内容がかなり多いので,おかしな表現・内容があると思いますが,生暖かい視線で見守っていただければと思います. 

 ソフトウェアの設定

今回の開発環境は以下のようになります.

ホストPC : Linux Mint 18.2 Sonya

ターゲットボード : Raspberry Pi zero (BCM2835)

必要なパッケージ等は適宜インストールしてください.

 

まず,OpenOCDをインストールします.

Open On-Chip Debugger

(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

 

f:id:yabashimong:20171209201524j:plain

こんな感じです.

 

動かしてみる

実際にJTAGデバッグを行ってみます.

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の使い方を理解できていないのですが,ブレークポイントを貼ってステップ実行したり,メモリの中身を覗いたりと便利かつ面白い機能がたくさんありそうです.

上級ベアメタラー(?)目指してガシガシ使っていきたいです.