GUIの開発環境を使ってRISC-Vを動かしてみよう

RISC-V用のプログラムを開発する場合、いくつかの方法があります。

  • Arduino IDEを使って開発する
  • Freedom-E-SDKを使って開発する

Arduino IDEは他のArduinoプラットフォームとの親和性が良く、Arduinoチップとして楽しむならば十分な環境です。また、Freedom-E-SDKはコンソールを使ってプログラムのコンパイルやアップロードを行う環境で、初心者にはややハードルが高いですが、柔軟なプログラムを開発することができます。

そんな中で、Linux, Windows, MacOSに対応した開発環境として、EclipseをベースとしたGUIツールとして、SiFive社から"Freedom Studio"という開発環境が公開されています。

図図. Freedom StudioのGUI画面

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:" に先ほど展開したディレクトリの場所を指定します。

図図. Import Projects でExampleのディレクトリを指定する

自動的にサンプルプログラムが読み込まれ、プロジェクトがインポートされます。[Finish]ボタンをクリックすると、プロジェクトがロードされていることが分かります。

図図. Freedom Studioにプロジェクトがインポートされた様子

予めパッケージに含まれているサンプルプログラムをFreedom Studioにインポートし、その中でサンプルプログラムの一つであるdemo_gpioを動作させます。ビルドを実行し、「Debug Run」を実行するとデバッグモードに移行します。

動作を確認するために、Tera Termからシリアルコンソールを観測すると、無事にコンソールにプログラムの動作状態が表示されました。

図freedom-studio-debug

プロジェクト"Hello"を動作させてみよう

次に、"hello"プロジェクトを選択してコンパイルし、HiFive1ボードで動作させてみましょう。hello.cの中身は以下のようになっています。

#include <stdio.h>

int main()
{
  puts("hello world!\n");

  return 0;
}
					

"hello"プロジェクトを選択して、メニューから[Project]→[Build All]を選択します。プロジェクトがコンパイルされ、バイナリが生成されていることが分かります。

図図. プロジェクトhelloのコンパイル結果

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");の部分にデバッグ用のトリガかかけられているためです。

図図. Freedom Studioでhelloを実行したところ。ハードウェアトリガがかけられている。

F8キーを押してResume実行しましょう。最後までプログラムが完走するはずです。ここで先ほどのTera Termの画面を見ると、きちんとメッセージが表示されています。

図

終わりに

今回はRISC-VのGUI開発環境であるFreedom Studioを使ってみました。これまでご紹介した通り、RISC-Vの開発環境は様々なものが用意されています。自分に最適なものを選択して、使ってみてください。

今回で、RISC-Vの連載は終了です。非常に基礎的なものではありますが、RISC-Vを使うための最初のステップについて解説してきました。RISC-Vを使い始めるにあたり、少しでも参考になれば幸いです。

前の記事を読む