Linux + RISC-V Sapphire SoC

   

“Linux 対応” 組み込みRISC-Vソフトプロセッサ

構成可能なRISC-VソフトコアプロセッサであるSapphire SoCは、統合されたBuildrootツールチェーン、自動化されたLinuxカーネルツリージェネレータ、およびドライバー、ユーザースペース、ライブラリサンプルを提供する、市場初の「Linux 対応」製品です。

Linux plus RISC-V

Linux penguin created by lewing@isc.tamu.edu using The GIMP software.

マイクロコントローラ (MCU) やハードプロセッサを含むFPGA (FPGA SoC)などの他のソリューションには、弱点があります。MCUはリソースが制限されすぎてLinuxを効果的に実行できず、FPGA SoC は消費電力が大きすぎてコストがかかりすぎる可能性があります。対照的に、Efinix Trion®またはTitanium FPGA 上で実行される無料のSapphire SoC は、ベアメタル、RTOS、Linuxソリューションをすべて単一のハードウェアプラットフォームでサポートします。

Linux vs. RTOS vs. ベアメタル

Linux RTOS Bare Metal

Full fledge operating system

  • Task scheduler
  • File System
  • Networking TCP/IP stack
  • Multiprocessing
    • Mutex or semaphore for synchronization
  • Multi-user
  • Portable
  • Open Source

Real Time Operating System

  • Predictable and deterministic.
    Deterministic means repeatingthe input will result the output
  • Priority based scheduling
  • File system
  • Networking TCP/IP stack
  • Portable
  • Open Source

Physical device dedicated to run a single application

  • A firmware that directly run onhardware without OS
  • No task scheduler
  • No file system
  • Not portable

Linuxのような高レベルのオペレーティングシステムでは、迅速なアプリケーション開発と展開が可能で、ハードウェアの抽象化をサポートし、拡張性と移植性に優れています。Linux環境を使用して、AIアプリケーションの実行、センサーの制御などを行うことができます。さらにコンピューティング能力を高めるには、Efinity IPマネージャーで Sapphire SoCのマルチコア サポートを有効にして、最大 4つの VexRiscvプロセッサを構成します。

Linux ソリューション

適切なツールがないと、Linuxカーネルの構築は面倒な作業になります。Efinixは、Linuxカーネルを構築するための Buildrootに基づく Linuxスタック構成リポジトリ (BR2-Efinix) を提供します。

BR2-Efinix

BR2-Efinix

BR2-Efinixは、Sapphire RISC-V SoC用の LinuxをビルドするためのカスタムBuildroot外部ツリーです。このリポジトリには、OpenSBI、U-boot、Linux、Buildroot構成ファイルとパッチが含まれています。リポジトリは Github ( https://github.com/Efinix-Inc/br2-efinix) からダウンロードしてください。

Buildroot

Buildroot

OpenSBI

OpenSBI

Buildroot

U-Boot

Drivers

Drivers

Device Tree Generator

Device Tree Generator

Buildroot

オープンソースの Buildrootプロジェクトは、クロスコンパイル ツールチェーンを活用して、起動可能なLinuxシステムの構築プロセスを自動化します。Buildroot には、C標準ライブラリや OpenCVなどのさまざまなライブラリが含まれており、統合が容易になります。Efinixには、次の Efinixボードで使用できる起動可能な Linux環境を構築するための Buildroot構成があります。

構成には、RISC-Vクロス GCC v8.4.0に依存するブートローダー (OpenSBI v0.9 および U-boot v2021.04)とLinuxカーネル v5.10が含まれています。Buildrootの詳細については、同社の Web サイトをご覧ください。

OpenSBI

OpenSBIプロジェクトは、Mモードで実行されるプラットフォーム固有のファームウェア用の RISC-Vスーパーバイザ バイナリ インターフェイス (SBI) 仕様のオープンソース リファレンス実装を提供します。詳細については、OpenSBI リポジトリをご覧ください。

U-Boot

U-Bootは、RISC-V、PowerPC、ARM、MIPSなどのさまざまなプロセッサをベースにした組み込みボード用のブートローダーです。U-Bootはブート ROM にインストールして、ハードウェアの初期化とテスト、またはアプリケーション コードのダウンロードと実行に使用できます。詳細については、U-Boot リポジトリをご覧ください。

ドライバー

Efinix は、APB3、UART、SPI、GPIO、DMA などの Sapphire SoC 周辺機器用の Linux ドライバーを提供しています。各ドライバーには、ドライバーの使用方法を示すサンプル アプリケーションも付属しています。

デバイスツリージェネレーター

デバイスツリー ジェネレータースクリプトは、Efinityプロジェクトを利用して、初期化中にLinuxカーネルによって使用される SoCレベルの周辺機器を記述します。Sapphire SoC は構成可能であるため、SoCまたは周辺機器を変更する場合はデバイスツリーを更新する必要があります。このスクリプトを使用すると、開発者はデバイスツリーファイルを簡単に再生成できます。

RISC-V ブートシーケンス

次の図は、Efinix開発ボード上のLinuxのブートシーケンスを示しています。ボードの電源がオンになると、第 1段階のブートローダが OpenSBI と U-Boot を SPIフラッシュから外部メモリ (RAM) にコピーします。次に、OpenSBIが実行され、メモリ、スタック ポインタ、CPUが初期化されます。次に、U-Bootが Linux カーネルをロードし、Linux を起動します。

Efinix TinyML Flow

開発フロー

開発フローはハードウェアとソフトウェアに分かれています。ハードウェア側では SoC FPGAビットストリームを生成します。ソフトウェア側では Linuxカーネルと関連するユーザー空間パッケージを構築します。

Linux Development Fow

What's Next?

独自のアプリケーションの構築を開始できるように、Efinixは SPI、UART、APB3、GPIO、DMAなどのLinuxバスドライバーと、対応するドライバーのユーザースペース パッケージサンプルを提供しています。さらに、リポジトリには、Sapphire SoCのマルチコア機能を紹介する canny、cv2_detection、cv2_tracking などの OpenCVアプリケーションのサンプルが含まれています。

詳しくは、Br2-efinix リポジトリをご覧ください