構成可能なRISC-VソフトコアプロセッサであるSapphire SoCは、統合されたBuildrootツールチェーン、自動化されたLinuxカーネルツリージェネレータ、およびドライバー、ユーザースペース、ライブラリサンプルを提供する、市場初の「Linux 対応」製品です。
Linux penguin created by lewing@isc.tamu.edu using The GIMP software.
Linux | RTOS | Bare Metal |
---|---|---|
Full fledge operating system
|
Real Time Operating System
|
Physical device dedicated to run a single application
|
Linuxのような高レベルのオペレーティングシステムでは、迅速なアプリケーション開発と展開が可能で、ハードウェアの抽象化をサポートし、拡張性と移植性に優れています。Linux環境を使用して、AIアプリケーションの実行、センサーの制御などを行うことができます。さらにコンピューティング能力を高めるには、Efinity IPマネージャーで Sapphire SoCのマルチコア サポートを有効にして、最大 4つの VexRiscvプロセッサを構成します。
適切なツールがないと、Linuxカーネルの構築は面倒な作業になります。Efinixは、Linuxカーネルを構築するための Buildrootに基づく Linuxスタック構成リポジトリ (BR2-Efinix) を提供します。
BR2-Efinixは、Sapphire RISC-V SoC用の LinuxをビルドするためのカスタムBuildroot外部ツリーです。このリポジトリには、OpenSBI、U-boot、Linux、Buildroot構成ファイルとパッチが含まれています。リポジトリは Github ( https://github.com/Efinix-Inc/br2-efinix) からダウンロードしてください。
Buildroot
OpenSBI
U-Boot
Drivers
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または周辺機器を変更する場合はデバイスツリーを更新する必要があります。このスクリプトを使用すると、開発者はデバイスツリーファイルを簡単に再生成できます。
次の図は、Efinix開発ボード上のLinuxのブートシーケンスを示しています。ボードの電源がオンになると、第 1段階のブートローダが OpenSBI と U-Boot を SPIフラッシュから外部メモリ (RAM) にコピーします。次に、OpenSBIが実行され、メモリ、スタック ポインタ、CPUが初期化されます。次に、U-Bootが Linux カーネルをロードし、Linux を起動します。
開発フローはハードウェアとソフトウェアに分かれています。ハードウェア側では SoC FPGAビットストリームを生成します。ソフトウェア側では Linuxカーネルと関連するユーザー空間パッケージを構築します。