RISC-V の開発環境

RISC-V量子拡張は, 「RiscV.RV32IU」として @k_yamaz 蛙 が提案しています.
(詳しくは, 技術ブログ Qiita に投稿した RISC-Vの量子計算拡張 をご参照ください. )
思いつきなどをメモしていきます.

RISC-V の開発環境を整えています. Visual Studio Code で開発環境を整えます.

  • VSCode を起動

  • “PlatformIO IDE” の Extension をインストール(Extensionsタブをクリックして, 検索欄から “PlatformIO” を検索)
    ※インストール時の出力 Window を閉じてしまわないように注意.

  • コマンドパレット(Ctrl + Shift + P or 左下の設定アイコン => Command Palette)を開き, “PlatformIO”と検索

  • “PlatformIO : Home”を選択し, 起動

  • New Projectを選択し, Name, Board, Framework を入力

    • Name : プロジェクトの名前 (”risc-q”と入力)
    • Board : ボードの種類. (”HiFive1(SiFive)”を選択)
    • Framework : Boardに合わせた選択肢. (”Freedom E SDK”を選択)

しばらく待つと利用可能になります.

簡単なテストコードとして, 次の src/test.c を作成します.

1
2
3
4
5
6
#include <stdio.h>

int main(int argc, char **argv) {
printf("Hello RISCV\n");
return 0;
}

コマンドパレット(ビルドは “PlatformIO : Build”), または下部の青いバーにあるアイコンで, ビルドを行います.
.pioenvs/hifive1/firmware.elf に ELF 形式のファイルが作られます. コマンドプロンプトから, 次のようなコマンドで
firmware.elf を読み込むと実行できるはずでした. (がうまくいきません. 動かない理由を調査して次回以降に報告します. )

1
qemu-system-riscv32 -nographic -machine sifive_e -kernel firmware.elf

(出力される画面)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
qemu: hardware error: sifive_prci_read: read: addr=0xc

CPU #0:
pc 20401d82
mhartid 00000000
mstatus 00000000
mip 00000000
mie 00000000
mideleg 00000000
medeleg 00000000
mtvec 204001dc
mepc 00000000
mcause 00000000
zero 00000000 ra 20401b6c sp 80000c30 gp 80000f90
tp 00000000 t0 20402ba0 t1 20402020 t2 80000878
s0 80000000 s1 20401d82 a0 80000874 a1 1000800c
a2 ffffffff a3 204022b8 a4 00010000 a5 10008000
a6 7fffffff a7 00000000 s2 20402b90 s3 00000000
s4 00000000 s5 00000000 s6 00000000 s7 00000000
s8 00000000 s9 00000000 s10 00000000 s11 00000000
t3 00000000 t4 00000000 t5 00000000 t6 00000000
ft0 0000000000000000 ft1 0000000000000000 ft2 0000000000000000 ft3 0000000000000000
ft4 0000000000000000 ft5 0000000000000000 ft6 0000000000000000 ft7 0000000000000000
fs0 0000000000000000 fs1 0000000000000000 fa0 0000000000000000 fa1 0000000000000000
fa2 0000000000000000 fa3 0000000000000000 fa4 0000000000000000 fa5 0000000000000000
fa6 0000000000000000 fa7 0000000000000000 fs2 0000000000000000 fs3 0000000000000000
fs4 0000000000000000 fs5 0000000000000000 fs6 0000000000000000 fs7 0000000000000000
fs8 0000000000000000 fs9 0000000000000000 fs10 0000000000000000 fs11 0000000000000000
ft8 0000000000000000 ft9 0000000000000000 ft10 0000000000000000 ft11 0000000000000000
Abort trap: 6