# 必要な物をざっくりインストール
sudo apt-get install gcc libc6-dev pkg-config bridge-utils uml-utilities zlib1g-dev libglib2.0-dev autoconf automake libtool libsdl1.2-dev libpixman-1-dev cmake
# qemu build
# 4.1系を使う必要あり、4.0系だとこれにハマる。
# https://github.com/sifive/freedom-e-sdk/issues/260
# 4.1.0-rc0だとパッチがかかっている。
wget https://download.qemu.org/qemu-4.1.0-rc0.tar.xz
tar xvJf qemu-4.1.0-rc0.tar.xz
cd qemu-4.1.0-rc0
./configure --target-list=riscv64-softmmu,riscv32-softmmu,riscv64-linux-user,riscv32-linux-user
make -j$(nproc)
sudo make install
次にPlatformIOを使ってqemu向けベアメタル用のelfを作る。hifive1ボードをターゲットにしてサクッとビルドするだけ。それにしてもpioはこの手の組込み向けだと最強というか、VScodeは何でも出来てしまうヤバさがステキすぎる。ちなみに、みんな大好きSiPEED向けのボードも既にpioに入っていて、kendryte210 SDKでのビルドも作れる。

これで出来たfirmware.elfをEC2側に送ってqemuですぐ動かすことが出来る。
次に折角なのでLLVMのビルドも作っておく。これは以下の手順通りsifive(hifive1)の手順があって、toolchain/llvmの手順通り流すとビルドが終わる。
https://github.com/sifive/riscv-llvm
以上で物が揃って、全部qemu risc-vエミュ上でサクッと動かせる。あとはこんな感じで。
qemu-system-riscv32 -nographic -machine sifive_e -kernel firmware.elf
qemu-riscv32 hello

これで一通り、gnu-toolchain/llvm/qemu上での動作が確認できる。よくあるFedora RISC-Vも普通に動く感じ。次はQEMUのRISC-V命令セット部分をいじっていこう。