FemtoRVのサンプルプログラムを動かしてみる
https://gyazo.com/5fdb6cf31cfd09d06ddbfa1594ab2fac
事前準備
事前にMac用のツールチェインをインストールしておく
$ brew tap kost/homebrew-ulx3s
$ brew install --HEAD project-trellis yosys nextpnr-trellis fujprog
fujprogをujprogとして使えるようシンボリックリンクを張る
$ ln -s /usr/local/bin/fujprog /usr/local/bin/ujprog
(M1の場合) ln -s /opt/homebrew/bin/fujprog /opt/homebrew/bin/ujprog
FemtoRVはfujprogではなくujprogを利用しているが、fujprogと使い方は一緒なのでシンボリックリンクを張って済ませる
FemtoRVをインストール
$ cd ~/src
$ git clone git@github.com:BrunoLevy/learn-fpga.git
$ cd learn-fpga/FemtoRV/
$ make ULX3S
もろもろビルドされてULX3Sのflashへ書き込まれる
flashではなくSRAMへ書き込む場合はこちら↓
$ make ULX3S.fast
サンプルプログラム(ASM_EXAMPLES)を動かしてみる
$ cd FIRMWARE/ASM_EXAMPLES
$ make tinyblinky.elf
ビルドされた tinyblinky.elf をSDカードへ書き込む
$ cp tinyblinky.elf /Volumes/NO\ NAME/
tinyblinky.elf を書き込んだSDカードをULX3Sへ差し込む
ULX3Sの電源を入れる
HDMIでディスプレイに接続していると画面に「tinyblinky」と表示されるので「right」ボタンを押す
LEDが呼吸してるみたいに明滅すればOK
(時々SDカードの初期化に失敗することがあるので、その時はUSBケーブルを抜き差しすると直る...ことがある...)
サンプルプログラム(EXAMPLES)を動かしてみる
$ cd FIRMWARE/EXAMPLES
$ make everything
$ cp ./tinyraytracer.elf /Volumes/NO\ NAME/
SDカードをULX3Sへ差し込む
ULX3Sの電源を入れる
HDMIでディスプレイに接続していると画面に「tinyraytracer」と表示されるので「right」ボタンを押す
(ここで sd_readsector: Timeout エラーが出る場合は、以下の低速度SDカード用のパッチをあてると動くかもしれない)
GFX MODE選択画面が表示されるので「FGA 320x200 16」を選択
レイトレシーシングの結果が画面に出力される
https://gyazo.com/5fdb6cf31cfd09d06ddbfa1594ab2fac