Booting RISC-V Debian in LiteX/Rocket on FPGA boards
Luffcaでは、LiteXを用いて64-bit RISC-VのRocket ChipのSoCを構成し、2種類のFPGAボード(Qmtech社のWukongボードとDigilent社のNexys Video)上で、RISC-V Debianをブートすることに成功しました。
これらのSoCは、https://github.com/litex-hub/linux-on-litex-rocket等をベースにしています。
アイキャッチ画像は、クアッドコアSoCのNexys VideoにUART接続したターミナル上で、htop
を実行しているときの様子です。
LiteX/Rocket
Luffcaでは、litex、pythondata-cpu-rocket及びlinux-on-litex-rocketリポジトリに、XC7A100Tを搭載したWukongボード用のCPUバリアントとしてlinux4d
とfull2d
を追加する変更を加えています。
CPUバリアントのlinux4d
とfull2d
は、それぞれクアッド・ミディアムコアとデュアル・ビッグコアを意味しています。
XC7A200Tを搭載したNexys Videoの場合、最大でクアッド・ビッグコアのfull4d
に対応します。
下の表に示すように、LiteXを用いたSoCは、周辺のIPコアが小さいためか、こちら記事で紹介したVivadoを用いたSoC(vivado-risc-v)の2倍のコア数に対応可能です。
FPGA board | Max bigcore | |
---|---|---|
vivado-risc-v | LiteX/Rocket | |
Wukongボード | シングル | デュアル |
Nexys Video | デュアル | クアッド |
OpenSBI for LiteX/Rocket
Luffcaでは、OpenSBIをLiteX/Rocketに移植済です。
このため、BBL(Berkeley Boot Loader)を用いたboot.bin
ではなく、boot.json
を使用してブートさせています。
なお、ブートシーケンスは、下記の通りです。
OpenSBI -> Linux -> Debian等のrootfs
Debian rootfs for LiteX/Rocket
Debianのrootfsは、Boot-Debian-On-Litex-Rocket Step3: Build Debian rootfsの記載のように、systemd
の代わりにsysvinit
を使用しています。
今回は、releasesに用意されているrootfsを使用して、Debianをブートしました。
なお、Debian環境としてvivado-risc-vと比較すると、halt
時等にRCUのstallが発生しており、まだ不安定な印象です。
まとめ
Luffcaでは、LiteXを用いて64-bit RISC-VのRocket ChipのSoCを構成し、Qmtech社のWukongボードとDigilent社のNexys Video上で、RISC-V Debianをブートすることに成功しました。
LiteXを用いたWukongボードとNexys VideoのSoCは、それぞれデュアルコアとクアッドコアに対応しています。