2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「RocketChip on Zedboard 」 - ビルド済みイメージを使用してRISC-VのRocketChipをFPGAで動かす

Last updated at Posted at 2020-07-11

はじめに

@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はシリアル通信を使い、

image.png

このように設定します。シリアルポート設定も下のようにします。

image.png

PetaLinuxのブート

ここまで進むと勝手に下の画像のようにログイン画面が出てきます。

image.png

ここで、ユーザ名「root」、パスワード「root」でログインします。

image.png

ログイン出来ました。
試しにHello Worldをしてみます。

root@zynq:~# ./fesvr-zynq pk hello

とすると

image.png

Hello, World! と出すことができました。

riscv-linuxのブート

このコマンドでriscv-linuxがブートされます。

root@zynq:~# ./fesvr-zynq +blkdev=buildroot.rootfs.ext2 bbl

image.png

この画面からバーッと色々流れていって、最終的に(うまくいけば)

image.png

このようにログイン画面となります。さきほどと同じようにユーザ名「root」パスワード「root」(後で書きますが、このパスワードは間違いでした!)で入ります。

image.png

....入れませんでした。
全然welcomeじゃねーじゃん。

ここで終わっていたのですが、Takaya様 @takayaZ からパスワードは**「sifive」**であると教わりました。

入力すると…

image.png

ログインできました!!
でも# が一個出るだけなので案外地味ですね。最初できたのか分かりませんでした。
とにかく、全てうまく行ったところでこの記事を終わりにしたいと思います。

おわりに

以前までriscv-linxを起動させることが出来なかったところ、Takaya様 @takayaZ にパスワードを教えていただき、できるようになりました。改めて感謝いたします。
また、間違い指摘・または感想等のコメントは私のTwitter@a163236へDMでもしていただければ幸いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?