はじめに
Arria 10 SoC を使用して Linux ではなく OSレス(ベアメタル)で ARM の評価がしたい、もしくは触ってみたけどよくわからんって人向けにとりあえずサンプルのソフトウェアを動かすところまでを紹介します。
使ったツールは v18.0 です。
提供されているサンプルを動かしてみよう
ではさっそく DS-5 を利用して提供されているサンプルを動かしてみましょう。
サンプルはツールのインストール・ディレクトリ(C:\intelFPGA\18.0\embedded\examples\software)とか
ここ(リンク)とかにあります。
ここでは Altera-SoCFPGA-HardwareLib-Timer-A10-GNU.tar.gz を動かしてみましょう。
DS-5 のインポートメニューで上記を取り込んで実行してみます。
なんかエラーが出る。
ERROR(CMD127): そのようなファイルまたはディレクトリはありません: <PATH>\Altera-SoCFPGA-HardwareLib-Timer-A10-GNU\debug-hosted.ds
エラーを見ると debug-hosted.ds が無いと言っているがプロジェクトには存在している。単純にファイルを開こうとしてもダメでどうやら権限に問題がある模様。 Makefike.inc を見てみると debug-a10.ds を使用しているだけだったのでこっちを使うことに。
気を取り直してもう一度実行。先ほどのエラーは出なくなったが今度は別のエラーが。
ERROR(CMD360): #(<PATH>\Altera-SoCFPGA-HardwareLib-Timer-A10-GNU\debug-a10.ds):36 次の実行中: wait 30s
! 停止したタイムアウトを待機しています
ERROR(CMD656): スクリプトの実行中にエラーが発生したため、スクリプト <PATH>\Altera-SoCFPGA-HardwareLib-Timer-A10-GNU\debug-a10.ds の完了に失敗しました
サンプルなのに動かない。なぜ?
というわけで、そもそもの仕組みの理解から始めることになりました。トホホ。
SDRAM コントローラは FPGA 側にある
色々調べてみると原因はここにありました。Arria 10 SoC は SDRAM コントローラが FPGA 側にいるので ARM だけ動かす場合にも FPGA をコンフィグしてあげる必要があるとのこと。
このためツールのインストールディレクトリに格納されている sof ファイルを使うことにしました。
対象のファイルはこれです。
C:\intelFPGA\18.0\embedded\examples\hardware\a10_soc_devkit_ghrd\output_files\ghrd_10as066n2.sof
Quartus を立ち上げるのが面倒なので Embedded_Command_Shell から以下のコマンドでコンフィグします。
$ nios2-configure-sof ghrd_10as066n2.sof
再び DS-5 のサンプルプロジェクトを動かしてみる
さて、ようやくこれで準備が整いました。
が、動かない。と思ってボードをよく見るとなんと DDR が実装されていませんでした。灯台下暗し。
再々度 DS-5 のサンプルプロジェクトを動かしてみる
DDR カード実装後、サンプルを実行してみると。(FPGA をコンフィグすることをお忘れなく)
はい。この通り動きました。これでようやくソフトウェアの開発が始められます。
今回ハマったおかげで Early Release IO という機能があることもわかりました。こちらについては別途機会があれば紹介します。
この記事が皆さんのお役に立てたのであれば幸いです。
#おまけ
clean するとエラーが。
make: *** [Makefile.inc:135: clean] Error 127
rm コマンドがこうなっているようなので
RM := cs-rm -rf
いつものコマンドに変更
RM := rm -rf
無事エラーがなくなりましたとさ。