OpenOCD + JTAG を使って MacBook から SheevaPlug の u-boot を書き換える

前のエントリでは u-boot の機能を使って u-boot 自身の置き換えを行った。この方法以外にも SheevaPlug では JTAG 経由で u-boot を書き換えることができる。これを行うためには OpenOCD というソフトを使う。
OpenOCD をコンパイルするために、まず http://www.ftdichip.com/Drivers/D2XX.htm から Mac OS X 用の FTDI ドライバをダウンロードする。この時点のバージョンは 0.1.6 だった。インストールの方法は dmg ファイルの中の ReadMe に書かれているのでこれを参考にすれば良い (下記、ディレクトリの移動などは省略している):

# cp libftd2xx.0.1.6.dylib /usr/local/lib/
# ln -sf /usr/local/lib/libftd2xx.0.1.6.dylib /usr/local/lib/libftd2xx.dylib
# cp ftd2xx.h /usr/local/include/
# cp WinTypes.h /usr/local/include/

openocd-0.1.0.tar.gz には SheevaPlug 用の config が入っていないので、SVN リポジトリから OpenOCD の最新版を取ってくる必要がある:

$ svn co svn://svn.berlios.de/openocd/trunk

Revision 1800 のソースを使用した。
svn のログや OpenOCD のメーリングリストを見ると Mac OS X でコンパイルする上での問題点の報告と修正が頻繁に行われているようだ。コンパイルエラーが出るようであればメーリングリストで状況を確認した方が良さそう。

OpenOCD のコンパイル:

$ ./bootstrap
$ ./configure –enable-ft2232_ftd2xx
$ make
$ sudo make -i install

Info の作成でエラーが出ていたが、とりあえず必要なさそうなので放っておくことにする。

ここで試しに OpenOCD を動かしてみるが、”Error: unable to open ftdi device: 3″ が表示されうまく動かない。FTDI ドライバの Knowledgebase を探ってみるとシリアルドライバをアンインストールせよとあるので試してみる。ただし、シリアルドライバは後々使うので消してしまうのではなくてモジュールをアンロードする方法を取ることにした:

# kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

再度モジュールをロードするには以下のコマンドを入力すれば良い:

# kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext

このようにモジュールをアンロードすれば一応動いた。

置き換えたい u-boot イメージファイルを uboot.bin という名前にする。このファイルがあるディレクトリで以下を実行する:

$ sudo openocd -f /usr/local/lib/openocd/board/sheevaplug.cfg -c init -c sheevaplug_reflash_uboot

失敗したようだったらもう一度同じコマンドを投入する。
書き換えが完了すると以下のメッセージが表示される:

NAND flash device ‘NAND 512MiB 3,3V 8-bit’ found
successfully erased blocks 0 to 4 on NAND flash device ‘NAND 512MiB 3,3V 8-bit’
wrote file uboot.bin to NAND flash 0 up to offset 0x00073000 in 89.607658s

シリアルコンソールから u-boot のバージョンを確認して、置き換えたものになっていたら成功。

OpenOCD のセットアップについては PlugWiki の Setting Up OpenOCD Under Linux も参考になるかも。

これで SheevaPlug をカスタマイズするために知っておいた方が良さそうな内容は大体試すことができたかな。

広告

タグ: , ,

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。