RISC-V用のプログラムを開発する場合、いくつかの方法があります。
- Arduino IDEを使って開発する
- Freedom-E-SDKを使って開発する
Arduino IDEは他のArduinoプラットフォームとの親和性が良く、Arduinoチップとして楽しむならば十分な環境です。また、Freedom-E-SDKはコンソールを使ってプログラムのコンパイルやアップロードを行う環境で、初心者にはややハードルが高いですが、柔軟なプログラムを開発することができます。
そんな中で、Linux, Windows, MacOSに対応した開発環境として、EclipseをベースとしたGUIツールとして、SiFive社から”Freedom Studio“という開発環境が公開されています。
Freedom Studioのダウンロードとインストール
Freedom StudioのダウンロードはSiFiveのホームページから誰でもダウンロードすることができます。
SiFiveのウェブサイトから、Windows版のFreedom Studio(v20180122 beta3)をダウンロードします。ダウンロード完了してファイルを展開し、FreedomStudio\Freedom Studio.exe
をダブルクリックするだけでFreedom Studioを起動できます。
さらに、HiFive1をWindows上でデバッグするためには、Windowsにドライバをインストールする必要があります。マニュアルには$(Freedom Studioのパッケージ場所)\FreedomStudio\SiFive\Misc
に格納されているドライバをインストールすることと書いてありますが、どうやらドライバは$(Freedom Studioのパッケージ場所)\FreedomStudio\Sifive\Driver
に移動しているようです。HiFive1を使用するときはHiFive1_Driver.exe
、それ以外の場合はOlimex_Driver.exe
をインストールします。
サンプルプログラムをインポートしてHiFive1で動作させる
それでは、Freedom Studioに格納されているサンプルプログラムを動作させてみましょう。サンプルプログラムはFreedomStudio\SiFive\Examples
に圧縮して格納されています。ここでは、HiFive1.zip
を展開してインポートします。HiFive1.zip
を展開すると、以下のプロジェクトが用意されていることが分かります。
- demo_gpio
- dhrystone
- hello
- led_fade
つぎに、このプロジェクトをインポートします。Freedom Studioのメニューから[File]→[Open Projects from File System…]をクリックします。”Import Projects from File System or Archive”ウィンドウが開きますので、”Import source:” に先ほど展開したディレクトリの場所を指定します。
自動的にサンプルプログラムが読み込まれ、プロジェクトがインポートされます。[Finish]ボタンをクリックすると、プロジェクトがロードされていることが分かります。
予めパッケージに含まれているサンプルプログラムをFreedom Studioにインポートし、その中でサンプルプログラムの一つであるdemo_gpio
を動作させます。ビルドを実行し、「Debug Run」を実行するとデバッグモードに移行します。
動作を確認するために、Tera Termからシリアルコンソールを観測すると、無事にコンソールにプログラムの動作状態が表示されました。
プロジェクト”Hello”を動作させてみよう
次に、”hello”プロジェクトを選択してコンパイルし、HiFive1ボードで動作させてみましょう。hello.cの中身は以下のようになっています。
#include <stdio.h> int main() { puts("hello world!\n"); return 0; }
“hello”プロジェクトを選択して、メニューから[Project]→[Build All]を選択します。プロジェクトがコンパイルされ、バイナリが生成されていることが分かります。
HiFive1はUSB経由でWindowsPCに接続されている状態とします。このときシリアルデバイスが見えていますので、それを観察することにします。ここではTera Termを使用しました。
さて、準備が完了したのでFreedom Studioに戻って、メニューの[Run]→[Debug Configurations]をクリックします。ここでは”hello”プロジェクトをデバッグしたいので、”GDB OpenOCD Debugging”をダブルクリックします。”hello OpenOCD”を選択し、以下の画面が表示されたら、最後に”Debug”ボタンをクリックします。
しばらくすると、プログラムがHiFive1に転送されてプログラムが起動します。Console画面を見ていると、hardware triggerによりプログラムの実行が停止されていることが分かります。これはputs("hello world!n");
の部分にデバッグ用のトリガかかけられているためです。
F8キーを押してResume実行しましょう。最後までプログラムが完走するはずです。ここで先ほどのTera Termの画面を見ると、きちんとメッセージが表示されています。
終わりに
今回はRISC-VのGUI開発環境であるFreedom Studioを使ってみました。これまでご紹介した通り、RISC-Vの開発環境は様々なものが用意されています。自分に最適なものを選択して、使ってみてください。
今回で、RISC-Vの連載は終了です。非常に基礎的なものではありますが、RISC-Vを使うための最初のステップについて解説してきました。RISC-Vを使い始めるにあたり、少しでも参考になれば幸いです。
こちらも是非
“もっと見る” RISC-V編
GUIの環境は好きじゃない!Freedom SDKを使ったアプリケーション開発
Arduino IDEを使ってプログラムを書き込む方法をはじめ、EclipseベースのGUI環境であるFreedom Studioを使うとGUI環境でプログラムを開発することが出来ます。その一方で、GUIを使うのは面倒だし、Linuxなどを使っていればコマンドラインからすべて操作したいという人はたくさんいると思います。
Arduino互換RISC-Vプロセッサ“HiFive1”を使ってみる
RISC-Vを使うにはいろんな手段があります。ASICチップが乗っているボードを買ってくることもできますし、FPGAにデザインを焼いて動作させることができます。特にFPGAを使う場合は、自分で簡単にカスタマイズすることもできますので独自のRISC-V環境を作ることもできます。
RISC-Vの実装
RISC-Vを使うにはいろんな手段があります。ASICチップが乗っているボードを買ってくることもできますし、FPGAにデザインを焼いて動作させることができます。特にFPGAを使う場合は、自分で簡単にカスタマイズすることもできますので独自のRISC-V環境を作ることもできます。