目的
前回のブログ「TensorFlow lite for micro で RISC-Vターゲットのサンプルをビルドする」で生成した、Hello worldのバイナリを実行する。
ただ、実機("Hifive1" SiFive FE310 development board)は持っていないため、qemuで動作させる。
qemuでの実行
qemuの準備
RISC-Vターゲットのqemuを準備する。Fedora 31にはパッケージ(qemu-system-riscv 4.1.1)が存在するが、今回はver.4.2をソースビルドする。
ソースビルド
依存関係のインストール。追加で必要になったのは以下(その他はTensorFlowなどのビルドで入っているかも?)。
$ sudo dnf install glib2-devel pixman-devel
ソースファイルをダウンロード。
$ wget https://download.qemu.org/qemu-4.2.0.tar.xz $ tar xf qemu-4.2.0.tar.xz $ cd qemu-4.2.0/
configure, makeを行う。ターゲットはriscv32-softmmuのみでよいはず。後のことも考えて、その他のRISC-Vターゲットもビルドする。
$ ./configure --target-list=riscv64-softmmu,riscv32-softmmu,riscv64-linux-user,riscv32-linux-user $ make -j$(nproc) $ sudo make install
バイナリのqemuでの実行
前回のブログで作成したTensorFlow lite for microのRISC-Vターゲットのバイナリ(Hello worldのサンプル)を実行する。
オプションの指定は以下。
- machineオプション: sifive_e
- kernelオプション: 作成したELFファイル
tensorflow/tensorflow/lite/micro/tools/make/gen/riscv32_mcu_riscv32_mcu/bin/hello_world
実行。
$ qemu-system-riscv32 -nographic -machine sifive_e -kernel tensorflow/tensorflow/lite/micro/tools/make/gen/riscv32_mcu_riscv32_mcu/bin/hello_worl
コンソールにログが出力される。Hello worldのサンプルは正弦波を出力するモデルである。x_value, y_valueにそれなりの値が永遠と出力される。
0 件のコメント:
コメントを投稿