twitterのつぶやきで、FPGAにArduinoを実装するプロジェクトの存在を知りました。
FPGA上にArduino(https://t.co/2XOITQ3iNR)を入れてみて動作確認完了!かなりお手軽&AとXの両対応なのが熱い! pic.twitter.com/dft02fZroy— Hiroki Nakahara (@oboe7man) 2016年4月14日
RISC-V / MIPS software / hardware Arduino FPGA stack
手持ちのminiSpartan6+でArduinoのスケッチを動かすまでにまあまあ苦労したので、手順を共有します。
使用したもの
■FminiSpartan6+FPGAボードです。
下記のサイトから(記事作成時点では$105で)買えます。
miniSpartan6+ with Spartan 6 LX 25
■Ubuntu14.04がインストールされたPC
xc3sprogが使える状態のubuntuです。
インストールしていないと多分エラーが出ます。
xc3sprogインストールは下記の記事で行っています。
ubuntuからminiSpartan6+にテストプログラムを送信する
■ArduinoIDE-1.6.8
ubuntuに標準で入っているのは1.0系なので、1.6未満のバージョンを使用されている方は、下記のサイトから最新版をダウンロードしてください。
Arduino Software
手順
全体像
- Arduino IDEにFPGArduinoをインストール
- ujprogのコンパイルと設置
- sudoでArduino IDEを起動
- miniSpartan6+ツールを設定
- ブートローダーを書き込む(Burn Bootloader)
- スケッチをアップロード
上から順に説明していきます。
Arduino IDEにFPGArduinoをインストール
Arduino1.6系はボードマネージャという機能が使えるようになっていて、FPGArduinoはその機能を利用してインストールできます。ボードマネージャを起動する前に、ファイル -> 環境設定 を開いて、「追加のボードマネージャのURL」に下記のurlを記述します。
urlを記述したらOKを押して環境設定を閉じます。
http://www.nxlab.fer.hr/fpgarduino/package_f32c_core_index.json
次に、ツール -> マイコンボード -> ボードマネージャ を選択します。
FPGArduinoのインストールボタンを押します。
50MBから100MB位をダウンロードするため、まあまあ時間がかかります。
ujprogのコンパイルと設置
ujprogとはFPGArduinoで使われているファイルアップロードのためのソフトウェアです。ボードマネージャーで取得するujprogだと下記のエラーが出ます。
TX error at 80000000 ftdi_set_latency_timer() failed
ubuntuでは期待通りには動かないようなので、下記のコマンドでソースをコンパイルして、Arduinoのujprogを置き換えます。
cd ~/gitprojects git clone git@github.com:f32c/tools.git cd tools/ujprog cp Makefile.linux makefile make cp ujprog ~/.arduino15/packages/FPGArduino/tools/ujprog/1.0.0/ujprog
sudoでArduino IDEを起動
2016/5/3時点では、fpgaへブートローダーを書き込むにはsudo権限が必要なので、Arduinoをsudoで起動します。(FPGArduinoの作成者によると、sudo 権限無しでも書き込めるようにツールを改良予定ということなので、もしかすると記事をご覧になっている時にはsudo無しで大丈夫かもしれません。)
sudoでarduinoのシェルを実行しただけでは、インストールしたファイルが読み込まれないので、下記のコマンドでrootにシムリンクを設置します。
sudo ln -s /home/asuki/.arduino15 /root/
上記の設定をすれば、下記のコマンドで期待通りに起動できるはずです。
sudo ~/arduino-1.6.8/arduino
ちなみに、sudoで起動しないと、fpgaにデータを書き込もうとする時に下記のエラーが出ました。
Open On-Chip Debugger 0.9.0 (2015-06-17-22:32) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html XC3SPROG (c) 2004-2011 xc3sprog project $Rev: 774 $ OS: Linux Free software: If you contribute nothing, expect nothing! Feedback on success/failure/enhancement requests: http://sourceforge.net/mail/?group_id=170565 Check Sourceforge for updates: http://sourceforge.net/projects/xc3sprog/develop Could not open FTDI device (using libftdi): inappropriate permissions on device! Unable to access FTDI device with either libftdi or FTD2XX Error while burning bootloader.
miniSpartan6+のためにツールの値を設定
下記のようにツールの値を設定します。なお、2016/5/3時点では、Upload bitstreamでFLASHを選択しても書き込まれるのはブートローダーだけなので、ArduinoのプロジェクトはFPGAの電源を落とすかリセットボタンを押すと消えます。
ブートローダーを書き込む(Burn Bootloader)
ツールの一番下のメニューを選択し、ブートローダを書き込みます。ブートローダーが書き込めると、LEDが4つごとにフワフワ光ります。
ちなみに、ブートローダー書き込み時に、下記のエラーが出た場合は、
/home/asuki/.arduino15/packages/FPGArduino/tools/openocd/0.9.0/bin/openocd: error while loading shared libraries: libhidapi-hidraw.so.0: cannot open shared object file: No such file or directory Error while burning bootloader.
下記のコマンドでライブラリをインストールすれば、動くようになります。
sudo apt-get install libhidapi-dev
スケッチをアップロード
ブートローダーが書き込めたら、Arduinoのスケッチがアップロード出来ようになっています。LEDを点滅させるスケッチ(ファイル -> スケッチの例 -> 01.Basics -> Blink)をアップロードすると、5番のLEDが点滅するようになりました。
FPGArduinoで作っているCPUのサンプルスケッチ(ファイル -> スケッチの例 -> f32c_VGATextConsole -> c2_spriters)をアップロードしてHDMI接続すると、ファミコンみたいな画面が出ます。
以上です。
面白がってもらえたり、何かの参考になれば嬉しいです。
0 件のコメント :
コメントを投稿