Artix-7評価ボード>Artix-7開発日記>2013年10月

2013年10月

開発日記 2013年10月 (Linuxの起動)

日記のリンク

10月(Linuxの起動)  9月(Artix-7冊子とU-Bootの起動)

8月(拡張基板の開発とHDMI出力奮闘) 7月以前(開発・出荷そしてFPGAマガジン掲載)


10月16日(水)

ついにArtix-7でLinuxが起動しました!!

まだネットワークもMMCも使えない素朴なLinuxですが、はっきりと起動しました。

この数か月間の苦労がようやく報われました。

 

10月15日(火)

U-Bootの起動アドレスは解決して無事に起動しそうになったのですが、FDT_ERR_NOSPACEというエラーが出て止まってしまいます。FDTとは何ぞやというところから勉強しなおしです。

FDTというのは、どんな周辺装置がつながっているかが書かれたファイルのようで、DTSがテキスト形式、DTBがバイナリのようです。

 tftpboot bff00000 naitou/xilinx.dtb

としてDTBを0xbff00000にダウンロードしたら、

 fdt addr bff00000 00100000

 fdt resize

とやれば、そのアドレスにDTBが配置されたことをU-Bootが認識するようです。

BOOTMコマンドで起動するときに、

 bootm bf000000 bf800000 bff00000

と3番目の引数にFDTをダウンロードしたアドレスを指定します。

10月14日(月)

XMDを使ってステップ実行して、Hardware exception at 0xb03e7cb0 address が出る原因を探りました。

MicroBlazeはリセットすると、Linuxのソースの中にあるhead.Sからスタートしますが、この中でMMUをONにして仮想アドレスに切り替えるためのリターン命令を実行した後に、変なアドレスに飛んで行ってしまっていました。

U-Boot形式のLinux.bin.ubには64バイトのヘッダが付いていて、そのヘッダの分だけアドレスがずれているためでした。U-Bootでダウンロードされるアドレスと、Linuxのカーネルを配置するアドレスを分けなければならなかったのです。

つまり、カーネルをビルドするときに、カーネルを0xb0000000から配置するこようにしたら、U-BOOTのTFTPBOOTでダウンロードするアドレスは重ねちゃいけない。0xbf000000あたりにダウンロードしておけば、U-Bootがヘッダを見て0xb0000040から先のコードを0xb0000000にコピーしてくれるというわけです。

10月13日(日)

MicroBlaze向けのU-Bootをビルドしようとしたところ、ビルド環境としてLinuxが必要であることがわかりました。

UbuntuにXILINX Vivado SDKを入れようとしたがXWindowsが入っていないとxsetupが起動できないらしいので、apt-getでxwindowやgnomeをDLしてきて、ようやくLinux上でのXILINX SDKのインストールが始まった。

ビルド中・・不安いっぱい。

U-Bootのビルド完了。

無事起動しましたが、SPIフラッシュは使えないのですね。ネットワークが使えたのは幸い。

 

しかし、Linuxを起動すると、Hardware exception at 0xb03e7cb0 address と出て止まってしまいます。

10月12日(土)

Artix-7 Linuxがなかなかうまく起動しないので、3連休を利用して勉強しなおすことにしました。

まずは、SRECブートローダから作り直します。EDKのSDKに入っているSRECブートローダはとても遅いので、自分で作り直したところ、SPI Flash ROMからU-Bootを2秒くらいで起動できるようになった。

10月2日(水)

拡張ボードの改版版が出来上がりました。HDMIコネクタのところの固定用のピンを長穴にするなど、細かい修正を行いました。それから、レジストの色を青にして金フラッシュ仕上げにしました。

 

重ねるとこんな感じです。

 

U-Bootでネットワーク接続し、TFTPブートでLinuxのイメージを取ってくることまでできました。

 

9月の日記へ


© 2015 TokushuDenshiKairo Inc. All rights reserved