Western DigitalからオリジナルのRISC-VコアSweRVがリリースされ、テストベンチが動かせるようになった。
久しぶりに見てみると、アセンブリをコンパイルしてシミュレーションに使用する環境がマージされている。
テストには
- hello_world.s
- hello_world2.s
が格納されていて、どちらもアセンブリ言語だ。C言語のシミュレーションはもう少し中身を解析しないといけないなあ。
使い方はこうだ。アセンブリファイルの場所を指定してmake
を実行すると、自動的にコンパイルされる。
make -f $RV_ROOT/tools/Makefile program.hex ASM_TEST=hello_world2 ASM_TEST_DIR=./testbench/asm/ verilator-run
最後に、以下のような結果が表示された。
Start of sim ------------------------------ Hello World from SweRV @WDC !! ------------------------------ Finished : minstret = 389, mcycle = 1658
うーん、アセンブリの中身を見てみても、単純にコンソールのメモリアドレスにデータをストアしているだけで、スタックポインタとかどこを使えば良いのかイマイチ謎なんだよね。
testbench/asm/hello_world.s
... addi x0, x0, 0 lui x11, 853376 ori x9, x0, 'H' sw x9, 0 (x11) ori x9, x0, 'E' sw x9, 0 (x11) ori x9, x0, 'L' sw x9, 0 (x11) sw x9, 0 (x11)