FemtoRVのファームウェアを切り替える
FemtoRVはRAMへ「FIRMWARE/firmware.hex」を読み込むことでファームウェアの組み込みを実現している
code:FemtoRV/RTL/femtosoc.v
259 // Initialize the RAM with the generated firmware hex file.
260 // The hex file is generated by the bundled elf-2-verilog converter (see TOOLS/FIRMWARE_WORDS_SRC)
261 `ifndef NRV_RUN_FROM_SPI_FLASH
262 initial begin
263 $readmemh("FIRMWARE/firmware.hex",RAM);
264 end
265 `endif
ビルドする「FIRMWARE/firmware.hex」を切り替えることでファームウェアを切り替え可能
デフォルトのファームウェアは「FIRMWARE/FEMTOS/commander.c」
ビルドした commander.c が出力した実行ファイル(ELF)をELF2HEXを行う変換ツール「FIRMWARE/TOOLS/firmware_words」を使って「FIRMWARE/firmware.hex」へ変換する
以下の手順で「FIRMWARE/ASM_EXAMPLE/tinyblinky.S」をFemtoRVのファームウェアとして組み込むことができる
ビルド & アップロードに3分ちょっとかかる
code:shell
$ cd ~/src/learn-fpga/FemtoRV/
$ BOARD=ulx3s TOOLS/make_config.sh -DULX3S
$ cd FIRMWARE/
$ make libs
$ cd ..
$ cd FIRMWARE/ASM_EXAMPLES/
$ make clean tinyblinky.hex
$ cd ../..
$ make ULX3S.synth ULX3S.prog_fast
tinyraytracerも行ける。
code:sh
$ cd FIRMWARE/EXAMPLES/
$ make clean tinyraytracer.hex
$ cd ../..
$ make ULX3S.synth ULX3S.prog_fast
https://gyazo.com/0d5fe0bf61c171b639e1d0b8e158d9f7
FemtoRVデフォルトのファームウェアのビルド & 書き込み手順
デフォルトでは FEMTOS/commander.hex が書き込まれる。
$ cd ~/src/learn-fpga/FemtoRV/
$ BOARD=ulx3s TOOLS/make_config.sh -DULX3S
$ cd FIRMWARE/
$ make libs
$ cd ..
$ cd FIRMWARE/FEMTOS/
$ make clean commander.hex
$ cd ../..
$ make ULX3S.synth ULX3S.prog_fast