VisionFive2

StarFive VisionFive2 で X を立ち上げる

StarFive VisionFive2 着弾からの続きです。公式から配布されている Image-69 を使うためには SPL と U-Boot を更新しなければいけないので、そのために VisionFive2 SDK から取得できる sdcard.img を使って Linux を立ち上げるところまでできました。

SPL と U-Boot の更新

sdcard.img がビルドできているなら、同じ場所に u-boot-spl.bin.normal.out と visionfive2_fw_payload.img ができているので、VisionFive2 に転送します。

※ここでネットワークが繋がっている必要があるので手持ちの USB Wifi ドングルを繋げてみたところ、そのままではネットワークインターフェースとして認識してくれませんでした。調べるのがめんどくさいので私は有線接続してしまいましたが、USB Wifi をサクッと動かしたい人はボードと一緒に公式から購入してしまうのが良いかもしれないです。

sdcard.img で立ち上げた環境では root での ssh 接続が許可されているので、scp を使用して転送できます。

chiyama@riscv:~/VisionFive2/VisionFive2/work$ scp u-boot-spl.bin.normal.out root@192.168.0.111:.
root@192.168.0.111's password:
u-boot-spl.bin.normal.out 100% 125KB 915.4KB/s 00:00
chiyama@riscv:~/VisionFive2/VisionFive2/work$ scp visionfive2_fw_payload.img root@192.168.0.111:.
root@192.168.0.111's password:
visionfive2_fw_payload.img 100% 2728KB 4.8MB/s 00:00
chiyama@riscv:~/VisionFive2/VisionFive2/work$

続いて Updating SPL and U-Boot の手順通りに SPL と U-Boot を更新します。

root@starfive:~# flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
root@starfive:~# flashcp -v visionfive2_fw_payload.img  /dev/mtd1

X の起動

再起動して無事に立ち上がることが確認できたら SD カードに Image-69 を焼いてそれで立ち上げます。。。が、シリアル上では OS が立ち上がっているのに HDMI 側に X が表示されない。何でかー???と思たら、キーボードやマウスが繋がっていないと X が立ち上がらないようです。これ以外にも X 周りはまだ不安定なようで、突然死んだり色々起こるようです。

動作確認

gcc と make を入れてプログラムをコンパイルしてみます。

root@starfive:~# apt install gcc
root@starfive:~# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-linux-gnu/11/lto-wrapper
Target: riscv64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 11.3.0-3' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gc --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.3.0 (Debian 11.3.0-3)
root@starfive:~# apt install make
root@starfive:~# cat hello.c
#include <stdio.h>

int main(int argc, char **argv) {
  printf("Hello, StarFive2!!\n");

  return 0;
}

root@starfive:~# make hello
cc     hello.c   -o hello
root@starfive:~# ./hello
Hello, StarFive2!!
root@starfive:~#

いい感じですねっ!!これで RISC-V を手軽に試すことのできる環境が整いました。これまでは”作って学ぶコンピュータアーキテクチャ“を読むときにはシミュレータを使ってきたのですが、動作がかなり重いので実機があるのはとても嬉しいです。

処理能力について

普段、Raspberry Pi4 を使う時には GUI を使わないのであまり正確な比較はできないものの、X の立ち上がり時間なんかは RPi4 に比べて結構かかるかな?という気がします。コンソールで処理したり、hello をコンパイル・実行するくらいなら当然ですが全くストレスは感じないです。このあたりはベンチマークも取ってみたいですね。

StarFive VisionFive2 で X を立ち上げる”への5件のコメント

  1. こんにちは。
    早速で恐縮ですが,”作って学ぶコンピュータアーキテクチャ“に掲載されているプログラムを実機で動かしたいと思っているのですが,VF2で動作していますでしょうか。
    この記事でお書きになっているその後の進展(動作する・しない)などあれば知りたいです。

    1. こんにちは。私も以前同じ本で学習していて、その時はエミュレータで動作させるだけでVF2で動かすことはやっていなかった気がします。
      最初の方でちょっとだけLLVMやコード生成周りを確認しような気もしますが、ちょっと記憶が曖昧です。すみません。

      もしご存じでしたら蛇足ですが、開発環境が本の執筆時からかなり変わっていて出版直後でもそのままで動作しない部分が結構あったので
      サポートページで情報が更新されています。最新の状況に追従できているか不明ですが、こちらもご参考になってみるのも良いかもしれません。

      https://github.com/msyksphinz-self/support_ca_llvm_book

      1. 返信いただきありがとうございます。

        作者さまによるSF1上でのRISC-Vプログラムの実行例の紹介 (https://speakerdeck.com/msyksphinz/masumasuzhu-mu-sareruopuncpuakitekutiyarisc-vfalsezui-xin-dong-xiang?slide=43) などを参考に,書籍のプログラムを動かそうとしましたが,どうもうまくいきませんでした…。
        サポートページ含め,最新の情報を追っていこうと思います。

        1. すいませんStarFiveとSiFiveに空見しておりました。機器が違うんで動くわきゃないですね…。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です