2014年6月15日日曜日

Beagle Boneのデバッグ

■openocd 0.7.0
openocd -f scripts/board/ti_beaglebone.cfg -c "init" -c "reset init" -c "arm core_state arm"

上記コマンドでopenocdが接続できる。
最後のコマンドはThumbモードからARMモードにするだけなので無くてもいい。

接続できない場合はopenocd ドライバフォルダにあるftdi2232ドライバのインストールをまず行う。
ドライバは自動認識しないので手動インストールでopenocdドライバフォルダにあるinfファイルを選択し、texas instrument xds100v2を選択してインストールする。

上記の方法でgdbからデバッグできるが、それには前提がある。
それはBeagleBone付属のSDカードからブートした後である。
ただしLinuxは起動してはいけない。

U-Bootが起動してLinuxロードの前にキー操作をしてU-Bootコンソールの状態に止めておく。


■gdb
Eclipseでgdbを使ってHardware Debuggingを行う際の注意。
Window-Preference-Run/Debug-Launching-Default Launchers-GDB Hardware Debuggingの設定
Eclipseのバージョンによってはこの設定がGDB(DSF) Hardware Debugging Launcherになっている。
しかしOpenOCD-gdbでデバッグする場合はLegacy GDB Hardware Debugging Launcherの設定でないとうまく動作しない。

■おまけ
U-Bootコンソールの起動を待ってからデバッグする理由
最初はDDRの初期化が行われていない。
したがってデバッグするプログラムをメモリにロードできないからである。
それでもロードしようとすると jtag-dap sticky error が発生する。

SDカードでのブートなしにロードしようとする場合はopenocd起動時にメモリの初期化コマンドを追加する必要がある。
その方法は調査中。