RISC-V ボード VisionFive2 に Debian を入れてみた話
東京エリア・関西合同 Debian 勉強会

Norimitsu SUGIMOTO (杉本 典充)
dictoss@live.jp

2023-12-16

アジェンダ

自己紹介

RISC-V とは
Debian と RISC-V
RISC-V ボード PC「VisionFive2」の紹介
VisionFive2 のファームウェアの更新方法
VisionFive2 へ Debian をインストールする
VisionFive2 の NVMe SSD についてまとめ
参考資料

自己紹介

Norimitsu SUGIMOTO (杉本 典充)
dictoss@live.jp
Twitter: @dictoss
Debian を使い始めたのは 3.1 sarge が testing の頃
仕事はソフトウェア開発者をやってますpython と Django の組み合わせで使うことが多いですRISC-V とは

RISC-V とは2010 年頃にカリフォルニア大学バークレー校で設計された RISC 型 CPU の ISA (命令セット)
オープンソースライセンスで提供されている 1
Creative Commons Attribution 4.0 International Public
License

歴史的に RISC-I、II、III、IV、V とバージョンアップしてきた、というものではない
RISC-V はこれまでの経緯と課題を考慮した結果、スクラッチで開発したものらしい1

https://github.com/riscv/riscv-isa-manualDebian とRISC-V

Debian と RISC-V

Debian Wiki - RISC-V
https://wiki.debian.org/RISC-V
Debian Ports https://www.ports.debian.org/
時系列
2018-05-24 Debian Ports に riscv64 が追加
2023-07-23 Debian Ports の riscv64 が unstable に移動 22

https://lists.debian.org/debian-riscv/2023/07/msg00053.html

RISC-V
ボ ー ド PC
「VisionFive2」の紹介

VisionFive2
中国 StarFive 社が製造する RISC-V CPU を搭載するシングルボードコンピュータ (SBC)
https://www.starfivetech.com/en/site/boards

kickstarer.com のクラウドファウンディングで寄付を募って製造・販売された 32022-09-21 に寄付が締め切られ、早い人では 2022 年12 月に入手していた人がいる模様

ドキュメント https://doc-en.rvspace.org/Doc_Center/visionfive_2.html
クイックスタートガイド https://doc-en.rvspace.
org/VisionFive2/PDF/VisionFive2_QSG.pdf
3

https://www.kickstarter.com/projects/starfive/visionfive-2?lang=ja

VisionFive2 の画像 (表)VisionFive2 の画像 (裏)VisionFive2 のハードウェア情報
CPU：StarFive JH7110 64bit SoC RV64GC, up to1.5GHz クアッドコア
GPU：IMG BXE-4-32 MC1 3D GPU 600 MHz (端子はHDMI 2.0、MIPI-DSI)
メモリ：LPDDR4 SDRAM, up to 2,800 Mbps
(2GB/4GB/8GB モデルの 3 種類)
ストレージ：MicroSDHC/SDXC、eMMC、NVMe SSD(PCIe-2.0 x1)
ネットワーク：RJ-45 GbE 2 ポート
電源：USB PD 30W (USB Type-C 端子)、GPIO 5V、
PoE (要オプション)
その他：GPIO 端子 (コンソール等)、USB 3.0 x 4 ポート

VisionFive2 のソフトウェア情報

SDK
https://github.com/starfive-tech/VisionFive2
u-boot-spl.bin.normal.out ： SPL
visionﬁve2 fw payload.img ： U-Boot イメージ
sdcard.img ： SPL と U-Boot の更新用起動イメージ(buildroot)

Debian イメージ https://doc-en.rvspace.org/
VisionFive2/Quick_Start_Guide/VisionFive2_QSG/flashing_with_mac_linux.html

VisionFive2 の購入情報

Purchase Links https://forum.rvspace.org/t/
how-to-purchase-visionfive-2/665「Japan」と書いてあるリンクをクリックするとAmazon.co.jp の販売ページへジャンプする
販売元は WayPonDEV-jp
本体 4GB (無線 LAN ドングルなし)、アクリルケースを購入
自分は 2023-10-25 に購入し、2023-10-31 に届いた梱包を開けて製品を確認するとシールが 2 枚重ねて貼ってあった。上のシールをはがすと下のシールに「EarlyBird」の記載あり

VisionFive2のファーム
ウェアの更新方法

SPL、U-boot の更新方法
アップデート方法は 2 種類ある
Updating SPL and U-Boot of Flash4tftpboot コマンド (SD カードなしで実行可能)
ﬂashcp コマンド (VF2 v2.5.0 以降の buildroot 環境で実行可能)

今回入手したボードは初期ファームウェアの模様で、2段階で更新した
SD カードなしでブートし、tftpboot コマンドでv2.11.5 へ更新
v2.11.5 の sdcard.img でブートし、ﬂashcp で v3.7.5 へ
更新 54https://doc-en.rvspace.org/VisionFive2/Quick_Start_
Guide/VisionFive2_SDK_QSG/spl_new.html
52023-12-14 時点の最新は v3.9.3。

シリアルコンソールへの接続

PC と シリアルコンソールで接続する
GPIO からシリアルコンソールを取るピンアサイン
https://doc-en.rvspace.org/VisionFive2/Quick_Start_Guide/VisionFive2_SDK_QSG/recovering_bootloader%20-%20vf2.html

pin-6 GND、pin-8 TX、ping-10 RX
Raspberry Pi で使っている USB シリアル変換ケーブルが使えますTFTP サーバの準備
LAN 内に TFTP サーバを準備# apt-get update# apt-get install xinetd tftpd# mkdir /var/lib/tftpboot# chmod 777 /var/lib/tftpboot# vi /etc/xinetd.d/tftpd
service tftp{
disable = no
log_type = File /var/log/tftpd
log_on_success = HOST
log_on_failure = HOST
socket_type = dgram
protocol = udp
wait = yesuser = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpbootper_source = 11
cps = 100 2
flags = IPv4}# systemctl restart xinetd

TFTP 経由の SPL、U-boot の更新 (1)microSD カードは差さずに起動する
起動前の準備LAN ケーブルを差す (2 ポートの内、自分は外側を使用)
GPIO に USB シリアル変換ケーブルを差し、PC と接続

電源 ON

IP アドレスを設定し、LAN へ接続
StarFive # setenv ipaddr 192.168.1.230
StarFive # setenv serverip 192.168.1.1
StarFive # setenv gatewayip 192.168.1.1${serverip} は setenv で指定した値が展開されるため、そのまま実行すること
StarFive # ping ${serverip}
host 192.168.1.1 is alive

TFTP 経由の SPL、U-boot の更新 (2)SPI Flash を初期化
StarFive # sf probe
SF: Detected gd25lq128 with page size 256 Bytes,
erase size 4 KiB, total 16 MiB

SPL をダウンロードし、更新
StarFive # tftpboot 0xa0000000 ${serverip}:u-boot-spl.bin.normal.out
StarFive # sf update 0xa0000000 0x0 $filesize

U-Boot をダウンロードし、更新
StarFive # tftpboot 0xa0000000 ${serverip}:visionfive2_fw_payload.img
StarFive # sf update 0xa0000000 0x100000 $filesize

リセットしますStarFive # reset

Buildroot 環境での起動
microSD カードへ sdcard.img を dd して起動イメージを作成
https://github.com/starfive-tech/VisionFive2/
releases/tag/VF2_v2.11.5# dd if=sdcard.img of=/dev/sdb bs=1M status=progress

microSD カードを VisionFive2 にセットして起動すると「Buildroot」という linux 環境が起動する
Welcome to Buildroot
buildroot login: root
Password: starfive# version
Linux version 5.15.0 (jenkins@soft05) (riscv64-buildroot-linux-gnu-gcc.
br_real(Buildroot VF2_v2.11.5) 10.3.0, GNU ld (GNU Binutils) 2.36.1)#1 SMP Fri Mar 24 01:42:57 CST 2023
VF2_v2.11.5

ﬂashcp を使った SPL、U-boot の更新 (1)v3 系以上のバージョンの SPL、U-boot へ更新する
VisionFive2 の IP アドレスを確認しておく# ip aBuildroot 環境は busybox 環境で scp のサーバ側にはなれな
いため、別サーバでダウンロードしておいた SPL、U-bootファイルを scp で取得する■ LAN 内のサーバ# wget https://github.com/starfive-tech/VisionFive2/releases/download/
VF2_v3.7.5/visionfive2_fw_payload.img# wget https://github.com/starfive-tech/VisionFive2/releases/download/
VF2_v3.7.5/u-boot-spl.bin.normal.out■ VisionFive2# scp username@192.168.xxx.xxx:visionfive2_fw_payload.img /root/# scp username@192.168.xxx.xxx:u-boot-spl.bin.normal.out /root/ﬂashcp を使った SPL、U-boot の更新 (2)インストールするデバイス名を確認# cat /proc/mtd
dev:sizeerasesize namemtd0: 00040000 00001000 "spl"mtd1: 00300000 00001000 "uboot"mtd2: 00100000 00001000 "data"

ﬂashcp コマンドで更新■ VisionFive2# flashcp -v u-boot-spl.bin.normal.out /dev/mtd0# flashcp -v visionfive2_fw_payload.img /dev/mtd1# reboot

VisionFive2
へ Debianを イ ン
ストールするDebian イメージの準備
microSD カードへ Debian のイメージを dd して起動イメー
ジを作成
公式が Debian イメージを配布している 6
イメージは、sd / emmc / nvme がある
2023/08 の sd イメージを使ってみました
starﬁve-jh7110-202308-SD-minimal-desktop.img.bz2# bzip2 -d starfive-jh7110-202308-SD-minimal-desktop.img.bz2# dd if=starfive-jh7110-202308-SD-minimal-desktop.img \of=/dev/sdx bs=1M status=progress

microSD カードを VisionFive2 に差して起動すると、Debianunstable が起動する
6

https://doc-en.rvspace.org/VisionFive2/Quick_Start_Guide/VisionFive2_QSG/flashing_with_mac_linux.html

Debian イメージの起動
ログインは root ユーザ、パスワード「starﬁve」で行える
kernel は linux-5.15
root@starfive:~# uname -a
Linux starfive 5.15.0-starfive #1 SMP Wed Aug 23 11:18:20 CST
2023 riscv64 GNU/Linux

apt-line が debian ports になっているため、unstable に書き換えて apt で更新する# vi /etc/apt/sources.list
deb https://snapshot.debian.org/archive/debian-ports/20221225T084846Z
unstable main↓deb http://deb.debian.org/debian/ unstable main non-free-firmware
deb-src http://deb.debian.org/debian/ unstable main non-free-firmware# apt-get update# apt-get dist-upgrade# reboot

VisionFive2の NVMe
SSD についてVisionFive2 の NVMe SSD の性能
XiOXIA EXCERIA G2 500GB を差した
Read 2,100 MB/s
Write 1,700 MB/s

micsoSD カードの debian イメージで起動すると、NVMe SSD を認識している (/dev/nvme0n1)/dev/nvme0n1 を fdisk し、mkfs.ext4 でフォーマットしてベンチマーク# mkdir /mnt/ssd# mount /dev/nvme0n1p1 /mnt/ssd# dd if=/dev/zero of=/mnt/ssd/bench.dat bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.30584 s, 170 MB/s

NVMe SSD を root ディスクにするのは試せていません

まとめ

まとめ

クイックスタートガイドを読むとかなり部分が理解できるため、読みましょう

SPL、U-boot の更新は Buildroot のイメージで起動して行うのがよい
debian イメージで起動するところまでできれば、あとは PC と同じ
NVMe SSD の性能は microSD カードの性能と比べればかなり性能はよいが、PC レベルの性能は出ない参考文献

Ubuntu Weekly Recipe - 第 752 回 RISC-V のシングルボードコンピューターである VisionFive 2 を使ってみる
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0752
VisionFive 2 Datasheet https://doc-en.rvspace.org/
Doc_Center/visionfive_2.html
github.com - VisionFive2
https://github.com/starfive-tech/VisionFive2