« あけましておめでとうございます | トップページ | RX62TのJTAG ICEを開発しています »

2011.01.02

Spartan-6のMicroBlazeでU-Bootを動かす

Spartan-6に入れたMicroBlazeでLinuxを動かしたいと思っていろいろ調べていました。
まずブートローダの選択です。著名なブートローダにはいくつかあるのですが、U-Boot 1.1.6ではMicroBlazeがサポートされていたので、sourceforgeからダウンロードしてきて、各種パラメータ書き換えることで対応することができました。
カスタムボード用の設定ファイルをゼロから書くと大変ですが、U-Boot 1.1.6には、Spartan-3のMicroBlazeのFPGAボードの設定ファイルがあったので、それを雛形にして作りました。

MicroBlaze用のGCCはmb-gccというのですが、困ったことにこれが普通のCygwin環境からはうまく動かないし、EDKに入っているCygwinだかMinGWのGCCはu-bootのmakeファイルから使われないので、u-bootのコンパイルが通りませんでした。GCCのパスの設定方法とかを理解すれば解決できるのでしょうがが、とりあえずは、両者の環境で交互にmakeすることで最後まで通しました。

u-boot-1.1.6/Makefileに
tkdn_sp6_config: unconfig
@$(MKCONFIG) -a $(@:_config=) microblaze microblaze tkdn_sp6 TokushuDenshiKairo
という記述を書き、

u-boot-1.1.6/board/TokushuDenshiKairo/tkdn_sp6
というフォルダを作っておいて、さらに
make tkdn_sp6_config
make
とします。

XilinxのBASH環境とCygwin環境で交互にmakeし、どちらもエラーとなったら、
u-boot-1.1.6/Makefileの222行目
SUBDIRS = tools \

SUBDIRS = #tools \
とコメントアウトし、再びmakeします。

コンパイル中はこんな感じで3分くらい待ちます。
Mbcompile

それから、MicroBlazeのコンパイル時のオプションで、以下のオプションがついたりつかなかったりするようにします。
 -mno-xl-soft-mul ・・・ ハードウェア乗算器を実装していれば有効
 -mno-xl-soft-div ・・・ ハードウェア除算器を実装していれば有効
 -mxl-barrel-shift ・・・ バレルシフタを実装していれば有効
MicroBlazeのデフォルトではハードウェア乗算器しか入っていないので、この設定は変更が必要です。
そんなこんなでコンパイルを通して、HEXファイルに変換してシリアルポートを通じてSpartan-6に転送!
Sp6mbuboot

なんとかU-Bootは起動しました。でも、全然コマンドがない。(;ω;)
フラッシュROMとか、SPIとか、ネット関係とか・・
自分で一つ一つ有効にしていかなければならないのかもしれません。

いろいろ調べたりして面白かったのですが、道のりは長そうなので、ここでひとまずこの計画は中断します。明日からは別のことをやります。組み込みLinuxに詳しい方がいらっしゃいましたら、プロジェクト一式を差し上げますので、どうか続きを作ってください。

|

« あけましておめでとうございます | トップページ | RX62TのJTAG ICEを開発しています »

コメント

コメントを書く



(ウェブ上には掲載しません)




« あけましておめでとうございます | トップページ | RX62TのJTAG ICEを開発しています »