XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築
作成者:mou-mou
まず、XyloniボードでEfinixの開発環境などを学ぶ場合、Xyloni Resource Centerにあるチュートリアルであったり、GitHubに置かれているサンプルデザインをもとに進めていくことになると思います。
ただ、GitHubに置かれているプロジェクトは、OpalSoCを使用していて、かつSDKのチュートリアルはあるが、SoCをハードウエアに組み込む部分に関しての説明が見当たりません。また、ROM化してデバイスへ書き込む方法についてはチュートリアルにはありません。マニュアルには記載がありますが、正直な感想としては、少しわかりにくいと思います。
そこで、Xyloniボードにおいて
- Sapphire SoC の 実装
- RISC-V SDKでのプロジェクト作成、ビルド、デバッグ
- ROM化してXyloniボードのFlashROMへの書き込み
の手順をご紹介いたします。
前提として、以下の記事の内容を実践して開発環境が整っていることを前提とします。
また、Sapphire SoCのIP生成においてJavaが必要となります。Efinityのユーザーガイドやインストールユーザーガイドでは OpenJDK 16 などが記載されておりますが、OpenJDK 18.0.1.1で正常に動作しております。もしJavaが入っていない場合は、
を参考に環境構築を行ってください。
RISC-V SDKを取得していない場合は、
を参考に事前に環境構築を行ってください。
Sapphire SoC の 実装
まずは、以下の手順でSapphire SoCが実装されたXyloniボード用のプロジェクトを作っていきます。
- Xyloniボードに搭載されているTRION T8F81C2のプロジェクトを生成
- Sapphire SoCのIP生成およびサンプルコードの生成
- サンプルコードからのTOP層のソースコードおよび制約ファイルの取り込み
- TOP層のソースコードの修正
- Xyloni Resource Centerに掲載されているGitHubに置かれているサンプルデザイン(soc_Opal)からインタフェースに関するファイルを取り込む
- Interface Designerで設定を修正変更
- コンパイル
- Fhash ROMへの書き込み
RISC-V SDKでのプロジェクト作成、ビルド、デバッグ
次に、以下の手順でRISC-V SDKのプロジェクトを作成して、ビルドおよびデバッグ環境を構築します。ここでは、Sapphire SoCを生成したときに、自動で生成されるデモソースのうちuartEchoDemoを使用して作業をすすめていきます。
- RISC-V SDKを起動してワークスペースをつくる
- uartEchoDemoのプロジェクトを生成してビルドする
- RUN/DEBUGの設定を行う
- RUNでuartEchoDemoを実行する
- Debug用の環境変数を設定してDEBUG実行する
Configuration Flash ROMデータ生成
- Debug用の環境変数を設定してリビルドする
- ファームウエアを結合したFlash ROM書き込みデータをコンパイルする
- Configuration Flashへ書き込み動作を確認する