FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Rocket-Chip を ZedBoardにインプリしてLinuxを動作させる (Ubuntuで作業、FSBLを作るまで編)

とりあえず、まずはVivado 2014.4をUbuntuにインストールした。SDK 2014.4も一緒にインストールした。 対象Ubuntuは以下の通り。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"

さて、RISC-Vのビルドからやり直そう。 相変らず参考にしてるのはRISC-Vプロジェクトの以下のサイトだ。

Download - RISC-V

make project    # Vivadoのプロジェクトを生成する
make bitstream  # VivadoでRocketチップをインプリする

Rocketチップのインプリには1時間程度かかる。VirtualBox 上のUbuntuで実行されているとはいえ、結構早いほう? まあ、6段のパイプラインでそれなりに大きいCPUだから、論理合成には時間がかるのかねえ。 今自作しているCPUでも、Zynqの容量を使い切っている(だめじゃん...)のだが、まあ30分程度で終わる。そんなもんかねえ。。。

さて、bitstreamまで生成できたら、次はVivadoのコンソールを立ち上げて、SDKへのエクスポートと、FSBLを作成を行う。

make vivado

さすがにこれはコンソールでは行なえない。上記まではUbuntusshを通してcygwin上で作業していたが、ここから先は VirtualBox の画面からログインして行わなければならない。

さて、前回FSBLの生成時にエラーが出ていたが、

[Hsi 55-1464] Hardware instance __EMPTY__ not found in the design

これは、Ubuntu上のVivado 2014.4でも同様のエラーが発生した。これを回避するためには、やはり以下のページを参照しなければならないらしい。

http://www.xilinx.com/support/answers/63036.htmls

このページを参照するに、まずはパッチをダウンロードして、そのダウンロード先のディレクトリをMYVIVADOという環境変数に登録する。 こうするとVivadoにパッチが入る訳だ。

$ vivado

****** Vivado v2014.4_63036 (64-bit)   <-- パッチ 63036 が当てられていることが分かる。
  **** SW Build 1071353 on Tue Nov 18 16:47:07 MST 2014
  **** IP Build 1070531 on Tue Nov 18 01:10:18 MST 2014
    ** Copyright 1986-2014 Xilinx, Inc. All Rights Reserved.

まずはこれによりSDKを正常に立ち上げることができる。 次にハマったのは、64bitと32bitの問題。Xilinxのarm-xilinx-abi-linux-gnuabi-gcc は、32bitでコンパイルされており、64ビットでは動作させることができない。 32ビットのバイナリを動作させようとすると、以下のエラーが発生してうまくいかない。

f:id:msyksphinz:20150222224341j:plain

これを解決するため、以下を参照した。

とあるエンジニアの備忘log: ISE & Vivado 設定 on Ubuntu

$ sudo apt-get install ia32-libs

をしてみると、今度はUbuntu14.04 LTSではこのパッケージは無くなっているらしい。さらにググる

ia 32 - How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr) - Stack Overflow

sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs

やっとコンパイルできるようになった。FSBLの作成までは完了。続く。