「RocketChip on Zedboard 」 - ビルド済みイメージを使用してRISC-VのRocketChipをFPGAで動かす
はじめに
@a163236です。
RISC-Vを手っ取り早くFPGA上で動かしてみたいなと思い、カリフォルニア大学バークレー校の Rocket Chip on Zynq FPGAsをやってみました。2年位前のやつですしあまりやる人はいないと思いますが、皆さんの役に立てればいいなと思い、ここではその手順を記しておきます。
結果としては、Hello WorldはできてPetaLinuxのブートも出来てriscv-linuxもブート出来ましたが、riscv-linuxのログインになぜか失敗しました。未解決です。
→ Takaya様 @takayaZ のご教授によりriscv-linuxも使えるようになりました!
目次
概要
ZedboardというXilinxのZynqが載っているFPGAボードを用いて、ビルド済みのイメージを使いRISC-V on FPGAを行う手順を記します。
結論を言うと、今回はPetaLinuxをブートして、hello worldをすることに成功しました。また、riscv-linuxも起動させることができました。
準備
まずはgithubのリポジトリのクローンをして、ビルド済みのイメージをゲット。
自分の環境でビルドする手間と時間がかからないのはとてもイイですね(・∀・)!!。
$ git clone https://github.com/ucb-bar/fpga-zynq.git
$ cd fpga-zynq/zedboard
$ make fetch-images
SDカードへの書き込み
SDカードへの書き込みはWSLでやる場合と普通のUbuntuでやる場合の2通りを記しておきます。
WSL でやる場合
msykspinzさんのこちらの記事を参考にしました。
まず、SDカードをPCに差し込みます。SDカードがE:ドライブにあるとき、
$ sudo mkdir /mnt/e
$ sudo mount -t drvfs E: /mnt/e
$ make load-sd SD=/mnt/e
$ sudo umount /mnt/e
これでSDにイメージが書き込まれました。
Ubuntuでやる場合
流れはWSLと同じです。
SDカードをPCに差し込みます。
まず、下のコマンドを打ってSDカードが認識されているデバイス名を確認します。
$ lsblk
私のSDカードはmmcblk0p1という名前で認識されていました。そしたら、その右の方にマウントポイントが書かれています。それがSDカードへのパスになります。ここでは「SDPATH」としておきます。
$ make load-sd SD=SDPATH
$ sudo umount SDPATH
これでSDカードにイメージが書き込まれました。
ZedboardでRocketChipを動かす
ここからは用意したSDカードとFPGAボードを使い、ZedboardとPCをUARTを使い通信していきます。
TeraTermとZedboardの準備
Tera TermじゃなくてもGKTtermでもターミナルでsshでもよいのですが、Tera Termを使ってやります。
まずは、FPGAの方を準備していきます。ZedboardにSDカードを挿入して、電源ケーブルとUSB UARTを接続します。UARTはPCと繋いでおきます。
また、ZedboardはSDカードから起動させるので、ジャンパを設定します。こちらのサイトに分かりやすく書かれておりました。
Tera Termはシリアル通信を使い、
このように設定します。シリアルポート設定も下のようにします。
PetaLinuxのブート
ここまで進むと勝手に下の画像のようにログイン画面が出てきます。
ここで、ユーザ名「root」、パスワード「root」でログインします。
ログイン出来ました。
試しにHello Worldをしてみます。
root@zynq:~# ./fesvr-zynq pk hello
とすると
Hello, World! と出すことができました。
riscv-linuxのブート
このコマンドでriscv-linuxがブートされます。
root@zynq:~# ./fesvr-zynq +blkdev=buildroot.rootfs.ext2 bbl
この画面からバーッと色々流れていって、最終的に(うまくいけば)
このようにログイン画面となります。さきほどと同じようにユーザ名「root」パスワード「root」(後で書きますが、このパスワードは間違いでした!)で入ります。
....入れませんでした。
全然welcomeじゃねーじゃん。
ここで終わっていたのですが、Takaya様 @takayaZ からパスワードは「sifive」であると教わりました。
入力すると…
ログインできました!!
でも# が一個出るだけなので案外地味ですね。最初できたのか分かりませんでした。
とにかく、全てうまく行ったところでこの記事を終わりにしたいと思います。
おわりに
以前までriscv-linxを起動させることが出来なかったところ、Takaya様 @takayaZ にパスワードを教えていただき、できるようになりました。改めて感謝いたします。
また、間違い指摘・または感想等のコメントは私のTwitter@a163236へDMでもしていただければ幸いです。
Author And Source
この問題について(「RocketChip on Zedboard 」 - ビルド済みイメージを使用してRISC-VのRocketChipをFPGAで動かす), 我々は、より多くの情報をここで見つけました https://qiita.com/a163236/items/6d0d7fc078641272436e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .