Running 32-bit RISC-V Zephyr in LiteX/VexRiscv on Qmtech Wukong Board
Luffcaでは、LiteX/VexRiscvを用いて32-bit RISC-V SoCを構成し、Qmtech社のFPGAボードのWukongボードで、リアルタイムOSのZephyrを実行することに成功しました。
また、Digilent社のFPGAボードのArty A7-35Tでも、同様に成功しています。
これらのシステムは、github.com/litex-hub/zephyr-on-litex-vexriscvをベースにしています。
Zephyr
Zephyrは、Linux Foundationのプロジェクトとして開発が進められているリアルタイムOSです。
v2.6.0では、RISC-Vボードとして、以下の8種のボードがサポートされています(v2.7.0-rc4では、14種)。
- SiFive HiFive1
- SiFive HiFive1 Rev B
- ITE IT8XXX2 series
- LiteX VexRiscv
- Microsemi M2GL025 Mi-V
- RISCV32 Emulation (QEMU)
- RISCV64 Emulation (QEMU)
- OpenISA VEGAboard
LiteX/VexRiscvも上記に含まれています。
LiteX/VexRiscv
- LiteX: SoCを構成するためのオープンソース・フレームワーク
- VexRiscv: オープンソースの32-bit RISC-V soft CPU
zephyr-on-litex-vexriscvは、Gitのサブモジュール機能を利用して、専用のLiteX/VexRiscv環境を構築します。
また、以下の記事で参照したlinux-on-litex-vexriscvと異なり、VexRiscvとして、smpの付いていないgithub.com/litex-hub/pythondata-cpu-vexriscvを使用します。
Running 32-bit RISC-V Linux with Octa-core SMP in LiteX/VexRiscv on Qmtech Wukong Board
Zephyr on Wukong Board
但し、zephyr-on-litex-vexriscvがサポートしているFPGAボードは、Digilent社のArty A7だけです。
今回Luffcaでは、$99.9と安いならがもXilinx XC7A100T FPGAを搭載したQmtech社のWukongボード(マイクロSDスロット搭載のv2)のサポートを追加しました。
下記の画像は、samples/subsys/shell/shell_module
のバイナリを実行しているときの様子です。
また、Digilent社のPmod I2S2をWukongボードのPmodコネクタに接続し、Zephyrでの動作も確認しました。
まとめ
Luffcaでは、オープンソースのSoCビルダーのLiteXと、同じくオープンソースの32-bit RISC-V soft CPUのVexRiscvを用いて、Qmtech社のWukongボードとDigilent社のArty A7-35Tに対応するSoCを構成し、リアルタイムOSのZephyr(32-bit RISC-V版)を実行することに成功しました。