simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

HiFive1 RevB を買った

SiFive社から販売されているHiFive1 RevBのボードを買いました。

Hifive1 Rev.B

注文してから届くまで

GW前になんとなく欲しくなってポチっていました。元々HiFive1の存在は知っていましたが単純にArduino互換ボードで開発の自由度が高そうではなかったのであまり興味がもてませんでした。
今回購入したHiFive1 Rev.Bはオンボードでデバッガが搭載されているのでRISC-Vアーキテクチャの勉強に使えそうです。

CrowdSupply order detail
CrowdSupplyの注文明細

注文履歴を見ると4/25に注文しています。届いたのは5/22なのでほぼ1か月かかっています。
といっても入荷日が5/9だったようなので実質的には2週間もあれば届くようですね。

郵送について

商品はUSPSで発送されます。
発送後はネットで最新の情報が見られるので、自分が注文した商品がいまどこにあるのかワクワクしながら届くのを待つことができます。
履歴を見ているとアメリカのオレゴン州ポートランドを出発して、成田に到着するまで約3日程度でした。*1
ここまではかなりスムーズに配達されているように感じたのですが、関税の関係のためか成田についてから何日も待たされます。

開発の始め方

ドキュメント類の入手

とりあえずマニュアルやら回路図やらを公式サイトからダウンロードします。
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 Studio
起動時のスプラッシュ画像がおしゃれです。

コマンドラインで開発したい場合は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"を押します。

FreedomStudioのプロジェクト作成

すると、ターゲットボードとサンプルプロジェクトを選択する画面が表示されます。

Freedom Studio 雛形プログラムの選択

選択肢が沢山ありますが、ターゲットボードは当然"sifive-hifive1-revb"ですね。
サンプルプログラムも沢山用意されているようですが、とりあえず"hello"を選択してみましょう。

続けて、デバッガの設定ですが、"J-Link"を選択する必要があります。

Freedom Studio デバッガの設定

ここまで選択できれば"Finish"を押すとワークスペースにプロジェクトが作成されます。
プロジェクト作成時にSDKの情報の設定などで少し時間がかかるようです。あと初回は自動でビルドが走るみたいです。
Getting Started Guide にあるようにHiFive1 Rev.BのボードはパソコンからUSBのストレージとしてもみえているのでそこにビルドで生成されて.hexのファイルをコピーすることでファームの書き換えができるようです。

デバッグ

さて、せっかくオンボードのデバッガがあるボードなので開発環境からステップ実行したりアセンブラを読みながらプログラムを動かしたりしたいわけですが、私がJ-Linkに慣れていないこともありこれがスムーズにいきませんでした。

手元の環境でデバッグできるようになった設定をここで挙げておきます。

  • "Startup"→"Initial Reset and Halt"のチェックは外す
  • "Cotinue"のチェックもデフォルトで有効になっているのでこれもチェックを外す

Freedom Studio デバッグ設定

Freedom Studio デバッグ設定2

この状態でデバッグ接続を行うと無事ステップ実行できました!

FreedomStudioで無事ステップ実行ができました!

フォーラムについて

比較的新しいボードなのでやはりフォーラムの情報はチェックした方がよいみたいです。
デバッグの設定に関する情報もフォーラムの投稿で知りました。
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

*1:なぜか途中で逆方向のダラスに到着しているのを見たときは少し不安になりました

*2:116PしかないのでこちらもH/Wマニュアルにしては簡潔な気がしますが

*3:FreedomStudioにはこのSDKが同梱されています