1.はじめに
前回、RISC-V技術ブログ連載第10回「SiFive最新リリース HiFive Unmatchedボードのご紹介⑥ 」では、HiFive UnmatchedボードでFreedom U SDK(FUSDK)を用いることで簡単に機械学習フレームワークの一つであるTensorFlow Liteを利用することができる点を、サンプルプログラムを動作させるなどしてお伝えしました。
今回も引き続き、HiFive Unmatchedボードを使った技術情報をお伝えしたいと思います。今回より、「HiFive Unmatched でベアメタルプログラミングに挑戦」と題して、LinuxなどのOSを用いずに動かすプログラムの作成、動作させる方法について、前編・後編の2回に渡ってお伝えしていきます。
2.ベアメタルプログラミングとは
ベアメタル(bare metal)とは、英和辞典で調べると、「むき出しの金属」や「金属の露出した面」といった説明がされており、そこから転じてIT業界では、OSやソフトウェアがインストールされていない、まっさらな状態の物理サーバーやHDDのことを言うようです。クラウド界隈ではこのような解釈が一般的ですが、組込みシステムの世界では、OSを介さずに直接ハードウェアを制御するコンピュータのことを指し、ベアメタルプログラミングとは、そのコンピュータ上で動作するプログラムを作ることを言います。小回りが利いて高速かつ省メモリで動作できるといったメリットがありますが、OSにお任せすべきことを自前でやらないとならないため、より複雑で労力が必要になるデメリットがあります。SiFiveは、この複雑で労力が必要になる点を解消するために、Freedom Studioというソフトウェア統合開発環境やFreedom E SDK(FESDK)というソフトウェア開発キットを提供しています。
3.Freedom Studio とFreedom E SDK(FESDK)
Freedom Studioとは、SiFiveが提供するソフトウェア統合開発環境で、こちら(https://www.sifive.com/software)より入手可能です。以前の技術ブログ「RISC-V技術ブログ連載第6回」でご紹介しましたが、SiFive RISC-V Core IPで動作するソフトウェア開発を進める際に利用することができます。
Freedom E SDK(FESDK)は、同じくSiFiveが提供するソフトウェア開発キットで、ベアメタルプログラミングを容易にするためのドライバやライブラリ、各種設定ファイル等が含まれています。上述のFreedom Studioにも同梱されていますが、FESDK単独ではこちら(https://github.com/sifive/freedom-e-sdk)から入手可能です。FESDK単独で利用することも可能ですが、Freedom Studioを利用することでより手軽にFESDKを利用した開発を進めることができます。
実は現時点(2021/10/22現在)では、Freedom Studio、FESDKともHiFive Unmatchedは正式サポートされていません。すでに関連ファイルがアップされていることから、近々正式なサポートがされる可能性がありますが、まずは現時点でできることの調査を含め、FESDKに同梱されるサンプルプログラム(sifive-welcome)をHiFive Unmatchedで実行、デバッグすることにチャレンジしてみたいと思います。

4.環境準備
まずは環境の準備をしていきます。
4.1.動作環境
①ハードウェア
- PC
メモリ:8GB以上推奨 - HiFive Unmatchedボード
- microSDカード(ボードに同梱のもの、またはFUSDKイメージ書き込み済み(※1))
- ATX電源
HiFive Unmatchedボード起動用 - USBケーブル(TypeA⇔MicroB)
データ通信用 - LANケーブルおよびインターネット接続環境
②ソフトウェア
- OS
Windows 10 64bit - Freedom Studio
v2021.04.1 - Freedom E SDK(FESDK)
最新(master)(※2) - ターミナルソフト
TeraTerm(ver.4.106)
※1 FUSDK(2021.09.00)イメージファイルはこちら(https://github.com/sifive/freedom-u-sdk/releases/tag/2021.09.00)から入手可能です。
※2 記事執筆時(2021/10/22)のものです。
4.2.Freedom Studioのインストール
現在、v2021.04.1が提供されています。すでにインストール済みでなければ、こちら(https://www.sifive.com/software)よりWindows版を入手します。

ダウンロードしたzipファイルは、”c:\FreedomStudio”フォルダを作成し、そこに展開してください。
4.3.ターミナルソフトのインストール
配布サイトから入手後、以下の設定を行います。
- ボーレート(スピード):115200
- データ長:8bit
- パリティ:none
- ストップビット:1bit
- フロー制御:none
- 改行コード:LF(※3)
※3 今回使用するFESDKでは、マルチプラットフォームに対応するため、受信の改行コードをLFとしています。
4.4.FESDKの取得と更新
Freedom StudioにはFESDKが同梱されていますが、HiFive Unmatched用の各種ファイルが含まれていないため、最新(master)のものに置き換える必要があります。以下の手順を行います。
①msysの起動
Freedom Studioインストールフォルダ内にあるmsys2を起動します。
②FESDKリポジトリクローンの作成
FESDKがインストールされているフォルダ(FreedomStudio/sifive)に移動し、FESDKリポジトリのクローンを作成します。
> git clone --recursive https://github.com/sifive/freedom-e-sdk.git
③今回取得したFESDKであることがわかるようにフォルダ名を変更し、サブモジュールをすべて取得します。
> mv freedom-e-sdk freedom-e-sdk-2021.10.22
> cd freedom-e-sdk-2021.10.22
> git pull origin master
> git submodule update --init --recursive
5.Freedom Studioの起動とFESDKサンプルプロジェクトの作成、ビルド
5.1.Freedom Studioの起動
Fredom Studioインストールフォルダにある、”FreedomStudio.exe”をダブルクリックします。最初にワークスペースの場所を聞いてきますので、任意の場所(下の画像の例では”c:\wsFreedomStudio”)を指定し、[Launch]ボタンを押してください。

5.2.FESDKサンプルプロジェクトの作成、ビルド
Freedom Studioで、FESDKサンプルプロジェクト(sifive-welcome)を作成します。

上図の様にプロジェクトの作成を進め、最後に [Finish] をクリックします。すると、自動的にビルド(Cソースプログラムのコンパイル)が開始されます。ビルドエラーがないことを確認し、今回はここまでとします。
6.まとめ
今回はHiFive Unmatchedボードでベアメタルプログラミングに挑戦すべく、まずはベアメタルプログラミングとは何か、Freedom StudioとFreedom ESDK(FESDK)について、そしてベアメタルプログラミングの事前準備についてお伝えしてきました。
次回は実際にHiFive Unmatchedボード上でベアメタルプログラムが動作する様子をターミナルソフトやFreedom Studio上のデバッガを使ってお伝えしたいと思います。どうぞお楽しみに!
本ブログについてのより詳しい内容へのご質問等ございましたら、ぜひお気軽にお問合せください。
お問い合わせはこちら
info-lsi@dts-insight.co.jp
■■DTSインサイトの「システムLSI設計ソリューションサービス」■■
DTSインサイトでは、システムLSI/FPGA設計の受託も行っています。
当社のノウハウを活かした、ソフトウェアの移行(マイグレーション)
サービスも提供しておりますので、お気軽にご相談ください。
システムLSI設計ソリューションサービス紹介は こちら