SiFive社から販売されているHiFive1 RevBのボードを買いました。
目次
注文してから届くまで
GW前になんとなく欲しくなってポチっていました。元々HiFive1の存在は知っていましたが単純にArduino互換ボードで開発の自由度が高そうではなかったのであまり興味がもてませんでした。
今回購入したHiFive1 Rev.Bはオンボードでデバッガが搭載されているのでRISC-Vアーキテクチャの勉強に使えそうです。
注文履歴を見ると4/25に注文しています。届いたのは5/22なのでほぼ1か月かかっています。
といっても入荷日が5/9だったようなので実質的には2週間もあれば届くようですね。
開発の始め方
ドキュメント類の入手
とりあえずマニュアルやら回路図やらを公式サイトからダウンロードします。
www.sifive.com
Getting Started Guide が提供されているのでまずはこれを読むのがよさそうです。
https://sifive.cdn.prismic.io/sifive%2F8d7b8385-64e3-4914-8608-8568412c8aae_hifive1b-getting-started-guide.pdf
この Getting Started Guide は開発環境や基板の概要について説明してくれています。全部で26ページとボリュームはないので一読しましょう。
Freedom E310-G002 Manualはチップのハードウェアマニュアルですね。開発環境の構築が終わったらじっくり読んでいきたいですね。*2
https://sifive.cdn.prismic.io/sifive%2F9ecbb623-7c7f-4acc-966f-9bb10ecdb62e_fe310-g002.pdf
開発環境
IDEとしてFreedom StudioというEclipseベースの開発環境が提供されています。
windows,Mac,Linuxと各プラットフォームに対応しています。
私はWindows版をダウンロードしました。
https://static.dev.sifive.com/dev-tools/FreedomStudio/2019.03.4/FreedomStudio-4.7.2.2019-03-4-win32.win32.x86_64.zip
コマンドラインで開発したい場合はFreedom E SDKという開発用ライブラリ(開発用のヘッダファイルなど)があります。
*3
Freedom E SDKのダウンロードはこちらのレポジトリからできるようです。
https://github.com/sifive/freedom-e-sdk
ツールチェイン一式
Freedom Studio内の SiFive\toolchain\riscv64-unknown-elf-gcc-8.2.0-2019.02.0\bin 以下にRISC-V用のツールチェイン一式(コンパイラ、アセンブラ、リンカ、objdump...etc)が配置されています。
USBのデバイスドライバについて
Getting Start Guide では、
drivers
are automatically installed, you do not need to download or install them seperately to get tools
and example code.
という一文がありましたが、私の環境ではどうもUSBの接続を適切に認識してくれていないようです。
J-Linkのドライバが入っているPCではComポートを認識されましたので
https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
こちらからドライバのインストーラをダウンロードしてインストールします。
無事インストールできるとUSB接続時にCOMポートが2つ認識されます。1つはCPU。1つはWiFiのモジュールの出力です。
ポートの設定は、bpsは115200、81Nです。
出荷時のプログラム
USBをつないで電源を投入すると、LEDがフェードするサンプルプログラムが動きます。
コンソールにもメッセージが出力されているのでTeraTermなどで確認できます。
Getting Started Guide では、サンプルプログラムが「LEDは光ってますか?」みたいな入力を求めると書いていましたがファームが変わったのかそのようなメッセージは表示されませんでした。
Sifiveのロゴのようなアスキーアートが表示されました。
Hello Worldの作り方
出荷状態のプログラムも動かしたところで今度は自分でビルドしたプログラムを走らせてみましょう。
と言っても最初から初めてのアーキテクチャのCPUでフルスクラッチでコードを書くのは無理なのでサンプルプログラムをビルドしたいところです。
Freedom E SDKにはサンプルプログラムが含まれていて、親切なことにFreedomStudioではサンプルプログラムのプロジェクトを作成できるようになっています。ありがたや!
手順ですが、まずはFreedomStudioの"File"→"New"→"C Project"を選択します。
ここで、プロジェクトの種別として、"Makefile Project"→"Freedom E SDK Project"を選択し、"Next"を押します。
すると、ターゲットボードとサンプルプロジェクトを選択する画面が表示されます。
選択肢が沢山ありますが、ターゲットボードは当然"sifive-hifive1-revb"ですね。
サンプルプログラムも沢山用意されているようですが、とりあえず"hello"を選択してみましょう。
続けて、デバッガの設定ですが、"J-Link"を選択する必要があります。
ここまで選択できれば"Finish"を押すとワークスペースにプロジェクトが作成されます。
プロジェクト作成時にSDKの情報の設定などで少し時間がかかるようです。あと初回は自動でビルドが走るみたいです。
Getting Started Guide にあるようにHiFive1 Rev.BのボードはパソコンからUSBのストレージとしてもみえているのでそこにビルドで生成されて.hexのファイルをコピーすることでファームの書き換えができるようです。
デバッグ
さて、せっかくオンボードのデバッガがあるボードなので開発環境からステップ実行したりアセンブラを読みながらプログラムを動かしたりしたいわけですが、私がJ-Linkに慣れていないこともありこれがスムーズにいきませんでした。
手元の環境でデバッグできるようになった設定をここで挙げておきます。
- "Startup"→"Initial Reset and Halt"のチェックは外す
- "Cotinue"のチェックもデフォルトで有効になっているのでこれもチェックを外す
この状態でデバッグ接続を行うと無事ステップ実行できました!
フォーラムについて
比較的新しいボードなのでやはりフォーラムの情報はチェックした方がよいみたいです。
デバッグの設定に関する情報もフォーラムの投稿で知りました。
forums.sifive.com
感想
RISC-VのアセンブラはMIPSに近いですね。レジスタにもゼロレジスタとかあるのでMIPSの後継感があります。まぁ当然なのですが。
RISC-VについてもMIPSについてもよく知らないのでこの辺はモナリザ本や大熱血アセンブラ本を読んで勉強していきたいと思います。
ちなみにLinuxも動かせるHiFive Unleashedは$999で販売されています。$999って言われても為替の影響で10万円超えるんですよね...
お金に余裕ができたらこっちも触ってみたいところです。
www.crowdsupply.com
追記(2024-08-18)
開発環境のfreedom studioですが、sifiveのサイトのリンク管理がされていないせいかダウンロードできなくなっていました。
過去のバージョンになるかもしれませんが、githubuの以下のリンクからダウンロードできるようです。
github.com