Running 32-bit RISC-V Zephyr in LiteX/VexRiscv on Qmtech Wukong Board

zephyr-litex-vexriscv-wukong

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のバイナリを実行しているときの様子です。

zephyr-litex-vexriscv-wukong-2

また、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版)を実行することに成功しました。