Finally, I got duo-buildroot-sdk built today. So, yes, happy Chinese new year of Dragon, 2024. Let's have some fun of Milk-V Duo 256M.

1. Introduction

From Milk-V Duo 256M's official website, the following picture clearly shows it has

MilkV Duo 256M Core chips

The detailed specifications are also highlighted in the table on the official website of Milk-V Duo 256M.

2. Build duo-buildroot-sdk

2.1 Failed to build duo-buildroot-sdk using Ubuntu 22.04

Even if I strictly followed the manual on duo-buildroot-sdk's official documentation Compiled using Ubuntu 22.04, I still failed to build an image out for flashing, with the following error messages inside the log file build/br.log:

1
2
3
4
5
6
7
8
......
2024-02-08T13:34:11 tic: symbol lookup error: tic: undefined symbol: _nc_disable_period
2024-02-08T13:34:11 ? tic could not build ....../duo-buildroot-sdk-Duo-V1.0.8/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/per-package/ncurses/host/riscv64-buildroot-linux-musl/sysroot/usr/share/terminfo
2024-02-08T13:34:11 make[4]: *** [Makefile:92: install.data] Error 1
2024-02-08T13:34:12 make[3]: *** [Makefile:122: install] Error 2
2024-02-08T13:34:12 make[2]: *** [package/pkg-generic.mk:289: ....../duo-buildroot-sdk-Duo-V1.0.8/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/build/ncurses-6.1/.stamp_staging_installed] Error 2
2024-02-08T13:34:12 make[2]: *** Waiting for unfinished jobs....
......

A possible solution is found at: https://lore.kernel.org/buildroot/bug-15685-163-ecW1EgIyRW@https.bugs.busybox.net%2F/T/.

2.2 Successfully build duo-buildroot-sdk using Docker

By strictly following the manual on duo-buildroot-sdk's official documentation Compiled using Docker, I now am able to build an image out as:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
......
mkfs.fat: Warning: lowercase labels might not work properly on some systems
INFO: vfat(boot.vfat): adding file 'fip.bin' as 'fip.bin' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '~/install/soc_cv1812cp_milkv_duo256m_sd/boot.vfat' '~/install/soc_cv1812cp_milkv_duo256m_sd/fip.bin' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'rawimages/boot.sd' as 'rawimages/boot.sd' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '~/install/soc_cv1812cp_milkv_duo256m_sd/boot.vfat' '~/install/soc_cv1812cp_milkv_duo256m_sd/rawimages/boot.sd' '::'" (stderr):
INFO: ext4(rootfs.ext4): cmd: "genext2fs -d '~/install/soc_cv1812cp_milkv_duo256m_sd/tmp/root' --size-in-blocks=786432 -i 16384 '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4' " (stderr):
copying from directory ~/install/soc_cv1812cp_milkv_duo256m_sd/tmp/root
INFO: ext4(rootfs.ext4): cmd: "tune2fs -O 'extents,uninit_bg,dir_index,has_journal' '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr):
INFO: ext4(rootfs.ext4): cmd: "tune2fs -L 'rootfs' '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr):
INFO: ext4(rootfs.ext4): cmd: "e2fsck -pvfD '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr):
INFO: hdimage(milkv-duo256m.img): adding partition 'boot' (in MBR) from 'boot.vfat' ...
INFO: hdimage(milkv-duo256m.img): adding partition 'rootfs' (in MBR) from 'rootfs.ext4' ...
INFO: hdimage(milkv-duo256m.img): writing MBR
gnimage for milkv-duo256m success!
~/build
~
Create SD image successful: out/milkv-duo256m-20240208-1949.img

And, the last couple of lines in the log file build/br.log are:

1
2
3
4
5
6
7
8
9
10
11
......
2024-02-08T19:48:15
2024-02-08T19:48:15 Allocating group tables: 0/25 done
2024-02-08T19:48:15 Writing inode tables: 0/25 done
2024-02-08T19:48:15 Creating journal (4096 blocks): done
2024-02-08T19:48:15 Copying files into the device: PATH="~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/host/bin:~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/host/sbin:~/host-tools/gcc/riscv64-linux-musl-x86_64/bin:~/host-tools/gcc/riscv64-linux-x86_64/bin:~/host-tools/gcc/riscv64-elf-x86_64/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-elf/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:~/host-tools/gcc/arm-cvitek-linux-uclibcgnueabihf/bin" xz -9 -C crc32 -c -T 9 ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.tar > ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.tar.xz
2024-02-08T19:48:16 done
2024-02-08T19:48:16 Writing superblocks and filesystem accounting information: 0/25 done
2024-02-08T19:48:16
2024-02-08T19:48:16 ln -sf rootfs.ext2 ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.ext4
2024-02-08T19:49:28 make[1]: Leaving directory '~/buildroot-2021.05'

3. Boot after Flashing

After flashing the generated out/milkv-duo256m-20240208-1949.img into the SD card, we can now boot up Milk-V Duo 256M by connecting it with my laptop via a USB cable.

3.1 lsusb

1
2
3
......
Bus 001 Device 009: ID 3346:1009 Cvitek RNDIS
......

3.2 SSH into Milk-V Duo 256M via USB Connection

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
➜  ~ ssh root@192.168.42.1
The authenticity of host '192.168.42.1 (192.168.42.1)' can't be established.
ED25519 key fingerprint is SHA256:NyuhOwhRh9sfzW+C2D5OIaTIbGCuVI1v1jrJv4DaM+U.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.42.1' (ED25519) to the list of known hosts.
root@192.168.42.1's password:
[root@milkv-duo]~# ls
[root@milkv-duo]~# pwd
/root
[root@milkv-duo]~# uname -a
Linux milkv-duo 5.10.4-tag- #1 PREEMPT Thu Feb 8 19:28:21 CST 2024 riscv64 GNU/Linux
[root@milkv-duo]~# lsb_release -a
-sh: lsb_release: not found
[root@milkv-duo]~# neofetch
-sh: neofetch: not found
[root@milkv-duo]~# ll /
total 33
drwxr-xr-x 18 root root 1024 Feb 8 2024 ./
drwxr-xr-x 18 root root 1024 Feb 8 2024 ../
drwxr-xr-x 2 root root 3072 Feb 8 2024 bin/
drwxr-xr-x 7 root root 1540 Jan 1 00:00 dev/
drwxr-xr-x 8 root root 1024 Jan 1 00:00 etc/
drwxr-xr-x 3 root root 1024 Jan 30 2024 lib/
lrwxrwxrwx 1 root root 3 Feb 8 2024 lib64 -> lib/
lrwxrwxrwx 1 root root 11 Feb 8 2024 linuxrc -> bin/busybox*
drwx------ 2 root root 16384 Feb 8 2024 lost+found/
drwxr-xr-x 2 root root 1024 Jan 30 2024 media/
drwxr-xr-x 6 root root 1024 Jan 30 2024 mnt/
drwxr-xr-x 2 root root 1024 Jan 30 2024 opt/
dr-xr-xr-x 122 root root 0 Jan 1 00:00 proc/
drwx------ 2 root root 1024 Jan 1 00:03 root/
drwxr-xr-x 4 root root 200 Jan 1 00:00 run/
drwxr-xr-x 2 root root 3072 Feb 8 2024 sbin/
dr-xr-xr-x 11 root root 0 Jan 1 00:00 sys/
drwxrwxrwt 3 root root 160 Jan 1 00:00 tmp/
drwxr-xr-x 8 root root 1024 Feb 8 2024 usr/
drwxr-xr-x 5 root root 1024 Feb 8 2024 var/
[root@milkv-duo]~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 752.0M 152.6M 557.0M 22% /
devtmpfs 83.1M 0 83.1M 0% /dev
tmpfs 83.1M 0 83.1M 0% /dev/shm
tmpfs 83.1M 48.0K 83.1M 0% /tmp
tmpfs 83.1M 32.0K 83.1M 0% /run
[root@milkv-duo]~# cat /proc/cpuinfo
processor : 0
hart : 0
isa : rv64imafdvcsu
mmu : sv39

[root@milkv-duo]~# cat /proc/meminfo
MemTotal: 170288 kB
MemFree: 147812 kB
MemAvailable: 148580 kB
Buffers: 872 kB
Cached: 3024 kB
SwapCached: 0 kB
Active: 2520 kB
Inactive: 2808 kB
Active(anon): 72 kB
Inactive(anon): 1440 kB
Active(file): 2448 kB
Inactive(file): 1368 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 44 kB
Writeback: 0 kB
AnonPages: 1444 kB
Mapped: 2532 kB
Shmem: 80 kB
KReclaimable: 2664 kB
Slab: 7220 kB
SReclaimable: 2664 kB
SUnreclaim: 4556 kB
KernelStack: 1024 kB
PageTables: 404 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 85144 kB
Committed_AS: 5004 kB
VmallocTotal: 67108863 kB
VmallocUsed: 4408 kB
VmallocChunk: 0 kB
Percpu: 32 kB
CmaTotal: 0 kB
CmaFree: 0 kB
[root@milkv-duo]~#

3.3 SSH into Milk-V Duo 256M via Wired Connection

After my clumsy soldering, Milk-V Duo 256M is now able to be connected via my home Intranet. Now, let's ssh into Milk-V Duo 256M via its IP address.

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@milkv-duo]~# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 0a:95:ef:1e:ec:c2 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.51/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 259082sec preferred_lft 226682sec
3: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 5e:59:d4:f7:99:f7 brd ff:ff:ff:ff:ff:ff
inet 192.168.42.1/24 brd 192.168.42.255 scope global usb0
valid_lft forever preferred_lft forever

4. Camera Test - Face Detection

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[root@milkv-duo]~# cd /bin
[root@milkv-duo]/bin# ls
arch chattr cpio dumpkmap getopt link lsattr mount nuke pwd setarch su uname
ash chgrp date echo grep linux32 mk_cmds mountpoint pidof resume setpriv sync usleep
base32 chmod dd egrep gunzip linux64 mkdir mt ping rm setserial tar vi
base64 chown df false gzip ln mknod mv pipe_progress rmdir sh touch watch
busybox compile_et dmesg fdflush hostname login mktemp netstat printenv run-parts sleep true zcat
cat cp dnsdomainname fgrep kill ls more nice ps sed stty umount
[root@milkv-duo]/bin# camera-test.sh
[SAMPLE_COMM_SNS_ParseIni]-1950: Parse /mnt/data/sensor_cfg.ini
[parse_source_devnum]-1605: devNum = 1
[parse_sensor_name]-1686: sensor = GCORE_GC2083_MIPI_2M_30FPS_10BIT
[parse_sensor_busid]-1714: bus_id = 2
[parse_sensor_i2caddr]-1725: sns_i2c_addr = 37
[parse_sensor_mipidev]-1736: mipi_dev = 0
[parse_sensor_laneid]-1747: Lane_id = 1, 0, 2, -1, -1
[parse_sensor_pnswap]-1758: pn_swap = 0, 0, 0, 0, 0
MMF Version:7e0cc6a08-musl_riscv64
Create VBPool[0], size: (3110400 * 3) = 9331200 bytes
Create VBPool[1], size: (3110400 * 3) = 9331200 bytes
Create VBPool[2], size: (2764800 * 1) = 2764800 bytes
Total memory of VB pool: 21427200 bytes
Initialize SYS and VB
Initialize VI
ISP Vipipe(0) Allocate pa(0x8c771000) va(0x0x3fbed36000) size(291120)
stSnsrMode.u16Width 1920 stSnsrMode.u16Height 1080 25.000000 wdrMode 0 pstSnsObj 0x3fbf86b400
[SAMPLE_COMM_VI_StartMIPI]-483: sensor 0 stDevAttr.devno 0
awbInit ver 6.8@2021500
0 R:1400 B:3100 CT:2850
1 R:1500 B:2500 CT:3900
2 R:2300 B:1600 CT:6500
Golden 1024 1024 1024
WB Quadratic:0
isWdr:0
ViPipe:0,===GC2083 1080P 30fps 10bit LINE Init OK!===
********************************************************************************
cvi_bin_isp message
gerritId: 36403 commitId: c69c5863e
md5: cab880835a2ad5184de5ed7762404b84
sensorNum 1
sensorName0 2083

PQBIN message
gerritId: 80171 commitId: 5c9d8fc5d
md5: ba5a510e093ad42db6788e6c2d13169e
sensorNum 3
sensorName0 2053

author: wanqiang.he desc: 思博慧CV1812H_GC2083_RGB_mode_V1.0.0
createTime: 2023-08-04 16:48:08version: V1.1
tool Version: v3.0.5.24 mode:
********************************************************************************
sensorName(0) mismatch, mwSns:2083 != pqBinSns:2053
[SAMPLE_COMM_ISP_Thread]-95: ISP Dev 0 running!
Initialize VPSS
---------VPSS[0]---------
Input size: (1920x1080)
Input format: (19)
VPSS physical device number: 1
Src Frame Rate: -1
Dst Frame Rate: -1
--------CHN[0]-------
Output size: (1920x1080)
Depth: 1
Do normalization: 0
Src Frame Rate: -1
Dst Frame Rate: -1
----------------------
--------CHN[1]-------
Output size: (1920x1080)
Depth: 1
Do normalization: 0
Src Frame Rate: -1
Dst Frame Rate: -1
----------------------
------------------------
Bind VI with VPSS Grp(0), Chn(0)
Attach VBPool(0) to VPSS Grp(0) Chn(0)
Attach VBPool(1) to VPSS Grp(0) Chn(1)
Initialize VENC
venc codec: h264
venc frame size: 1920x1080
Initialize RTSP
rtsp://192.168.1.51/h264
prio:0
version: 1.4.0
scrfd768432 Build at 2023-12-25 01:21:44 For platform cv181x
Max SharedMem size:1658880
anchor:-8,-8,8,8
anchor:-16,-16,16,16
bbox:bbox_8_Conv_dequant
landmark:kps_8_Conv_dequant
score:score_8_Sigmoid_dequant
anchor:-32,-32,32,32
anchor:-64,-64,64,64
bbox:bbox_16_Conv_dequant
landmark:kps_16_Conv_dequant
score:score_16_Sigmoid_dequant
anchor:-128,-128,128,128
anchor:-256,-256,256,256
bbox:bbox_32_Conv_dequant
landmark:kps_32_Conv_dequant
score:score_32_Sigmoid_dequant
Enter TDL thread
Enter encoder thread
0 R:1165 B:3087 CT:2688
1 R:1464 B:2327 CT:3937
2 R:1974 B:1613 CT:7225
Golden 1464 1024 2327
wdrLEOnly:1
face count: 0
face count: 0
face count: 0
face count: 0
face count: 0
face count: 0
face count: 0
......

One captured image over rtsp://ipaddress/h264 is shown as follows:

MilkV Duo Streaming

Now, it's the time to go to bed. Happy Chinese new year's Eve. The new year's day of 2024 is February 10, 2024.

Finally, in China, I setup my old laptop.

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
➜  ~ neofetch
.-/+oossssoo+/-. lvision@lvision-GT72-6QE
`:+ssssssssssssssssss+:` ------------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 22.04.3 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: GT72 6QE REV:1.0
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 6.5.0-15-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 26 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 3057 (dpkg), 13 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: zsh 5.8.1
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1920x1080
ossyNMMMNyMMhsssssssssssssshmmmhssssssso DE: GNOME 42.9
ossyNMMMNyMMhsssssssssssssshmmmhssssssso WM: Mutter
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ WM Theme: Adwaita
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Theme: Yaru [GTK2/3]
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Icons: Yaru [GTK2/3]
+sssssssssdmydMMMMMMMMddddyssssssss+ Terminal: gnome-terminal
/ssssssssssshdmNNNNmyNMMMMhssssss/ CPU: Intel i7-6700HQ (8) @ 3.500GHz
.ossssssssssssssssssdMMMNysssso. GPU: NVIDIA GeForce GTX 980M
-+sssssssssssssssssyyyssss+- Memory: 3075MiB / 64254MiB
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.



➜ ~

1. Overview

1.1 What Is ESP32-S3

ESP32-S3 is a dual-core XTensa LX7 MCU, capable of running at 240 MHz. Apart from its 512 KB of internal SRAM, it also comes with integrated 2.4 GHz, 802.11 b/g/n Wi-Fi and Bluetooth 5 (LE) connectivity that provides long-range support. (Cite from Espressif's official online doc ESP32-S3).

In this blog, I'm going to heavily follow ESP32-S3-EYE Getting Started Guide.

1.2 Directly Plug-In USB Type C

1
2
3
➜  ~ lsusb | grep Espressif  
Bus 009 Device 034: ID 303a:700f Espressif ESP32-S3-EYE
➜ ~

1.3 Entering Flash Mode

Steps to enter flash mode:

  • Plug out USB Type C
  • Press BOOT button
  • Plug in USB Type C
  • Release BOOT button
1
2
3
➜  ~ lsusb| grep Espressif
Bus 009 Device 035: ID 303a:1001 Espressif USB JTAG/serial debug unit
➜ ~

1.4 Flash Default Firmware esp32-s3-eye-v2.2-firmware-v0.2.0-en.bin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
➜  v2.2 git:(master) esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 460800 write_flash -z 0x0 esp32-s3-eye-v2.2-firmware-v0.2.0-en.bin
esptool.py v4.8.1
Serial port /dev/ttyACM0
Connecting...
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: ec:da:3b:9d:58:18
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00762fff...
Compressed 7745536 bytes to 4981103...
Wrote 7745536 bytes (4981103 compressed) at 0x00000000 in 48.0 seconds (effective 1292.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
➜ v2.2 git:(master)

1.5 Demonstration

ESP-S3-EYE Booting ESP-S3-EYE Camera ESP-S3-EYE Face Detection
Luckfox Pico Ultra W Enable CSI Luckfox Pico Ultra W CSI Enabled Luckfox Pico Ultra W CSI Enabled

2. WiFi

1. Symptom

When I tried to build qt 5.15, I always obtain the following ERROR message:

1
2
3
4
5
6
7
8
9
10
Project ERROR: Library 'assimp' is not defined.
make[4]: *** [Makefile:85: sub-assimp-install_subtargets] Error 3
make[4]: Leaving directory '/opt/qt/qt-everywhere-src-5.15.12/qtquick3d/src/plugins/assetimporters'
make[3]: *** [Makefile:59: sub-assetimporters-install_subtargets] Error 2
make[3]: Leaving directory '/opt/qt/qt-everywhere-src-5.15.12/qtquick3d/src/plugins'
make[2]: *** [Makefile:206: sub-plugins-install_subtargets-ordered] Error 2
make[2]: Leaving directory '/opt/qt/qt-everywhere-src-5.15.12/qtquick3d/src'
make[1]: *** [Makefile:62: sub-src-install_subtargets] Error 2
make[1]: Leaving directory '/opt/qt/qt-everywhere-src-5.15.12/qtquick3d'
make: *** [Makefile:378: module-qtquick3d-install_subtargets] Error 2

2. Reason

Why? Please refer to QT5.15在Ubuntu22.04上编译流程.

3. Solution

  • Modify line 13 of /opt/qt/qt-everywhere-src-5.15.12/qtquick3d/src/plugins/assetimporters/assimp/assimp.pro from QMAKE_USE_PRIVATE += assimp to QMAKE_USE_PRIVATE += quick3d-assimp.
  • Don't use assimp-5.2.2 from Ubuntu default repo, but build and install assimp (5.2.3 or above) from source.

China indeed is becoming better and better. Let me show you some pictures in SuZhou before my flight back to Vancouver.

Temple @ Lingyanshan, MUdu, Suzhou Stone Turtle @ Lingyanshan, Mudu, Suzhou
Linyanshan Temple Linyanshan Turtle
ShanTang Road XiangXi Bridge
XiangXi XiangXi Unknown Bridge
XuanGuan Temple PingJiangRoad Starbucks
PingJiang Road PingJiangRoad Side Road

1. My Working Environment

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
➜  ~ neofetch                                                              
.-/+oossssoo+/-. lvision@lvision-MS-7C60
`:+ssssssssssssssssss+:` -----------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 24.04 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: MS-7C60 1.0
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 6.8.0-39-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 18 hours, 3 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 5669 (dpkg), 25 (brew), 18 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: zsh 5.9
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 2560x1440
ossyNMMMNyMMhsssssssssssssshmmmhssssssso DE: GNOME 46.0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso WM: Mutter
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ WM Theme: Adwaita
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Theme: Adwaita [GTK2/3]
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ Icons: Adwaita [GTK2/3]
+sssssssssdmydMMMMMMMMddddyssssssss+ Terminal: gnome-terminal
/ssssssssssshdmNNNNmyNMMMMhssssss/ CPU: AMD Ryzen Threadripper 3960X (48) @ 3.800GHz
.ossssssssssssssssssdMMMNysssso. GPU: NVIDIA GeForce RTX 3090
-+sssssssssssssssssyyyssss+- Memory: 9520MiB / 257591MiB
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.

2. Introduction

2.1 First Look

Luckfox Pico Max Top View Luckfox Pico Max Bottom View Luckfox Pico Max Top View with Camera
Luckfox Pico Max Top View Luckfox Pico Max Bottom View Luckfox Pico Max Top View with Camera

2.2 Official Documentation

Actually, ALL you need can be found at:

2.3 Luckfox Pico Max

According to the Luckfox Pico Product Parameters, two streams of the products can be categorized into 2 classes by their chips:

  • RV1103:
    • Luckfox Pico
    • Luckfox Pico Mini A
    • Luckfox Pico Mini B
    • Luckfox Pico Plus
  • RV1106:
    • Luckfox Pico Pro
    • Luckfox Pico Max

[!NOTE]
From Taobao, the one I purchased is a Luckfox Pico Max.

3. Have Some Fun

3.1 lsusb For Direct USB Plug-In

1
2
➜  ~ lsusb | grep -i Fuzhou
Bus 009 Device 013: ID 2207:0019 Fuzhou Rockchip Electronics Company rk3xxx

A little weird: Why rk3xxx but not rv1106 ???

3.2 ssh Into Luckfox Pico

I personally prefer ssh into LuckFox Pico over Intranet and talk a look.

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
➜  ~ ssh root@192.168.1.66
# pwd
/root
# cd /
# ls -la
total 0
drwxr-xr-x 20 1002 1002 1584 Nov 14 2023 .
drwxr-xr-x 20 1002 1002 1584 Nov 14 2023 ..
drwxrwxr-x 2 1002 1002 5704 Nov 16 2023 bin
lrwxrwxrwx 1 1002 1002 8 Sep 1 09:04 data -> userdata
drwxr-xr-x 12 root root 2020 Jan 1 12:00 dev
drwxrwxr-x 11 1002 1002 2184 Jan 1 12:00 etc
drwxrwxr-x 3 1002 1002 2168 Nov 16 2023 lib
lrwxrwxrwx 1 1002 1002 3 Nov 14 2023 lib32 -> lib
lrwxrwxrwx 1 1002 1002 3 Nov 30 2021 lib64 -> lib
lrwxrwxrwx 1 1002 1002 11 Nov 14 2023 linuxrc -> bin/busybox
drwxr-xr-x 2 1002 1002 160 Oct 16 2023 media
drwxr-xr-x 3 1002 1002 224 Oct 16 2023 mnt
drwxrwxr-x 3 1002 1002 296 Jan 1 13:10 oem
drwxr-xr-x 2 1002 1002 160 Oct 16 2023 opt
dr-xr-xr-x 126 root root 0 Jan 1 12:00 proc
drwxrwxr-x 6 1002 1002 664 Nov 16 2023 rockchip_test
drwx------ 2 1002 1002 160 Oct 16 2023 root
drwxr-xr-x 6 root root 220 Jan 1 12:00 run
drwxrwxr-x 2 1002 1002 5120 Nov 16 2023 sbin
dr-xr-xr-x 13 root root 0 Jan 1 12:00 sys
drwxrwxrwt 3 root root 100 Jan 1 13:06 tmp
drwxrwxr-x 2 1002 1002 312 Jan 1 12:00 userdata
drwxrwxr-x 7 1002 1002 608 Nov 14 2023 usr
drwxr-xr-x 5 1002 1002 736 Nov 16 2023 var
1
2
3
4
# uname -a
Linux luckfox 5.10.110 #1 Tue Nov 14 18:06:04 CST 2023 armv7l GNU/Linux
# python --version
Python 3.11.6
1
2
3
4
5
6
7
8
9
# df -h
Filesystem Size Used Available Use% Mounted on
ubi0:rootfs 181.3M 60.0M 121.3M 33% /
devtmpfs 90.9M 0 90.9M 0% /dev
tmpfs 91.0M 0 91.0M 0% /dev/shm
tmpfs 91.0M 64.0K 90.9M 0% /tmp
tmpfs 91.0M 488.0K 90.5M 1% /run
/dev/ubi4_0 20.2M 17.1M 3.0M 85% /oem
/dev/ubi5_0 2.2M 28.0K 2.2M 1% /userdata
1
2
3
4
5
6
7
8
9
10
11
12
13
# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 61.13
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : Generic DT based system
Revision : 0000
Serial : eb8d68468b29abe9
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
31
32
33
34
35
36
37
38
39
40
41
# cat /proc/meminfo
MemTotal: 186388 kB
MemFree: 156648 kB
MemAvailable: 164500 kB
Buffers: 0 kB
Cached: 11224 kB
SwapCached: 0 kB
Active: 6112 kB
Inactive: 10000 kB
Active(anon): 200 kB
Inactive(anon): 5248 kB
Active(file): 5912 kB
Inactive(file): 4752 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 4908 kB
Mapped: 7520 kB
Shmem: 560 kB
KReclaimable: 3840 kB
Slab: 8156 kB
SReclaimable: 3840 kB
SUnreclaim: 4316 kB
KernelStack: 576 kB
PageTables: 428 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 93192 kB
Committed_AS: 19308 kB
VmallocTotal: 1032192 kB
VmallocUsed: 3580 kB
VmallocChunk: 0 kB
Percpu: 32 kB
CmaTotal: 67584 kB
CmaAllocated: 12 kB
CmaReleased: 67572 kB
CmaFree: 0 kB

From what I can see after SSH into my Luckfox Pico, the one I purchased is a Luckfox Pico Pro.

4. Reflash

4.1 Entering Flash Mode

  • Press BOOT button
  • Press RESET button
  • Release RESET button
  • Release BOOT button

To demonstrate it is flash mode now:

1
2
➜  ~ lsusb | grep -i Fuzhou
Bus 009 Device 015: ID 2207:110c Fuzhou Rockchip Electronics Company

4.2 Flash firmware

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
➜  Luckfox_Pico_Pro_Max_Flash sudo upgrade_tool uf update.img 
[sudo] password for lvision:
Loading firmware...
Support Type:1106 FW Ver:0.0.00 FW Time:2024-07-10 14:43:58
Loader ver:1.01 Loader Time:2024-07-10 14:42:28
Start to upgrade firmware...
Download Boot Start
Download Boot Success
Wait For Maskrom Start
Wait For Maskrom Success
Test Device Start
Test Device Success
Check Chip Start
Check Chip Success
Get FlashInfo Start
Get FlashInfo Success
Prepare IDB Start
Prepare IDB Success
Download IDB Start
Download IDB Success
Download Firmware Start
Download Image... (100%)
Download Firmware Success
Upgrade firmware ok.

4.3 ssh Into LuckFox Pico Max

Luckfox Pico Max CPUInfo Luckfox Pico Max MemInfo
Luckfox Pico Max CPUInfo Luckfox Pico Max MemInfo

5. Luckfox Pico Max CSI Camera

5.1 Connection Of CSI Camera

For my LuckFox Pico Max, I need to follow the following citation: When connecting the camera to LuckFox Pico Pro/Max development boards, ensure that the metal side of the camera ribbon cable faces the chip on the development board. (Refer to CSI Camera)

v4l2-ctl --list-devices and rkipc.ini

5.2 Content of rkipc.ini

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[root@luckfox data]# cat rkipc.ini 
[audio.0]
enable = 1
card_name = hw:0,0
encode_type = G711A
format = S16
sample_rate = 8000
channels = 2
frame_size = 1152
bit_rate = 16000
input = mic_in
volume = 50
enable_aed = 0
enable_bcd = 0
enable_vqe = 1
vqe_cfg = /oem/usr/share/vqefiles/config_aivqe.json
rt_audio_period_size = 1024

[video.source]
enable_aiq = 1
enable_vo = 0
vo_dev_id = 3 ; 0 is hdmi, 3 is mipi
enable_ivs = 1
enable_jpeg = 1
enable_venc_0 = 1
enable_venc_1 = 1
enable_venc_2 = 0
enable_npu = 1
npu_fps = 10
buffer_line = 1296
enable_rtsp = 1
enable_rtmp = 0
rotation = 0 ; available value:0 90 180 270

[video.0]
buffer_size = 1492992 ; w * h / 2
buffer_count = 4
enable_refer_buffer_share = 1
stream_type = mainStream
video_type = compositeStream
max_width = 2304
max_height = 1296
width = 2304
height = 1296
rc_mode = CBR
rc_quality = high
src_frame_rate_den = 1
src_frame_rate_num = 25
dst_frame_rate_den = 1
dst_frame_rate_num = 25
target_rate = 0
mid_rate = 1024
max_rate = 2048
min_rate = 0
output_data_type = H.265
smart = close
h264_profile = high
gop = 50
smartp_viridrlen = 25
gop_mode = normalP
stream_smooth = 50
enable_motion_deblur = 1
enable_motion_static_switch = 0
frame_min_i_qp = 26
frame_min_qp = 28
frame_max_i_qp = 51
frame_max_qp = 51
scalinglist = 0
enable_debreath_effect = 0
debreath_effect_strength = 16

......
......
......
[roi.4]
stream_type = thirdStream
id = 1
enabled = 0
name = test
position_x = 0
position_y = 0
width = 0
height = 0
quality_level = 3

[roi.5]
stream_type = thirdStream
id = 2
enabled = 0
name = test
position_x = 0
position_y = 0
width = 0
height = 0
quality_level = 3

[region_clip.1]
enabled = 0
position_x = 0
position_y = 0
width = 640
height = 480

[network.ntp]
enable = 1
refresh_time_s = 60
ntp_server = 119.28.183.184
[root@luckfox data]#

5.3 Snapshot of Streamed Video Over RTSP

Snapshot

BeagleV®-Fire is a revolutionary single-board computer (SBC) powered by the Microchip’s PolarFire® MPFS025T 5x core RISC-V System on Chip (SoC) with FPGA fabric. (Cited from BeagleV-Fire Board).

1. Introduction

This MPFS025T is actually a PolarFire Family FPGA SoC, fabriced with both FPGA and RISC-V CPU. I'm saving my word in this part. Let's just do it.

2. Official Ubuntu

Approximately 25 days ago, the official page for the BeagleV-Fire Board announced its first-ever distribution, the BeagleV-Fire Distro Ubuntu 2023-11-21.

3. Flash BeagleV-Fire Board

In this section, we're going to strictly follow BeagleV-Fire Ubuntu readme.md, with trivial modifiations.

3.1 Update ALL Packages to 2023.09 in 01_git_sync.sh

After you checkout BeagleV-Fire Ubuntu, modify 01_git_sync.sh as:

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
➜  BeagleV-Fire-ubuntu git:(main) ✗ git diff 01_git_sync.sh 

diff --git a/01_git_sync.sh b/01_git_sync.sh
index cf3e230..6ab34c1 100755
--- a/01_git_sync.sh
+++ b/01_git_sync.sh
@@ -3,11 +3,11 @@
GIT_DEPTH="20"
GCC_VERSION="11.4.0"

-HSS_BRANCH="v2023.02"
+HSS_BRANCH="v2023.09"
HSS_REPO="https://github.com/polarfire-soc/hart-software-services.git"

#UBOOT_BRANCH="mpfs-uboot-2022.01"
-UBOOT_BRANCH="linux4microchip+fpga-2023.02"
+UBOOT_BRANCH="linux4microchip+fpga-2023.09"
UBOOT_REPO="https://github.com/polarfire-soc/u-boot.git"
#UBOOT_REPO="https://git.beagleboard.org/beaglev-fire/beaglev-fire-u-boot.git"
#UBOOT_REPO="git@git.beagleboard.org:beaglev-fire/beaglev-fire-u-boot.git"
@@ -16,7 +16,7 @@ DT_BRANCH="v6.1.x-Beagle"
DT_REPO="https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees.git"
#DT_REPO="git@git.beagleboard.org:beagleboard/BeagleBoard-DeviceTrees.git"

-LINUX_BRANCH="linux4microchip+fpga-2023.06"
+LINUX_BRANCH="linux4microchip+fpga-2023.09"
LINUX_REPO="https://github.com/linux4microchip/linux.git"
#LINUX_REPO="https://git.beagleboard.org/beaglev-fire/beaglev-fire-linux.git"
#LINUX_REPO="git@git.beagleboard.org:beaglev-fire/beaglev-fire-linux.git"

Namely, use ALL possible NEWEST or MOST UP-TO-DATE packages. As you can see, ALL branches that I'm using are of 2023.09.

3.2 Start Building

3.2.1 01_git_sync.sh

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
➜  BeagleV-Fire-ubuntu git:(main) ✗ ./01_git_sync.sh 
git clone -b v2023.09 https://github.com/polarfire-soc/hart-software-services.git ./hart-software-services/ --depth=20
Cloning into './hart-software-services'...
remote: Enumerating objects: 1609, done.
remote: Counting objects: 100% (1609/1609), done.
remote: Compressing objects: 100% (1194/1194), done.
remote: Total 1609 (delta 513), reused 1014 (delta 361), pack-reused 0
Receiving objects: 100% (1609/1609), 3.58 MiB | 8.44 MiB/s, done.
Resolving deltas: 100% (513/513), done.
Note: switching to '919a27fa692d356a8fa0d9a6c4b950d04bee41bf'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c <new-branch-name>

Or undo this operation with:

git switch -

Turn off this advice by setting config variable advice.detachedHead to false

git clone -b linux4microchip+fpga-2023.09 https://github.com/polarfire-soc/u-boot.git ./u-boot/ --depth=20
Cloning into './u-boot'...
remote: Enumerating objects: 21670, done.
remote: Counting objects: 100% (21670/21670), done.
remote: Compressing objects: 100% (18160/18160), done.
remote: Total 21670 (delta 4173), reused 11080 (delta 3124), pack-reused 0
Receiving objects: 100% (21670/21670), 27.91 MiB | 13.00 MiB/s, done.
Resolving deltas: 100% (4173/4173), done.
Note: switching to '8f5e331e3f09cdf469d528905f5d6a7139016634'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c <new-branch-name>

Or undo this operation with:

git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (19905/19905), done.
git clone -b v6.1.x-Beagle https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees.git ./device-tree/ --depth=20
Cloning into './device-tree'...
remote: Enumerating objects: 390, done.
remote: Counting objects: 100% (390/390), done.
remote: Compressing objects: 100% (251/251), done.
remote: Total 390 (delta 191), reused 225 (delta 120), pack-reused 0
Receiving objects: 100% (390/390), 368.83 KiB | 6.96 MiB/s, done.
Resolving deltas: 100% (191/191), done.
git clone -b linux4microchip+fpga-2023.09 https://github.com/linux4microchip/linux.git ./linux/ --depth=20
Cloning into './linux'...
info: Could not add alternate for '/home/lvision/linux-src/': path '/home/lvision/linux-src/' does not exist
remote: Enumerating objects: 94584, done.
remote: Counting objects: 100% (94584/94584), done.
remote: Compressing objects: 100% (84459/84459), done.
remote: Total 94584 (delta 12732), reused 88132 (delta 9251), pack-reused 0
Receiving objects: 100% (94584/94584), 263.65 MiB | 19.75 MiB/s, done.
Resolving deltas: 100% (12732/12732), done.
Note: switching to '25e35c7c54ad853d03c14a02b189b408cb5b5eb3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c <new-branch-name>

Or undo this operation with:

git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (78845/78845), done.

3.2.2 02_build_hss.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜  BeagleV-Fire-ubuntu git:(main) ✗ ./02_build_hss.sh 
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator'
RM /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/hss-payload-generator /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/main.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/yaml_parser.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/blob_handler.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/elf_parser.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/elf_strings.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/crc32.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/generate_payload.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/dump_payload.o /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/debug_printf.o
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator'
make -C hart-software-services/tools/hss-payload-generator/
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator'
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/main.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/yaml_parser.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/blob_handler.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/elf_parser.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/elf_strings.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/crc32.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/generate_payload.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/dump_payload.o
CC /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/debug_printf.o
LD /home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator/hss-payload-generator
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/hart-software-services/tools/hss-payload-generator'
'./hart-software-services/tools/hss-payload-generator/hss-payload-generator' -> './deploy/hss-payload-generator'

3.2.3 03_build_u-boot.sh

An issue: Error: illegal operands `li t1,(CFG_SYS_INIT_RAM_ADDR+CFG_SYS_INIT_RAM_SIZE-400)'

Solution: Modifly line 98 of file u-boot/arch/riscv/cpu/start.s from li t1, SYS_INIT_SP_ADDR to

1
2
lui t1, %hi(0x80000000)
addi t1, t1, %lo(0x80000000)

Then, start building:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
➜  BeagleV-Fire-ubuntu git:(main) ✗ ./03_build_u-boot.sh 
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
CLEAN dts/../arch/riscv/dts
CLEAN dts
CLEAN lib/efi_loader
CLEAN tools
CLEAN tools/lib tools/common
CLEAN include/generated/env.in include/generated/env.txt u-boot u-boot.bin u-boot.cfg u-boot.dtb u-boot-dtb.bin u-boot.lds u-boot.map u-boot-nodtb.bin u-boot.srec u-boot.sym System.map defconfig
CLEAN scripts/basic
CLEAN scripts/dtc
CLEAN scripts/kconfig
CLEAN include/config include/generated
CLEAN .config .config.old include/autoconf.mk include/autoconf.mk.dep include/config.h
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
'../patches/u-boot/beaglev-fire/microchip_mpfs_icicle.h' -> 'include/configs/microchip_mpfs_icicle.h'
'../patches/u-boot/beaglev-fire/microchip-mpfs-icicle-kit.dts' -> 'arch/riscv/dts/microchip-mpfs-icicle-kit.dts'
'../patches/u-boot/beaglev-fire/microchip_mpfs_icicle_defconfig' -> 'configs/microchip_mpfs_icicle_defconfig'
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c
LEX scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
scripts/kconfig/conf --olddefconfig Kconfig
#
# configuration written to .config
#
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
scripts/kconfig/conf --savedefconfig=defconfig Kconfig
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
'./u-boot/defconfig' -> './u-boot/configs/microchip_mpfs_icicle_defconfig'
'./u-boot/defconfig' -> './patches/u-boot/beaglev-fire/microchip_mpfs_icicle_defconfig'
make -C u-boot -j48 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- all
make: Entering directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
scripts/kconfig/conf --syncconfig Kconfig
UPD include/config.h
CFG u-boot.cfg
GEN include/autoconf.mk.dep
......
In file included from ././include/linux/kconfig.h:4,
from <command-line>:
include/generated/autoconf.h:142: note: this is the location of the previous definition
142 | #define CONFIG_SYS_BOOTM_LEN 0x800000
|
AR drivers/core/built-in.o
AR drivers/mtd/ubi/built-in.o
AR lib/zlib/built-in.o
AR drivers/mtd/built-in.o
AR drivers/built-in.o
AR fs/fat/built-in.o
AR fs/ubifs/built-in.o
AR fs/built-in.o
AR lib/built-in.o
LD u-boot
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
SYM u-boot.sym
DTC arch/riscv/dts/microchip-mpfs-icicle-kit.dtb
DTC arch/riscv/dts/microchip-mpfs-icicle-kit-amp.dtb
DTC arch/riscv/dts/microchip-mpfs-icicle-kit-qspi-nor.dtb
SHIPPED dts/dt.dtb
CAT u-boot-dtb.bin
COPY u-boot.dtb
COPY u-boot.bin
OFCHK .config
make: Leaving directory '/home/lvision/Desktop/BeagleV-Fire-ubuntu/u-boot'
'./u-boot/u-boot.bin' -> './deploy/u-boot.bin'
'./u-boot/u-boot.bin' -> './deploy/src.bin'

3.2.4 04_build_linux.sh

Two issues:

Then, start building:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
➜  BeagleV-Fire-ubuntu git:(main) ✗ ./04_build_linux.sh 
Applying: PCIe: Change controller and bridge base address.
Applying: GPIO: Add Microchip CoreGPIO driver.
Applying: ADC: Add Microchip MCP356X driver.
error: patch failed: drivers/iio/adc/Makefile:68
error: drivers/iio/adc/Makefile: patch does not apply
Patch failed at 0001 ADC: Add Microchip MCP356X driver.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
'../device-tree/src/microchip/mpfs-beaglev-fire.dts' -> 'arch/riscv/boot/dts/microchip/mpfs-beaglev-fire.dts'
'../device-tree/src/microchip/mpfs-beaglev-fire-fabric.dtsi' -> 'arch/riscv/boot/dts/microchip/mpfs-beaglev-fire-fabric.dtsi'
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- clean
'../patches/linux/mpfs_defconfig' -> './arch/riscv/configs/mpfs_defconfig'
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- mpfs_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
make -j48 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- olddefconfig
#
# No change to .config
#
make -j48 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- Image modules dtbs
SYNC include/config/auto.conf.cmd
WRAP arch/riscv/include/generated/uapi/asm/errno.h
WRAP arch/riscv/include/generated/uapi/asm/fcntl.h
WRAP arch/riscv/include/generated/uapi/asm/ioctls.h
WRAP arch/riscv/include/generated/uapi/asm/ioctl.h
WRAP arch/riscv/include/generated/uapi/asm/ipcbuf.h
WRAP arch/riscv/include/generated/uapi/asm/msgbuf.h
WRAP arch/riscv/include/generated/uapi/asm/mman.h
......
LD [M] net/unix/unix_diag.ko
LD [M] net/vmw_vsock/vmw_vsock_virtio_transport.ko
LD [M] net/vmw_vsock/vsock.ko
LD [M] net/vmw_vsock/vmw_vsock_virtio_transport_common.ko
LD [M] net/vmw_vsock/vsock_diag.ko
LD [M] net/vmw_vsock/vsock_loopback.ko
LD [M] net/wireless/cfg80211.ko
LD [M] net/wireless/lib80211.ko
LD [M] net/wireless/lib80211_crypt_ccmp.ko
LD [M] net/wireless/lib80211_crypt_tkip.ko
LD [M] net/wireless/lib80211_crypt_wep.ko
LD [M] net/xdp/xsk_diag.ko
LD [M] net/xfrm/xfrm_algo.ko
LD [M] net/xfrm/xfrm_interface.ko
LD [M] net/xfrm/xfrm_ipcomp.ko
LD [M] net/xfrm/xfrm_user.ko
NM .tmp_vmlinux.kallsyms2.syms
KSYMS .tmp_vmlinux.kallsyms2.S
AS .tmp_vmlinux.kallsyms2.S
LD vmlinux
NM System.map
SORTTAB vmlinux
OBJCOPY arch/riscv/boot/Image
Kernel: arch/riscv/boot/Image is ready
Compressing 6.1.43-linux4microchip+fpga-2023.09-20231219+-modules.tar.gz...
'./.config' -> '../patches/linux/mpfs_defconfig'
'./arch/riscv/boot/dts/microchip/mpfs-beaglev-fire.dts' -> '../patches/linux/dts/mpfs-beaglev-fire.dts'
'./arch/riscv/boot/dts/microchip/mpfs-beaglev-fire-fabric.dtsi' -> '../patches/linux/dts/mpfs-beaglev-fire-fabric.dtsi'
'./arch/riscv/boot/Image' -> '../deploy/input/Image'
'./arch/riscv/boot/dts/microchip/mpfs-beaglev-fire.dtb' -> '../deploy/input/mpfs-beaglev-fire.dtb'
'./patches/linux/beaglev_fire.its' -> './deploy/input/beaglev_fire.its'
FIT description: U-Boot fitImage for the BeagleV-Fire
Created: Tue Dec 19 12:58:17 2023
Image 0 (kernel)
Description: Linux kernel
Created: Tue Dec 19 12:58:17 2023
Type: Kernel Image
Compression: gzip compressed
Data Size: 8622322 Bytes = 8420.24 KiB = 8.22 MiB
Architecture: RISC-V
OS: Linux
Load Address: 0x80200000
Entry Point: 0x80200000
Hash algo: sha256
Hash value: 82f0ce932fe469cd5ea7aa4d3230f49560ed490d92ad2e9e555a488b10ae3dae
Image 1 (base_fdt)
Description: Flattened Device Tree blob
Created: Tue Dec 19 12:58:17 2023
Type: Flat Device Tree
Compression: uncompressed
Data Size: 20670 Bytes = 20.19 KiB = 0.02 MiB
Architecture: RISC-V
Load Address: 0x8a000000
Hash algo: sha256
Hash value: b8fcfe485d229df53d3f68d5db0372237c8754bc1e96822c4527362ce076d537
Default Configuration: 'kernel_dtb'
Configuration 0 (kernel_dtb)
Description: 1 Linux kernel, FDT blob
Kernel: kernel
FDT: base_fdt
Configuration 1 (base_dtb)
Description: Base FDT blob for BeagleV-Fire board
Kernel: unavailable
FDT: base_fdt

3.2.5 05_generate_payload.bin

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
31
32
33
34
➜  BeagleV-Fire-ubuntu git:(main) ✗ ./05_generate_payload.bin.sh 
Hart Software Service formatted boot image generator v0.99.37
Copyright (c) 2021-2022 Microchip FPGA Embedded Systems Solutions.

Parsing set-name
Parsing hart entry points
Entry Point U54_1 is 0x80200000
Entry Point U54_2 is 0x80200000
Entry Point U54_3 is 0x80200000
Entry Point U54_4 is 0x80200000
Parsing payload >>src.bin<<
exec_addr is 0x80200000
owner is 1
secondary is 2
secondary is 3
secondary is 4
priv_mode is 1

Processing ELF >>src.bin<<
>>src.bin<< is not an ELF object

Processing blob >>src.bin<< - placing at 0x80200000
lastChunk is 0, numChunks is 1
Set-name is >>PolarFire-SoC-HSS::U-Boot<<
Output filename is >>./input/payload.bin<<
Outputting Payload Header
Outputting Code/Data Chunks
Outputting ZI Chunks
Outputting Binary Data
Outputting Payload Header
Tue 19 Dec 2023 12:58:45 PM PST
[u-boot.bin: U-Boot 2023.07.02-linux4microchip+fpga-2023.09-dirty (Dec 19 2023 - 12:53:03 -0800)]
[src.bin: U-Boot 2023.07.02-linux4microchip+fpga-2023.09-dirty (Dec 19 2023 - 12:53:03 -0800)]
[payload.bin:U-Boot 2023.07.02-linux4microchip+fpga-2023.09-dirty (Dec 19 2023 - 12:53:03 -0800)]

3.2.6 06_generate_debian_console_root.sh

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
31
32
33
34
35
36
37
38
➜  BeagleV-Fire-ubuntu git:(main) ✗ sudo ./06_generate_debian_console_root.sh
--2023-12-19 12:59:30-- https://rcn-ee.net/rootfs/debian-riscv64-sid-minimal/2023-12-19/debian-sid-console-riscv64-2023-12-19.tar.xz
Resolving rcn-ee.net (rcn-ee.net)... 2606:4700:3037::ac43:8616, 2606:4700:3037::6815:5fb, 172.67.134.22, ...
Connecting to rcn-ee.net (rcn-ee.net)|2606:4700:3037::ac43:8616|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 397978580 (380M) [application/x-xz]
Saving to: ‘./deploy/debian-sid-console-riscv64-2023-12-19.tar.xz’

debian-sid-console-riscv64-2023-12-19.tar.xz 100%[======================================================================================================================================================================>] 379.54M 86.4MB/s in 4.7s

2023-12-19 12:59:35 (80.9 MB/s) - ‘./deploy/debian-sid-console-riscv64-2023-12-19.tar.xz’ saved [397978580/397978580]

Extracting: debian-sid-console-riscv64-2023-12-19/riscv64-rootfs-*.tar
'./deploy/boot.scr' -> 'deploy/input/boot.scr'
'./ignore/.root/etc/bbb.io/templates/eth0-DHCP.network' -> './ignore/.root/etc/systemd/network/eth0.network'
'./ignore/.root/etc/bbb.io/templates/eth1-DHCP.network' -> './ignore/.root/etc/systemd/network/eth1.network'
'./ignore/.root/etc/bbb.io/templates/nginx/nginx-autoindex' -> './ignore/.root/etc/nginx/sites-enabled/default'
'./ignore/.root/etc/bbb.io/templates/nginx/Cockpit.html' -> './ignore/.root/var/www/html/Cockpit.html'
'./ignore/.root/etc/bbb.io/templates/nginx/Docs-BeagleBoard.html' -> './ignore/.root/var/www/html/Docs-BeagleBoard.html'
---------------------
File Size
1.4G ignore/.root/
---------------------
0+0 records in
0+0 records out
0 bytes copied, 0.000160765 s, 0.0 kB/s
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 563200 4k blocks and 140832 inodes
Filesystem UUID: 99243c2d-5c98-489f-a06f-719f691c31f1
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done

3.2.7 07_create_sdcard_img.sh

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
31
32
33
34
35
36
37
38
39
40
41
42
43
➜  BeagleV-Fire-ubuntu git:(main) ✗ sudo ./07_create_sdcard_img.sh 
INFO: cmd: "mkdir -p "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/tmp"" (stderr):
INFO: cmd: "rm -rf "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/tmp"" (stderr):
INFO: cmd: "cp -a "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/root" "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/tmp/root"" (stderr):
INFO: hdimage(sdcard.img): The option 'gpt' is deprecated. Use 'partition-table-type' instead
INFO: cmd: "mkdir -p "/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images"" (stderr):
INFO: vfat(boot.vfat): cmd: "mkdosfs '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images/boot.vfat'" (stderr):
INFO: vfat(boot.vfat): adding file 'beaglev_fire.itb' as 'beaglev_fire.itb' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images/boot.vfat' '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/input/beaglev_fire.itb' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'boot.scr' as 'boot.scr' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images/boot.vfat' '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/input/boot.scr' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'mpfs-beaglev-fire.dtb' as 'mpfs-beaglev-fire.dtb' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images/boot.vfat' '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/input/mpfs-beaglev-fire.dtb' '::'" (stderr):
INFO: vfat(boot.vfat): adding file 'Image' as 'Image' ...
INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/images/boot.vfat' '/home/lvision/Desktop/BeagleV-Fire-ubuntu/deploy/input/Image' '::'" (stderr):
INFO: hdimage(sdcard.img): adding partition 'uboot' (in MBR) from 'payload.bin' ...
INFO: hdimage(sdcard.img): adding partition 'kernel' (in MBR) from 'boot.vfat' ...
INFO: hdimage(sdcard.img): adding partition 'root' (in MBR) from 'root.ext4' ...
INFO: hdimage(sdcard.img): adding partition '[MBR]' ...
INFO: hdimage(sdcard.img): adding partition '[GPT header]' ...
INFO: hdimage(sdcard.img): adding partition '[GPT array]' ...
INFO: hdimage(sdcard.img): adding partition '[GPT backup]' ...
INFO: hdimage(sdcard.img): writing GPT
INFO: hdimage(sdcard.img): writing protective MBR
INFO: hdimage(sdcard.img): writing MBR
bmaptool: debug: opened image "./images/sdcard.img"
bmaptool: debug: block size 4096, blocks count 578750, image size 2370560000
bmaptool: debug: FilemapFiemap: initializing
bmaptool: debug: FilemapFiemap: block_is_mapped(0) returns True
bmaptool: debug: FilemapFiemap: get_mapped_ranges(0, 578750(578749))
bmaptool: debug: FilemapFiemap: yielding range (0, 8521)
bmaptool: debug: FilemapFiemap: yielding range (15545, 15833)
bmaptool: debug: FilemapFiemap: yielding range (15837, 15843)
bmaptool: debug: FilemapFiemap: yielding range (15853, 18412)
bmaptool: debug: FilemapFiemap: yielding range (23677, 48315)
bmaptool: debug: FilemapFiemap: yielding range (48589, 113851)
bmaptool: debug: FilemapFiemap: yielding range (114125, 179387)
bmaptool: debug: FilemapFiemap: yielding range (179661, 244923)
bmaptool: debug: FilemapFiemap: yielding range (245197, 310459)
bmaptool: debug: FilemapFiemap: yielding range (310733, 390634)
bmaptool: debug: FilemapFiemap: yielding range (539833, 539835)
bmaptool: debug: FilemapFiemap: yielding range (578729, 578749)

3.2.8 Flash SD Card

1
2
3
4
5
➜  BeagleV-Fire-ubuntu git:(main) ✗ ll deploy/images 
total 1.5G
-rw-r--r-- 1 root root 60M Dec 15 05:14 boot.vfat
-rw-r--r-- 1 root root 3.5K Dec 15 05:14 sdcard.bmap
-rw-r--r-- 1 root root 2.3G Dec 15 05:14 sdcard.img

4. Demonstration

4.1 Initial Look

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
➜  ~ ssh beagle@192.168.1.17
Ubuntu 23.04

BeagleBoard.org Ubuntu 23.04 Console Image 2023-10-19
Support: https://bbb.io/debian
default username:password is [beagle:temppwd]

beagle@192.168.1.17's password:
Last login: Fri Dec 15 12:12:31 2023 from 192.168.1.1
beagle@BeagleV:~$ uname -a
Linux BeagleV 6.1.33-linux4microchip+fpga-2023.06-20231019+ #1 SMP Thu Oct 19 16:01:29 UTC 2023 riscv64 riscv64 riscv64 GNU/Linux
beagle@BeagleV:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 23.04
Release: 23.04
Codename: lunar
➜ ~ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 4.0G 9.7G 30% /
tmpfs 771M 0 771M 0% /dev/shm
tmpfs 309M 1.6M 307M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/mmcblk0p2 60M 33M 28M 55% /boot/firmware
tmpfs 155M 0 155M 0% /run/user/1000

4.2 After Update-Upgrade and Installed Neofetch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
➜  ~ neofetch
.-/+oossssoo+/-. beagle@BeagleV
`:+ssssssssssssssssss+:` --------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 23.04 riscv64
.ossssssssssssssssssdMMMNysssso. Host: BeagleBoard BeagleV-Fire
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 6.1.33-linux4microchip+fpga-2023.06-20231019+
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 4 hours, 58 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 898 (dpkg)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: zsh 5.9
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: (4)
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Memory: 137MiB / 1541MiB
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.

➜ ~

4.3 Weird

Did you find what's weird? - In the above subsection 3.2.6, I clearly used debian rootfs. However, my BeagleV-Fire Board is now running Ubuntu 23.04????? - I am using a SD card of size 32G, why this one is detected as 16G ONLY?????

Some more investigation clearly shows that I do have 2 block devices:

1
2
3
4
5
6
7
8
9
10
11
12
➜  ~ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk1 179:0 0 28.9G 0 disk
├─mmcblk1p1 179:1 0 722.5K 0 part
├─mmcblk1p2 179:2 0 60M 0 part
└─mmcblk1p3 179:3 0 28.9G 0 part
mmcblk0 179:8 0 14.6G 0 disk
├─mmcblk0p1 179:9 0 684K 0 part
├─mmcblk0p2 179:10 0 60M 0 part /boot/firmware
└─mmcblk0p3 179:11 0 14.5G 0 part /
mmcblk0boot0 179:16 0 4M 1 disk
mmcblk0boot1 179:24 0 4M 1 disk
  • mmcblk1 is the SD card of size 32G
  • mmcblk0 is the on-board eMMC of size 16G

Solution: refer to Beagleboard Official Documentation Flashing Board

4.4 Finally

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
beagle@BeagleV:~$ cat /proc/cpuinfo
processor : 0
hart : 1
isa : rv64imafdc
mmu : sv39
uarch : sifive,u54-mc
mvendorid : 0x1cf
marchid : 0x1
mimpid : 0x0

processor : 1
hart : 2
isa : rv64imafdc
mmu : sv39
uarch : sifive,u54-mc
mvendorid : 0x1cf
marchid : 0x1
mimpid : 0x0

processor : 2
hart : 3
isa : rv64imafdc
mmu : sv39
uarch : sifive,u54-mc
mvendorid : 0x1cf
marchid : 0x1
mimpid : 0x0

processor : 3
hart : 4
isa : rv64imafdc
mmu : sv39
uarch : sifive,u54-mc
mvendorid : 0x1cf
marchid : 0x1
mimpid : 0x0

beagle@BeagleV:~$ cat /proc/meminfo
MemTotal: 1578744 kB
MemFree: 1246916 kB
MemAvailable: 1433180 kB
Buffers: 12136 kB
Cached: 181060 kB
SwapCached: 0 kB
Active: 46052 kB
Inactive: 210292 kB
Active(anon): 1460 kB
Inactive(anon): 63260 kB
Active(file): 44592 kB
Inactive(file): 147032 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Zswap: 0 kB
Zswapped: 0 kB
Dirty: 20 kB
Writeback: 0 kB
AnonPages: 63172 kB
Mapped: 99268 kB
Shmem: 1572 kB
KReclaimable: 21992 kB
Slab: 50108 kB
SReclaimable: 21992 kB
SUnreclaim: 28116 kB
KernelStack: 2160 kB
PageTables: 1892 kB
SecPageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 789372 kB
Committed_AS: 424384 kB
VmallocTotal: 67108864 kB
VmallocUsed: 7684 kB
VmallocChunk: 0 kB
Percpu: 1152 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB

Clearly, this Single-board computer is using SiFive Cores. That is ALL for today. Temoparily. See you next time.

4.5 Further Demonstration

This is truly a provisional milestone:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[  OK  ] Finished systemd-user-sessions.service - Permit User Sessions.
[ 24.197143] imx219 1-0010: failed to read chip id 219
[ 24.202314] imx219: probe of 1-0010 failed with error -5
[ 24.667023] usb0: HOST MAC 00:04:a3:d5:1a:45
[ 24.671376] usb0: MAC 00:04:a3:d5:1a:46
[ 24.680189] configfs-gadget.g_multi gadget.0: unable to autoconfigure all endpoints
[ 24.693802] udc musb-hdrc.1.auto: failed to start g_multi: -524
[ 24.699874] configfs-gadget.g_multi: probe of gadget.0 failed with error -524
[ 24.707368] UDC core: g_multi: couldn't find an available UDC or it's busy
[FAILED] Failed to start bb-usb-gadgets.service - BeagleBoard.org USB gadgets.
See 'systemctl status bb-usb-gadgets.service' for details.
[ OK ] Finished cockpit-motd.service - Cockpit motd updater service.
[ OK ] Started nginx.service - A high per… server and a reverse proxy server.
[ OK ] Started getty@tty1.service - Getty on tty1.
[ OK ] Started serial-getty@ttyGS0.service - Serial Getty on ttyGS0.
[ OK ] Started serial-getty@ttyS0.service - Serial Getty on ttyS0.
[ OK ] Reached target getty.target - Login Prompts.
[ OK ] Finished grow_partition.service - Grow Root Partition.

Debian GNU/Linux trixie/sid BeagleV ttyS0

BeagleBoard.org Debian Sid Console Image 2023-12-19
Support: https://bbb.io/debian
default username:password is [debian:temppwd]

Web console: https://BeagleV.localdomain:9090/

BeagleV login: debian
Password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
debian@BeagleV:~$ neofetch
Command 'neofetch' not found, but can be installed with:
sudo apt install neofetch
debian@BeagleV:~$ sudo apt install neofetch
[sudo] password for debian:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package neofetch
debian@BeagleV:~$ uname -a
Linux BeagleV 6.1.43-linux4microchip+fpga-2023.09-20231219+ #1 SMP Tue Dec 19 12:57:20 PST 2023 riscv64 GNU/Linux
debian@BeagleV:~$

Now, plug in Wired connection,

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
➜  ~ ssh debian@192.168.1.17                                         
The authenticity of host '192.168.1.17 (192.168.1.17)' can't be established.
......

BeagleBoard.org Debian Sid Console Image 2023-12-19
Support: https://bbb.io/debian
default username:password is [debian:temppwd]

debian@192.168.1.17's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Dec 19 08:27:24 2023
debian@BeagleV:~$ sudo apt update
[sudo] password for debian:
Get:1 http://deb.debian.org/debian sid InRelease [198 kB]
Get:3 http://repos.rcn-ee.com/debian-riscv64 sid InRelease [3083 B]
Get:2 https://debian.beagle.cc/riscv64 sid InRelease [3083 B]
Get:4 http://deb.debian.org/debian sid/main riscv64 Packages [9076 kB]
Get:5 http://repos.rcn-ee.com/debian-riscv64 sid/main riscv64 Packages [13.0 kB]
Get:6 https://debian.beagle.cc/riscv64 sid/main riscv64 Packages [13.0 kB]
Get:7 http://deb.debian.org/debian sid/main riscv64 Components [4198 kB]
Get:8 http://deb.debian.org/debian sid/main riscv64 Contents (deb) [10.3 MB]
Get:9 http://deb.debian.org/debian sid/main all Contents (deb) [37.8 MB]
Fetched 61.6 MB in 3min 0s (341 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.
debian@BeagleV:~$ apt list --upgradable
Listing... Done
appstream/unstable 1.0.1-2 riscv64 [upgradable from: 1.0.1-1]
libappstream5/unstable 1.0.1-2 riscv64 [upgradable from: 1.0.1-1]
libjs-sphinxdoc/unstable 7.2.6-3 all [upgradable from: 7.2.6-2]
openssh-client/unstable 1:9.6p1-1 riscv64 [upgradable from: 1:9.5p1-2]
openssh-server/unstable 1:9.6p1-1 riscv64 [upgradable from: 1:9.5p1-2]
openssh-sftp-server/unstable 1:9.6p1-1 riscv64 [upgradable from: 1:9.5p1-2]
debian@BeagleV:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
......
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
debian@BeagleV:~$ neofetch
_,met$$$$$gg. debian@BeagleV
,g$$$$$$$$$$$$$$$P. --------------
,g$$P" """Y$$.". OS: Debian GNU/Linux trixie/sid riscv64
,$$P' `$$$. Host: BeagleBoard BeagleV-Fire
',$$P ,ggs. `$$b: Kernel: 6.1.43-linux4microchip+fpga-2023.09-20231219+
`d$$' ,$P"' . $$$ Uptime: 12 mins
$$P d$' , $$P Packages: 587 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.2.21
$$; Y$b._ _,d$P' Terminal: /dev/pts/0
Y$$. `.`"Y$$$$P"' CPU: (4)
`$$b "-.__ Memory: 88MiB / 1541MiB
`Y$$
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""

Bingo!!! Debian!!!

Today, I would disclose RISC-V. Let's save my word and dive into it directly. As of today, December 18, 2023, MOST of RISC-V chips are designed and manufactured by Chinese companies.

1. Related Companies

2. U-Boot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
➜  u-boot git:(master) ✗ ls arch
arc arm Kconfig Kconfig.nxp m68k microblaze mips nios2 powerpc riscv sandbox sh u-boot-elf.lds x86 xtensa
➜ u-boot git:(master) ✗ cd arch/riscv
➜ riscv git:(master) ✗ ls cpu
andesv5 cpu.c cpu.su fu740 jh7110 mtrap.o start.o u-boot.lds
built-in.o cpu.o fu540 generic Makefile mtrap.S start.S u-boot-spl.lds
➜ riscv git:(master) ✗ ls dts
ae350_32.dts hifive-unmatched-a00.dts mpfs-icicle-kit.dts
ae350_64.dts hifive-unmatched-a00-u-boot.dtsi mpfs-icicle-kit-fabric.dtsi
ae350-u-boot.dtsi jh7110.dtsi mpfs-icicle-kit-u-boot.dtsi
binman.dtsi jh7110-starfive-visionfive-2.dtb openpiton-riscv64.dts
fu540-c000.dtsi jh7110-starfive-visionfive-2.dts qemu-virt32.dts
fu540-c000-u-boot.dtsi jh7110-starfive-visionfive-2.dtsi qemu-virt64.dts
fu540-hifive-unleashed-a00-ddr.dtsi jh7110-starfive-visionfive-2-u-boot.dtsi sunxi-d1s-t113.dtsi
fu740-c000.dtsi jh7110-u-boot.dtsi sunxi-d1-t113.dtsi
fu740-c000-u-boot.dtsi k210.dtsi th1520.dtsi
fu740-hifive-unmatched-a00-ddr.dtsi k210-maix-bit.dts th1520-lichee-module-4a.dtsi
hifive-unleashed-a00.dts Makefile th1520-lichee-pi-4a.dts
hifive-unleashed-a00-u-boot.dtsi mpfs.dtsi
➜ riscv git:(master) ✗

2.1 CPU

Let's simple analyze all 5 folders under subfolder cpu.

2.2 DTS

Let's further analyze all device trees under subfolder dts.

3. Linux Kernel

1
2
3
4
5
6
7
8
9
➜  linux ls arch
alpha arm csky ia64 loongarch microblaze nios2 parisc riscv sh um xtensa
arc arm64 hexagon Kconfig m68k mips openrisc powerpc s390 sparc x86
➜ linux cd arch/riscv
➜ riscv ls configs
32-bit.config defconfig nommu_k210_sdcard_defconfig rv32_defconfig
64-bit.config nommu_k210_defconfig nommu_virt_defconfig
➜ riscv ls boot/dts
allwinner canaan Makefile microchip renesas sifive starfive thead

3.1 DTS

Again, let's analyze all 5 folders under subfolder dts.

By the way: recent Arduino UNO R4 uses a Renesas RA4M1, a 32-bit Arm® Cortex®-M4 MCU.

Conclusion: MOST of recent RISC-V chips are supported, designed, and manufactured by China.

VisionFive2 has been talked twice recently: - VisionFive2 - 01 - VisionFive2 - 02

Today, we're going to follow U-Boot VisionFive2 and demonstrate the MOST up-to-date U-Boot, Linux kernel, and OpenSBI.

1. Building

1.1 OpenSBI

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
➜  opensbi git:(master) make PLATFORM=generic FW_TEXT_START=0x40000000 FW_OPTIONS=0
CC lib/sbi/riscv_asm.o
CC lib/sbi/riscv_atomic.o
AS lib/sbi/riscv_hardfp.o
CC lib/sbi/riscv_locks.o
CC lib/sbi/sbi_ecall.o
CC lib/sbi/sbi_ecall_exts.o
CC lib/sbi/sbi_ecall_time.o
CC lib/sbi/sbi_ecall_rfence.o
CC lib/sbi/sbi_ecall_ipi.o
CC lib/sbi/sbi_ecall_base.o
CC lib/sbi/sbi_ecall_hsm.o
CC lib/sbi/sbi_ecall_srst.o
CC lib/sbi/sbi_ecall_susp.o
CC lib/sbi/sbi_ecall_pmu.o
CC lib/sbi/sbi_ecall_dbcn.o
CC lib/sbi/sbi_ecall_cppc.o
CC lib/sbi/sbi_ecall_legacy.o
CC lib/sbi/sbi_ecall_vendor.o
CC lib/sbi/sbi_bitmap.o
CC lib/sbi/sbi_bitops.o
CC lib/sbi/sbi_console.o
CC lib/sbi/sbi_domain.o
CC lib/sbi/sbi_emulate_csr.o
CC lib/sbi/sbi_fifo.o
CC lib/sbi/sbi_hart.o
CC lib/sbi/sbi_heap.o
CC lib/sbi/sbi_math.o
AS lib/sbi/sbi_hfence.o
CC lib/sbi/sbi_hsm.o
CC lib/sbi/sbi_illegal_insn.o
CC lib/sbi/sbi_init.o
CC lib/sbi/sbi_ipi.o
CC lib/sbi/sbi_irqchip.o
CC lib/sbi/sbi_misaligned_ldst.o
CC lib/sbi/sbi_platform.o
CC lib/sbi/sbi_pmu.o
CC lib/sbi/sbi_scratch.o
CC lib/sbi/sbi_string.o
CC lib/sbi/sbi_system.o
CC lib/sbi/sbi_timer.o
CC lib/sbi/sbi_tlb.o
CC lib/sbi/sbi_trap.o
CC lib/sbi/sbi_unpriv.o
AS lib/sbi/sbi_expected_trap.o
CC lib/sbi/sbi_cppc.o
AR lib/libsbi.a
CC platform/generic/lib/utils/timer/aclint_mtimer.o
CC platform/generic/lib/utils/timer/andes_plmt.o
CC platform/generic/lib/utils/timer/fdt_timer.o
CC platform/generic/lib/utils/timer/fdt_timer_drivers.o
CC platform/generic/lib/utils/timer/fdt_timer_mtimer.o
CC platform/generic/lib/utils/timer/fdt_timer_plmt.o
CC platform/generic/lib/utils/sys/htif.o
CC platform/generic/lib/utils/sys/atcsmu.o
CC platform/generic/lib/utils/serial/fdt_serial.o
CC platform/generic/lib/utils/serial/fdt_serial_drivers.o
CC platform/generic/lib/utils/serial/fdt_serial_cadence.o
CC platform/generic/lib/utils/serial/fdt_serial_gaisler.o
CC platform/generic/lib/utils/serial/fdt_serial_htif.o
CC platform/generic/lib/utils/serial/fdt_serial_renesas_scif.o
CC platform/generic/lib/utils/serial/fdt_serial_shakti.o
CC platform/generic/lib/utils/serial/fdt_serial_sifive.o
CC platform/generic/lib/utils/serial/fdt_serial_litex.o
CC platform/generic/lib/utils/serial/fdt_serial_uart8250.o
CC platform/generic/lib/utils/serial/fdt_serial_xlnx_uartlite.o
CC platform/generic/lib/utils/serial/cadence-uart.o
CC platform/generic/lib/utils/serial/gaisler-uart.o
CC platform/generic/lib/utils/serial/renesas_scif.o
CC platform/generic/lib/utils/serial/shakti-uart.o
CC platform/generic/lib/utils/serial/sifive-uart.o
CC platform/generic/lib/utils/serial/litex-uart.o
CC platform/generic/lib/utils/serial/uart8250.o
CC platform/generic/lib/utils/serial/xlnx-uartlite.o
CC platform/generic/lib/utils/serial/semihosting.o
CC platform/generic/lib/utils/reset/fdt_reset.o
CC platform/generic/lib/utils/reset/fdt_reset_drivers.o
CC platform/generic/lib/utils/reset/fdt_reset_atcwdt200.o
CC platform/generic/lib/utils/reset/fdt_reset_gpio.o
CC platform/generic/lib/utils/reset/fdt_reset_htif.o
CC platform/generic/lib/utils/reset/fdt_reset_sunxi_wdt.o
CC platform/generic/lib/utils/reset/fdt_reset_syscon.o
CC platform/generic/lib/utils/regmap/fdt_regmap.o
CC platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
CC platform/generic/lib/utils/regmap/fdt_regmap_syscon.o
CC platform/generic/lib/utils/regmap/regmap.o
CC platform/generic/lib/utils/libfdt/fdt.o
CC platform/generic/lib/utils/libfdt/fdt_addresses.o
CC platform/generic/lib/utils/libfdt/fdt_check.o
CC platform/generic/lib/utils/libfdt/fdt_empty_tree.o
CC platform/generic/lib/utils/libfdt/fdt_ro.o
CC platform/generic/lib/utils/libfdt/fdt_rw.o
CC platform/generic/lib/utils/libfdt/fdt_strerror.o
CC platform/generic/lib/utils/libfdt/fdt_sw.o
CC platform/generic/lib/utils/libfdt/fdt_wip.o
CC platform/generic/lib/utils/irqchip/fdt_irqchip.o
CC platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
CC platform/generic/lib/utils/irqchip/fdt_irqchip_aplic.o
CC platform/generic/lib/utils/irqchip/fdt_irqchip_imsic.o
CC platform/generic/lib/utils/irqchip/fdt_irqchip_plic.o
CC platform/generic/lib/utils/irqchip/aplic.o
CC platform/generic/lib/utils/irqchip/imsic.o
CC platform/generic/lib/utils/irqchip/plic.o
CC platform/generic/lib/utils/ipi/aclint_mswi.o
CC platform/generic/lib/utils/ipi/andes_plicsw.o
CC platform/generic/lib/utils/ipi/fdt_ipi.o
CC platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
CC platform/generic/lib/utils/ipi/fdt_ipi_mswi.o
CC platform/generic/lib/utils/ipi/fdt_ipi_plicsw.o
CC platform/generic/lib/utils/i2c/i2c.o
CC platform/generic/lib/utils/i2c/fdt_i2c.o
CC platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
CC platform/generic/lib/utils/i2c/fdt_i2c_sifive.o
CC platform/generic/lib/utils/i2c/fdt_i2c_dw.o
CC platform/generic/lib/utils/i2c/dw_i2c.o
CC platform/generic/lib/utils/gpio/fdt_gpio.o
CC platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
CC platform/generic/lib/utils/gpio/fdt_gpio_designware.o
CC platform/generic/lib/utils/gpio/fdt_gpio_sifive.o
CC platform/generic/lib/utils/gpio/fdt_gpio_starfive.o
CC platform/generic/lib/utils/gpio/gpio.o
CC platform/generic/lib/utils/fdt/fdt_domain.o
CC platform/generic/lib/utils/fdt/fdt_pmu.o
CC platform/generic/lib/utils/fdt/fdt_helper.o
CC platform/generic/lib/utils/fdt/fdt_fixup.o
CC platform/generic/thead/thead_c9xx_pmu.o
AS platform/generic/thead/thead_c9xx_tlb_trap_handler.o
CC platform/generic/thead/thead_c9xx_errata_tlb_flush.o
CC platform/generic/thead/thead-generic.o
CC platform/generic/starfive/jh7110.o
CC platform/generic/sophgo/sg2042.o
CC platform/generic/sifive/fu540.o
CC platform/generic/sifive/fu740.o
CC platform/generic/renesas/rzfive/rzfive.o
CC platform/generic/platform.o
CC platform/generic/platform_override_modules.o
CC platform/generic/andes/ae350.o
AS platform/generic/andes/sleep.o
CC platform/generic/andes/andes45-pma.o
CC platform/generic/andes/andes_sbi.o
CC platform/generic/andes/andes_pmu.o
CC platform/generic/allwinner/sun20i-d1.o
AR platform/generic/lib/libplatsbi.a
AS platform/generic/firmware/payloads/test_head.o
CC platform/generic/firmware/payloads/test_main.o
MERGE platform/generic/firmware/payloads/test.o
ELF platform/generic/firmware/payloads/test.elf
OBJCOPY platform/generic/firmware/payloads/test.bin
AS platform/generic/firmware/fw_dynamic.o
ELF platform/generic/firmware/fw_dynamic.elf
OBJCOPY platform/generic/firmware/fw_dynamic.bin
AS platform/generic/firmware/fw_jump.o
ELF platform/generic/firmware/fw_jump.elf
OBJCOPY platform/generic/firmware/fw_jump.bin
AS platform/generic/firmware/fw_payload.o
ELF platform/generic/firmware/fw_payload.elf
OBJCOPY platform/generic/firmware/fw_payload.bin

1.2 U-Boot

1
2
3
4
5
6
7
8
9
10
➜  u-boot git:(master) ✗ make starfive_visionfive2_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c
LEX scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
➜  u-boot git:(master) ✗ make OPENSBI=$OPENSBI
scripts/kconfig/conf --syncconfig Kconfig
UPD include/config.h
CFG spl/u-boot.cfg
GEN spl/include/autoconf.mk
CFG u-boot.cfg
GEN include/autoconf.mk
GEN include/autoconf.mk.dep
UPD include/generated/timestamp_autogenerated.h
ENVC include/generated/env.txt
ENVP include/generated/env.in
ENVT include/generated/environment.h
CC lib/asm-offsets.s
CC arch/riscv/lib/asm-offsets.s
PYMOD rebuild
/home/lvision/Desktop/VisionFive/u-boot/scripts/dtc/pylibfdt/setup.py:40: SyntaxWarning: invalid escape sequence '\w'
RE_KEY_VALUE = re.compile('(?P<key>\w+) *(?P<plus>[+])?= *(?P<value>.*)$')
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/flattree.o
......
AR spl/drivers/spi/built-in.o
CC spl/drivers/timer/timer-uclass.o
CC spl/drivers/timer/riscv_timer.o
CC spl/drivers/timer/riscv_aclint_timer.o
AR spl/drivers/timer/built-in.o
AR spl/drivers/built-in.o
AR spl/dts/built-in.o
CC spl/fs/fs_internal.o
AR spl/fs/built-in.o
LDS spl/u-boot-spl.lds
LD spl/u-boot-spl
OBJCOPY spl/u-boot-spl-nodtb.bin
mkdir -p spl/dts/
FDTGREP spl/dts/dt-spl.dtb
COPY spl/u-boot-spl.dtb
CAT spl/u-boot-spl-dtb.bin
COPY spl/u-boot-spl.bin
SYM spl/u-boot-spl.sym
MKIMAGE u-boot.img
COPY u-boot.dtb
MKIMAGE u-boot-dtb.img
BINMAN .binman_stamp
OFCHK .config
➜ u-boot git:(master) ✗

1.3 Linux Kernel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜  linux make defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'defconfig'
#
# No change to .config
#
1
2
3
4
5
6
7
8
9
10
11
12
13
➜  linux make menuconfig
HOSTCC scripts/kconfig/mconf.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTLD scripts/kconfig/mconf


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

By configuring menuconfig, we ignore building ALL other SoCs but tick VisionFive ONLY.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
➜  linux make -j16
HOSTCC scripts/basic/fixdep
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/fstree.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTCC scripts/dtc/util.o
HOSTCC scripts/dtc/checks.o
YACC scripts/dtc/dtc-parser.tab.[ch]
LEX scripts/dtc/dtc-lexer.lex.c
HOSTCC scripts/dtc/libfdt/fdt.o
HOSTCC scripts/dtc/libfdt/fdt_ro.o
HOSTCC scripts/dtc/libfdt/fdt_wip.o
HOSTCC scripts/dtc/libfdt/fdt_sw.o
HOSTCC scripts/dtc/libfdt/fdt_rw.o
HOSTCC scripts/dtc/libfdt/fdt_strerror.o
HOSTCC scripts/dtc/libfdt/fdt_empty_tree.o
HOSTCC scripts/dtc/libfdt/fdt_addresses.o
HOSTCC scripts/dtc/libfdt/fdt_overlay.o
HOSTCC scripts/dtc/fdtoverlay.o
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTLD scripts/dtc/fdtoverlay
HOSTLD scripts/dtc/dtc
......
LD [M] net/8021q/8021q.ko
LD [M] net/bridge/br_netfilter.ko
LD [M] net/llc/llc.ko
LD [M] net/bridge/bridge.ko
NM .tmp_vmlinux.kallsyms1.syms
KSYMS .tmp_vmlinux.kallsyms1.S
AS .tmp_vmlinux.kallsyms1.S
LD .tmp_vmlinux.kallsyms2
NM .tmp_vmlinux.kallsyms2.syms
KSYMS .tmp_vmlinux.kallsyms2.S
AS .tmp_vmlinux.kallsyms2.S
LD vmlinux
NM System.map
SORTTAB vmlinux
OBJCOPY arch/riscv/boot/Image
GZIP arch/riscv/boot/Image.gz
Kernel: arch/riscv/boot/Image.gz is ready

1.4 Busybox

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
➜  busybox make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv defconfig
scripts/kconfig/conf -d Config.in
*
* Busybox Configuration
*
*
* Settings
*
Enable compatibility for full-blown desktop systems (8kb) (DESKTOP) [Y/n/?] (NEW) y
Provide compatible behavior for rare corner cases (bigger code) (EXTRA_COMPAT) [N/y/?] (NEW) n
Building for Fedora distribution (FEDORA_COMPAT) [N/y/?] (NEW) n
Enable obsolete features removed before SUSv3 (INCLUDE_SUSv2) [Y/n/?] (NEW) y
Support --long-options (LONG_OPTS) [Y/?] (NEW) y
Show applet usage messages (SHOW_USAGE) [Y/n/?] (NEW) y
Show verbose applet usage messages (FEATURE_VERBOSE_USAGE) [Y/n/?] (NEW) y
Store applet usage messages in compressed form (FEATURE_COMPRESS_USAGE) [Y/n/?] (NEW) y
Support files > 2 GB (LFS) [Y/n/?] (NEW) y
Support 64bit wide time types (TIME64) [Y/n/?] (NEW) y
Support PAM (Pluggable Authentication Modules) (PAM) [N/y/?] (NEW) n
Use the devpts filesystem for Unix98 PTYs (FEATURE_DEVPTS) [Y/n/?] (NEW) y
Support utmp file (FEATURE_UTMP) [Y/n/?] (NEW) y
Support wtmp file (FEATURE_WTMP) [Y/n/?] (NEW) y
Support writing pidfiles (FEATURE_PIDFILE) [Y/n/?] (NEW) y
Directory for pidfiles (PID_FILE_PATH) [/var/run] (NEW) /var/run
Include busybox applet (BUSYBOX) [Y/n/?] (NEW) y
Support --show SCRIPT (FEATURE_SHOW_SCRIPT) [Y/n] (NEW) y
Support --install [-s] to install applet links at runtime (FEATURE_INSTALLER) [Y/n/?] (NEW) y
Don't use /usr (INSTALL_NO_USR) [N/y/?] (NEW) n
Drop SUID state for most applets (FEATURE_SUID) [Y/n/?] (NEW) y
Enable SUID configuration via /etc/busybox.conf (FEATURE_SUID_CONFIG) [Y/n/?] (NEW) y
Suppress warning message if /etc/busybox.conf is not readable (FEATURE_SUID_CONFIG_QUIET) [Y/n/?] (NEW) y
exec prefers applets (FEATURE_PREFER_APPLETS) [N/y/?] (NEW) n
Path to busybox executable (BUSYBOX_EXEC_PATH) [/proc/self/exe] (NEW) /proc/self/exe
Support NSA Security Enhanced Linux (SELINUX) [N/y/?] (NEW) n
Clean up all memory before exiting (usually not needed) (FEATURE_CLEAN_UP) [N/y/?] (NEW) n
Support LOG_INFO level syslog messages (FEATURE_SYSLOG_INFO) [Y/n/?] (NEW) y
*
*
* Build Options
*
......
......
......
*
* Options common to all shells
*
POSIX math support (FEATURE_SH_MATH) [Y/n/?] (NEW) y
Extend POSIX math support to 64 bit (FEATURE_SH_MATH_64) [Y/n/?] (NEW) y
Support BASE#nnnn literals (FEATURE_SH_MATH_BASE) [Y/n] (NEW) y
Hide message on interactive shell startup (FEATURE_SH_EXTRA_QUIET) [Y/n/?] (NEW) y
Standalone shell (FEATURE_SH_STANDALONE) [N/y/?] (NEW) n
Run 'nofork' applets directly (FEATURE_SH_NOFORK) [N/y/?] (NEW) n
read -t N.NNN support (+110 bytes) (FEATURE_SH_READ_FRAC) [Y/n/?] (NEW) y
Use $HISTFILESIZE (FEATURE_SH_HISTFILESIZE) [Y/n/?] (NEW) y
Embed scripts in the binary (FEATURE_SH_EMBEDDED_SCRIPTS) [Y/n/?] (NEW) y
*
* System Logging Utilities
*
klogd (6.2 kb) (KLOGD) [Y/n/?] (NEW) y
*
* klogd should not be used together with syslog to kernel printk buffer
*
Use the klogctl() interface (FEATURE_KLOGD_KLOGCTL) [Y/n/?] (NEW) y
logger (6.5 kb) (LOGGER) [Y/n/?] (NEW) y
logread (5 kb) (LOGREAD) [Y/n/?] (NEW) y
Double buffering (FEATURE_LOGREAD_REDUCED_LOCKING) [Y/n/?] (NEW) y
syslogd (14 kb) (SYSLOGD) [Y/n/?] (NEW) y
Rotate message files (FEATURE_ROTATE_LOGFILE) [Y/n/?] (NEW) y
Remote Log support (FEATURE_REMOTE_LOG) [Y/n/?] (NEW) y
Support -D (drop dups) option (FEATURE_SYSLOGD_DUP) [Y/n/?] (NEW) y
Support syslog.conf (FEATURE_SYSLOGD_CFG) [Y/n/?] (NEW) y
Include milliseconds in timestamps (FEATURE_SYSLOGD_PRECISE_TIMESTAMPS) [N/y/?] (NEW) n
Read buffer size in bytes (FEATURE_SYSLOGD_READ_BUFFER_SIZE) [256] (NEW) 256
Circular Buffer support (FEATURE_IPC_SYSLOG) [Y/n/?] (NEW) y
Circular buffer size in Kbytes (minimum 4KB) (FEATURE_IPC_SYSLOG_BUFFER_SIZE) [16] (NEW) 16
Linux kernel printk buffer support (FEATURE_KMSG_SYSLOG) [Y/n/?] (NEW) y
➜ busybox
1
2
3
4
5
6
7
8
9
➜  busybox make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv menuconfig
scripts/kconfig/mconf Config.in
#
# using defaults found in .config
#


*** End of configuration.
*** Execute 'make' to build the project or try 'make help'.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
➜  busybox make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv -j8       
LD archival/built-in.o
CC archival/bzip2.o
CC archival/bbunzip.o
CC archival/chksum_and_xwrite_tar_header.o
CC archival/dpkg.o
CC archival/cpio.o
CC archival/dpkg_deb.o
LD archival/libarchive/built-in.o
CC archival/gzip.o
CC archival/libarchive/common.o
CC archival/lzop.o
CC archival/libarchive/data_align.o
LD console-tools/built-in.o
CC console-tools/chvt.o
CC console-tools/clear.o
CC console-tools/deallocvt.o
CC archival/libarchive/data_extract_all.o
LD coreutils/built-in.o
CC coreutils/basename.o
CC coreutils/cat.o
CC console-tools/dumpkmap.o
archival/libarchive/data_extract_all.c: In function ‘data_extract_all’:
archival/libarchive/data_extract_all.c:235:25: warning: ignoring return value of ‘chown’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
235 | chown(dst_name, uid, gid);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
LD coreutils/libcoreutils/built-in.o
CC archival/libarchive/data_extract_to_command.o
CC archival/libarchive/data_extract_to_stdout.o
CC coreutils/libcoreutils/cp_mv_stat.o
LD debianutils/built-in.o
CC debianutils/pipe_progress.o
console-tools/dumpkmap.c: In function ‘dumpkmap_main’:
......
......
......
CC libbb/verror_msg.o
util-linux/mkfs_minix.c: In function ‘get_list_blocks’:
util-linux/mkfs_minix.c:532:17: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
532 | fscanf(listfile, "%lu\n", &blockno);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CC libbb/vfork_daemon_rexec.o
CC libbb/warn_ignoring_args.o
CC util-linux/mkswap.o
CC util-linux/more.o
CC libbb/wfopen.o
CC util-linux/mount.o
CC libbb/wfopen_input.o
CC libbb/write.o
CC util-linux/mountpoint.o
CC libbb/xatonum.o
CC util-linux/nsenter.o
CC util-linux/pivot_root.o
CC util-linux/rdate.o
CC libbb/xconnect.o
CC util-linux/rdev.o
CC libbb/xfunc_die.o
CC util-linux/readprofile.o
CC libbb/xfuncs.o
CC util-linux/renice.o
CC libbb/xfuncs_printf.o
CC util-linux/rev.o
CC libbb/xgetcwd.o
CC util-linux/rtcwake.o
CC util-linux/script.o
CC libbb/xgethostbyname.o
CC libbb/xreadlink.o
CC libbb/xrealloc_vector.o
CC util-linux/scriptreplay.o
CC util-linux/setarch.o
CC libbb/xregcomp.o
CC util-linux/setpriv.o
CC util-linux/setsid.o
CC util-linux/swaponoff.o
CC util-linux/switch_root.o
CC util-linux/taskset.o
CC util-linux/uevent.o
CC util-linux/umount.o
AR libbb/lib.a
CC util-linux/unshare.o
CC util-linux/wall.o
util-linux/unshare.c: In function ‘unshare_main’:
util-linux/unshare.c:295:25: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
295 | read(fdp.rd, ns_ctx_list, 1); /* ...using bogus buffer */
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
AR util-linux/lib.a
LINK busybox_unstripped
Trying libraries: m resolv rt
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Library rt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Final link with: m resolv
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
➜  busybox make CONFIG_PREFIX=./../busybox_rootfs install
./../busybox_rootfs//bin/arch -> busybox
./../busybox_rootfs//bin/ash -> busybox
./../busybox_rootfs//bin/base32 -> busybox
./../busybox_rootfs//bin/base64 -> busybox
./../busybox_rootfs//bin/cat -> busybox
./../busybox_rootfs//bin/chattr -> busybox
./../busybox_rootfs//bin/chgrp -> busybox
./../busybox_rootfs//bin/chmod -> busybox
./../busybox_rootfs//bin/chown -> busybox
./../busybox_rootfs//bin/conspy -> busybox
./../busybox_rootfs//bin/cp -> busybox
./../busybox_rootfs//bin/cpio -> busybox
./../busybox_rootfs//bin/cttyhack -> busybox
./../busybox_rootfs//bin/date -> busybox
......
......
......
./../busybox_rootfs//usr/sbin/ubirmvol -> ../../bin/busybox
./../busybox_rootfs//usr/sbin/ubirsvol -> ../../bin/busybox
./../busybox_rootfs//usr/sbin/ubiupdatevol -> ../../bin/busybox
./../busybox_rootfs//usr/sbin/udhcpd -> ../../bin/busybox


--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.
--------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
➜  busybox mkdir -p initramfs/{bin,dev,etc,home,mnt,proc,sys,usr}
➜ busybox cd initramfs/dev
➜ dev sudo mknod sda b 8 0
[sudo] password for lvision:
mknod: sda: File exists
➜ dev sudo mknod console c 5 1
mknod: console: File exists
➜ dev cd ..
➜ initramfs cp -r ../../busybox_rootfs/* ./
➜ initramfs ll
total 2.3M
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:59 bin
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:57 dev
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 etc
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 home
-rwxrwxr-x 1 lvision lvision 73 Dec 16 03:00 init
lrwxrwxrwx 1 lvision lvision 11 Dec 16 02:59 linuxrc -> bin/busybox
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 mnt
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 proc
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:59 sbin
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 sys
drwxrwxr-x 4 lvision lvision 4.0K Dec 16 02:59 usr
➜ initramfs
1
➜  initramfs vim init

and put

1
2
3
4
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
exec /bin/sh

in file init.

1
2
3
4
5
6
➜  initramfs cat init 
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
exec /bin/sh
➜ initramfs chmod +x init
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
➜  initramfs find . -print0 | cpio --null -ov --format=newc > initramfs.cpio 
.
./etc
./init
./busybox_rootfs
./busybox_rootfs/bin
./busybox_rootfs/bin/cpio
./busybox_rootfs/bin/ln
./busybox_rootfs/bin/su
./busybox_rootfs/bin/pwd
./busybox_rootfs/bin/gzip
./busybox_rootfs/bin/link
./busybox_rootfs/bin/lzop
./busybox_rootfs/bin/nice
./busybox_rootfs/bin/makemime
./busybox_rootfs/bin/fatattr
./busybox_rootfs/bin/busybox
......
......
......
./usr/sbin/sendmail
./usr/sbin/rtcwake
./usr/sbin/ftpd
./usr/sbin/adduser
./usr/sbin/nbd-client
./usr/sbin/dhcprelay
./usr/sbin/brctl
./usr/sbin/mim
./usr/sbin/udhcpd
./usr/sbin/nologin
./usr/sbin/ubidetach
./usr/sbin/addgroup
./usr/sbin/fdformat
./usr/sbin/crond
./sys
11511 blocks
➜ initramfs gzip ./initramfs.cpio
➜ initramfs ll
total 1.4M
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 03:58 bin
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:57 dev
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 etc
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 home
-rwxrwxr-x 1 lvision lvision 73 Dec 16 03:55 init
-rw-rw-r-- 1 lvision lvision 1.4M Dec 16 04:01 initramfs.cpio.gz
lrwxrwxrwx 1 lvision lvision 11 Dec 16 03:58 linuxrc -> bin/busybox
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 mnt
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 proc
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 03:58 sbin
drwxrwxr-x 2 lvision lvision 4.0K Dec 16 02:56 sys
drwxrwxr-x 4 lvision lvision 4.0K Dec 16 02:59 usr

2. Flashing

2.1 Prepare SD Disk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
➜  VisionFive sudo sgdisk --clear \
--set-alignment=2 \
--new=1:4096:8191 --change-name=1:spl --typecode=1:2E54B353-1271-4842-806F-E436D6AF6985\
--new=2:8192:16383 --change-name=2:uboot --typecode=2:BC13C2FF-59E6-4262-A352-B275FD6F7172 \
--new=3:16384:1654784 --change-name=3:system --typecode=3:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \
/dev/sdb

Setting name!
partNum is 0
Setting name!
partNum is 1
Setting name!
partNum is 2
The operation has completed successfully.

2.2 Flash the SD Card

Including ALL the above, say: - U-Boot - Linux Kernel - Busybox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
➜  VisionFive sudo dd if=./u-boot/spl/u-boot-spl.bin.normal.out of=/dev/sdb1
275+1 records in
275+1 records out
140919 bytes (141 kB, 138 KiB) copied, 0.111194 s, 1.3 MB/s
➜ VisionFive sudo dd if=./u-boot/u-boot.itb of=/dev/sdb2
1994+1 records in
1994+1 records out
1020947 bytes (1.0 MB, 997 KiB) copied, 0.0101341 s, 101 MB/s
➜ VisionFive sudo mount /dev/sdb3 /mnt/
➜ VisionFive sudo cp ./u-boot/spl/u-boot-spl.bin.normal.out /mnt
➜ VisionFive sudo cp ./u-boot/u-boot.itb /mnt
➜ VisionFive sudo cp ./linux/arch/riscv/boot/Image.gz /mnt
➜ VisionFive sudo cp ./busybox/initramfs/initramfs.cpio.gz /mnt
➜ VisionFive sudo cp ./linux/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dtb /mnt

Then, we take a look at our built system currently under folder /mnt

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
➜  VisionFive ll /mnt
total 9.2M
lrwxrwxrwx 1 root root 7 Dec 15 00:10 bin -> usr/bin
drwxr-xr-x 3 root root 4.0K Dec 15 03:38 boot
drwxr-xr-x 4 root root 4.0K Dec 15 00:10 dev
drwxr-xr-x 84 root root 4.0K Dec 15 00:26 etc
drwxr-xr-x 3 root root 4.0K Dec 15 00:26 home
-rw-r--r-- 1 root root 6.6M Dec 16 04:12 Image.gz
-rw-r--r-- 1 root root 1.4M Dec 16 04:13 initramfs.cpio.gz
-rw-r--r-- 1 root root 30K Dec 16 04:14 jh7110-starfive-visionfive-2-v1.3b.dtb
lrwxrwxrwx 1 root root 7 Dec 15 00:10 lib -> usr/lib
drwx------ 2 root root 16K Dec 15 03:38 lost+found
drwxr-xr-x 2 root root 4.0K Dec 15 00:10 media
drwxr-xr-x 2 root root 4.0K Dec 15 00:10 mnt
drwxr-xr-x 3 root root 4.0K Dec 15 00:26 opt
drwxr-xr-x 2 root root 4.0K Jul 27 22:43 proc
drwx------ 3 root root 4.0K Dec 15 00:12 root
drwxr-xr-x 2 root root 4.0K Jul 27 22:43 run
lrwxrwxrwx 1 root root 8 Dec 15 00:10 sbin -> usr/sbin
drwxr-xr-x 2 root root 4.0K Dec 15 00:10 srv
drwxr-xr-x 2 root root 4.0K Jul 27 22:43 sys
drwxrwxrwt 2 root root 4.0K Dec 15 00:25 tmp
-rw-r--r-- 1 root root 998K Dec 16 04:11 u-boot.itb
-rw-r--r-- 1 root root 138K Dec 16 04:11 u-boot-spl.bin.normal.out
drwxr-xr-x 11 root root 4.0K Dec 15 00:10 usr
drwxr-xr-x 12 root root 4.0K Dec 15 00:21 var

In my previous post, VisionFive2 was briefly introduced and demonstrated. Today, we're going to follow Building StarFive Debian Image and build a customized Debian Distro for VisionFive2.

1. Build Linux and Driver

1.1 Build Linux Kernel

Here, I'm NOT using StarFive Linux for VisionFive2, but standard Linux Kernel, today's newest version Linux Kernel 6.6.5.

Well, of course, before building, starfive_visionfive2_defconfig is to be copied under the folder where Linux Kernel stays.

Build VPU Driver

Due to some kernel incompatibility issue, I asked a question at VisionFive2 Github issues: Failed to build VisionFive2 soft_3rdpart, which also provides the solution.

Build SPL Tool

Nothing tough.

2. Create Debian Root Filesystem

2.1 Create BootStrap Rootfs

Instead of using a snapshot, I'm using a standard release Debian 12.3 of sid.

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
31
➜  VF2 sudo debootstrap --arch=riscv64 --no-check-gpg --no-merged-usr --exclude=usr-is-merged sid riscv-chroot http://deb.debian.org/debian/
I: Retrieving InRelease
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on http://deb.debian.org/debian...
I: Retrieving libacl1 2.3.1-3+b1
I: Validating libacl1 2.3.1-3+b1
I: Retrieving adduser 3.137
I: Validating adduser 3.137
I: Retrieving libapparmor1 3.0.12-1+b1
I: Validating libapparmor1 3.0.12-1+b1
I: Retrieving apt 2.7.7
I: Validating apt 2.7.7
I: Retrieving apt-utils 2.7.7
I: Validating apt-utils 2.7.7
......
I: Configuring libgssapi-krb5-2:riscv64...
I: Configuring whiptail...
I: Configuring libtirpc3:riscv64...
I: Configuring libnftables1:riscv64...
I: Configuring nftables...
I: Configuring iproute2...
I: Configuring isc-dhcp-client...
I: Configuring ifupdown...
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Base system installed successfully.
➜ VF2

All occurrences of riscv-chroot-snapshots now changes to riscv-chroot.

2.2 Some Other Preparations

  • Install Kernel Packages: As mentioned, I'm using Linux Kernel 6.6.5
  • Copy VPU Driver: VisionFive2's VPU is ONLY for video processing. Namely, this VPU refers to video processing unit, unlike Intel Movidius Vision Processing Unit
  • Copy AIC8800 (WiFi-Dongle) and ESWIN6600U (WiFi-Dongle) Firmware: It looks to me: without using these 2 types of WiFi-Dongle, it's pointless to copy the firmware files under the specified folder.
  • Copy Mesa Packages: I was trying to use the newest of today: Mesa v0.11.0-engineering-release-wayland, but finally realize there is NO point to carry out this step, for the Mesa version coming with Debian 12.3 is even newer..
  • Copy and Install Proprietary GPU Driver: this seems to be a MUST.
  • Copy Applications: I ignored this entire part.

3. Configure Debian

3.1 Chroot Bootstrap Rootfs

1
2
3
4
➜  VF2 sudo chroot $VF2_WORK_DIR/riscv-chroot
root@lvision-MS-7C60:/# ls
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
root@lvision-MS-7C60:/#

3.2 Update APT Source

1
2
3
4
5
6
7
8
9
10
11
12
13
root@lvision-MS-7C60:/# echo "Acquire::Check-Valid-Until no;" > /etc/apt/apt.conf.d/99-no-check-valid-until
root@lvision-MS-7C60:/# apt update -y
Hit:1 http://deb.debian.org/debian sid InRelease
Get:2 http://deb.debian.org/debian sid/main Translation-en [7070 kB]
Fetched 7070 kB in 6s (1200 kB/s)
Reading package lists... Done
Building dependency tree... Done
All packages are up to date.
root@lvision-MS-7C60:/# apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3.3 Install Basic Tools

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
root@lvision-MS-7C60:/# apt install initramfs-tools systemd-timesyncd rsync bash-completion u-boot-menu wget binutils alsa-utils
Reading package lists... Done
Building dependency tree... Done
The following additional packages will be installed:
alsa-topology-conf alsa-ucm-conf binutils-common binutils-riscv64-linux-gnu busybox ca-certificates initramfs-tools-core klibc-utils libasound2 libasound2-data
libatopology2 libbinutils libctf-nobfd0 libctf0 libfftw3-single3 libgomp1 libklibc libpsl5 libsamplerate0 libsframe1 linux-base openssl publicsuffix zstd
Suggested packages:
dialog binutils-doc gprofng-gui libasound2-plugins libfftw3-bin libfftw3-dev openssh-client openssh-server python3 python3-braceexpand flash-kernel
The following NEW packages will be installed:
alsa-topology-conf alsa-ucm-conf alsa-utils bash-completion binutils binutils-common binutils-riscv64-linux-gnu busybox ca-certificates initramfs-tools
initramfs-tools-core klibc-utils libasound2 libasound2-data libatopology2 libbinutils libctf-nobfd0 libctf0 libfftw3-single3 libgomp1 libklibc libpsl5 libsamplerate0
libsframe1 linux-base openssl publicsuffix rsync systemd-timesyncd u-boot-menu wget zstd
0 upgraded, 32 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.3 MB of archives.
After this operation, 44.9 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://deb.debian.org/debian sid/main riscv64 rsync riscv64 3.2.7-1 [425 kB]
Get:2 http://deb.debian.org/debian sid/main riscv64 bash-completion all 1:2.11-8 [224 kB]
Get:3 http://deb.debian.org/debian sid/main riscv64 openssl riscv64 3.1.4-2 [1408 kB]
Get:4 http://deb.debian.org/debian sid/main riscv64 ca-certificates all 20230311 [153 kB]
Get:5 http://deb.debian.org/debian sid/main riscv64 systemd-timesyncd riscv64 255-1 [69.2 kB]
Get:6 http://deb.debian.org/debian sid/main riscv64 libpsl5 riscv64 0.21.2-1+b1 [59.4 kB]
Get:7 http://deb.debian.org/debian sid/main riscv64 wget riscv64 1.21.4-1 [963 kB]
Get:8 http://deb.debian.org/debian sid/main riscv64 alsa-topology-conf all 1.2.5.1-2 [15.2 kB]
Get:9 http://deb.debian.org/debian sid/main riscv64 libasound2-data all 1.2.10-1 [20.6 kB]
Get:10 http://deb.debian.org/debian sid/main riscv64 libasound2 riscv64 1.2.10-1 [378 kB]
Get:11 http://deb.debian.org/debian sid/main riscv64 alsa-ucm-conf all 1.2.10-1 [60.3 kB]
Get:12 http://deb.debian.org/debian sid/main riscv64 libatopology2 riscv64 1.2.10-1 [60.5 kB]
Get:13 http://deb.debian.org/debian sid/main riscv64 libgomp1 riscv64 13.2.0-8 [125 kB]
Get:14 http://deb.debian.org/debian sid/main riscv64 libfftw3-single3 riscv64 3.3.10-1 [380 kB]
Get:15 http://deb.debian.org/debian sid/main riscv64 libsamplerate0 riscv64 0.2.2-4 [950 kB]
Get:16 http://deb.debian.org/debian sid/main riscv64 alsa-utils riscv64 1.2.10-1 [1125 kB]
Get:17 http://deb.debian.org/debian sid/main riscv64 binutils-common riscv64 2.41.50.20231206-1 [2379 kB]
Get:18 http://deb.debian.org/debian sid/main riscv64 libsframe1 riscv64 2.41.50.20231206-1 [76.1 kB]
Get:19 http://deb.debian.org/debian sid/main riscv64 libbinutils riscv64 2.41.50.20231206-1 [501 kB]
Get:20 http://deb.debian.org/debian sid/main riscv64 libctf-nobfd0 riscv64 2.41.50.20231206-1 [157 kB]
Get:21 http://deb.debian.org/debian sid/main riscv64 libctf0 riscv64 2.41.50.20231206-1 [92.5 kB]
Get:22 http://deb.debian.org/debian sid/main riscv64 binutils-riscv64-linux-gnu riscv64 2.41.50.20231206-1 [836 kB]
Get:23 http://deb.debian.org/debian sid/main riscv64 binutils riscv64 2.41.50.20231206-1 [65.9 kB]
Get:24 http://deb.debian.org/debian sid/main riscv64 busybox riscv64 1:1.36.1-6 [509 kB]
Get:25 http://deb.debian.org/debian sid/main riscv64 libklibc riscv64 2.0.13-2 [51.0 kB]
Get:26 http://deb.debian.org/debian sid/main riscv64 klibc-utils riscv64 2.0.13-2 [108 kB]
Get:27 http://deb.debian.org/debian sid/main riscv64 initramfs-tools-core all 0.142 [105 kB]
Get:28 http://deb.debian.org/debian sid/main riscv64 linux-base all 4.9 [31.8 kB]
Get:29 http://deb.debian.org/debian sid/main riscv64 initramfs-tools all 0.142 [72.9 kB]
Get:30 http://deb.debian.org/debian sid/main riscv64 publicsuffix all 20231001.0357-0.1 [125 kB]
Get:31 http://deb.debian.org/debian sid/main riscv64 u-boot-menu all 4.2.2 [9436 B]
Get:32 http://deb.debian.org/debian sid/main riscv64 zstd riscv64 1.5.5+dfsg2-2 [771 kB]
Fetched 12.3 MB in 11s (1082 kB/s)
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_CA:en",
LC_ALL = (unset),
LC_PAPER = "en_CA.UTF-8",
LC_NUMERIC = "en_CA.UTF-8",
LC_IDENTIFICATION = "en_CA.UTF-8",
LC_MEASUREMENT = "en_CA.UTF-8",
LC_NAME = "en_CA.UTF-8",
LC_TELEPHONE = "en_CA.UTF-8",
LC_ADDRESS = "en_CA.UTF-8",
LC_MONETARY = "en_CA.UTF-8",
LC_TIME = "en_CA.UTF-8",
LANG = "en_CA.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Extracting templates from packages: 100%
Preconfiguring packages ...
E: Can not write log (Is /dev/pts mounted?) - posix_openpt (19: No such device)
Selecting previously unselected package rsync.
(Reading database ... 10297 files and directories currently installed.)
Preparing to unpack .../00-rsync_3.2.7-1_riscv64.deb ...
Unpacking rsync (3.2.7-1) ...
Selecting previously unselected package bash-completion.
Preparing to unpack .../01-bash-completion_1%3a2.11-8_all.deb ...
Unpacking bash-completion (1:2.11-8) ...
Selecting previously unselected package openssl.
Preparing to unpack .../02-openssl_3.1.4-2_riscv64.deb ...
Unpacking openssl (3.1.4-2) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../03-ca-certificates_20230311_all.deb ...
Unpacking ca-certificates (20230311) ...
Selecting previously unselected package systemd-timesyncd.
Preparing to unpack .../04-systemd-timesyncd_255-1_riscv64.deb ...
Unpacking systemd-timesyncd (255-1) ...
Selecting previously unselected package libpsl5:riscv64.
Preparing to unpack .../05-libpsl5_0.21.2-1+b1_riscv64.deb ...
Unpacking libpsl5:riscv64 (0.21.2-1+b1) ...
Selecting previously unselected package wget.
Preparing to unpack .../06-wget_1.21.4-1_riscv64.deb ...
Unpacking wget (1.21.4-1) ...
Selecting previously unselected package alsa-topology-conf.
Preparing to unpack .../07-alsa-topology-conf_1.2.5.1-2_all.deb ...
Unpacking alsa-topology-conf (1.2.5.1-2) ...
Selecting previously unselected package libasound2-data.
Preparing to unpack .../08-libasound2-data_1.2.10-1_all.deb ...
Unpacking libasound2-data (1.2.10-1) ...
Selecting previously unselected package libasound2:riscv64.
Preparing to unpack .../09-libasound2_1.2.10-1_riscv64.deb ...
Unpacking libasound2:riscv64 (1.2.10-1) ...
Selecting previously unselected package alsa-ucm-conf.
Preparing to unpack .../10-alsa-ucm-conf_1.2.10-1_all.deb ...
Unpacking alsa-ucm-conf (1.2.10-1) ...
Selecting previously unselected package libatopology2:riscv64.
Preparing to unpack .../11-libatopology2_1.2.10-1_riscv64.deb ...
Unpacking libatopology2:riscv64 (1.2.10-1) ...
Selecting previously unselected package libgomp1:riscv64.
Preparing to unpack .../12-libgomp1_13.2.0-8_riscv64.deb ...
Unpacking libgomp1:riscv64 (13.2.0-8) ...
Selecting previously unselected package libfftw3-single3:riscv64.
Preparing to unpack .../13-libfftw3-single3_3.3.10-1_riscv64.deb ...
Unpacking libfftw3-single3:riscv64 (3.3.10-1) ...
Selecting previously unselected package libsamplerate0:riscv64.
Preparing to unpack .../14-libsamplerate0_0.2.2-4_riscv64.deb ...
Unpacking libsamplerate0:riscv64 (0.2.2-4) ...
Selecting previously unselected package alsa-utils.
Preparing to unpack .../15-alsa-utils_1.2.10-1_riscv64.deb ...
Unpacking alsa-utils (1.2.10-1) ...
Selecting previously unselected package binutils-common:riscv64.
Preparing to unpack .../16-binutils-common_2.41.50.20231206-1_riscv64.deb ...
Unpacking binutils-common:riscv64 (2.41.50.20231206-1) ...
Selecting previously unselected package libsframe1:riscv64.
Preparing to unpack .../17-libsframe1_2.41.50.20231206-1_riscv64.deb ...
Unpacking libsframe1:riscv64 (2.41.50.20231206-1) ...
Selecting previously unselected package libbinutils:riscv64.
Preparing to unpack .../18-libbinutils_2.41.50.20231206-1_riscv64.deb ...
Unpacking libbinutils:riscv64 (2.41.50.20231206-1) ...
Selecting previously unselected package libctf-nobfd0:riscv64.
Preparing to unpack .../19-libctf-nobfd0_2.41.50.20231206-1_riscv64.deb ...
Unpacking libctf-nobfd0:riscv64 (2.41.50.20231206-1) ...
Selecting previously unselected package libctf0:riscv64.
Preparing to unpack .../20-libctf0_2.41.50.20231206-1_riscv64.deb ...
Unpacking libctf0:riscv64 (2.41.50.20231206-1) ...
Selecting previously unselected package binutils-riscv64-linux-gnu.
Preparing to unpack .../21-binutils-riscv64-linux-gnu_2.41.50.20231206-1_riscv64.deb ...
Unpacking binutils-riscv64-linux-gnu (2.41.50.20231206-1) ...
Selecting previously unselected package binutils.
Preparing to unpack .../22-binutils_2.41.50.20231206-1_riscv64.deb ...
Unpacking binutils (2.41.50.20231206-1) ...
Selecting previously unselected package busybox.
Preparing to unpack .../23-busybox_1%3a1.36.1-6_riscv64.deb ...
Unpacking busybox (1:1.36.1-6) ...
Selecting previously unselected package libklibc:riscv64.
Preparing to unpack .../24-libklibc_2.0.13-2_riscv64.deb ...
Unpacking libklibc:riscv64 (2.0.13-2) ...
Selecting previously unselected package klibc-utils.
Preparing to unpack .../25-klibc-utils_2.0.13-2_riscv64.deb ...
Unpacking klibc-utils (2.0.13-2) ...
Selecting previously unselected package initramfs-tools-core.
Preparing to unpack .../26-initramfs-tools-core_0.142_all.deb ...
Unpacking initramfs-tools-core (0.142) ...
Selecting previously unselected package linux-base.
Preparing to unpack .../27-linux-base_4.9_all.deb ...
Unpacking linux-base (4.9) ...
Selecting previously unselected package initramfs-tools.
Preparing to unpack .../28-initramfs-tools_0.142_all.deb ...
Unpacking initramfs-tools (0.142) ...
Selecting previously unselected package publicsuffix.
Preparing to unpack .../29-publicsuffix_20231001.0357-0.1_all.deb ...
Unpacking publicsuffix (20231001.0357-0.1) ...
Selecting previously unselected package u-boot-menu.
Preparing to unpack .../30-u-boot-menu_4.2.2_all.deb ...
Unpacking u-boot-menu (4.2.2) ...
Selecting previously unselected package zstd.
Preparing to unpack .../31-zstd_1.5.5+dfsg2-2_riscv64.deb ...
Unpacking zstd (1.5.5+dfsg2-2) ...
Setting up libpsl5:riscv64 (0.21.2-1+b1) ...
Setting up linux-base (4.9) ...
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Setting up wget (1.21.4-1) ...
Setting up binutils-common:riscv64 (2.41.50.20231206-1) ...
Setting up libctf-nobfd0:riscv64 (2.41.50.20231206-1) ...
Setting up libgomp1:riscv64 (13.2.0-8) ...
Setting up libsframe1:riscv64 (2.41.50.20231206-1) ...
Setting up libasound2-data (1.2.10-1) ...
Setting up busybox (1:1.36.1-6) ...
Setting up libklibc:riscv64 (2.0.13-2) ...
Setting up bash-completion (1:2.11-8) ...
Setting up systemd-timesyncd (255-1) ...
Creating group 'systemd-timesync' with GID 992.
Creating user 'systemd-timesync' (systemd Time Synchronization) with UID 992 and GID 992.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Setting up alsa-topology-conf (1.2.5.1-2) ...
Setting up libasound2:riscv64 (1.2.10-1) ...
Setting up libbinutils:riscv64 (2.41.50.20231206-1) ...
Setting up klibc-utils (2.0.13-2) ...
No diversion 'diversion of /usr/share/initramfs-tools/hooks/klibc to /usr/share/initramfs-tools/hooks/klibc^i-t by klibc-utils', none removed.
Setting up libsamplerate0:riscv64 (0.2.2-4) ...
Setting up openssl (3.1.4-2) ...
Setting up libatopology2:riscv64 (1.2.10-1) ...
Setting up publicsuffix (20231001.0357-0.1) ...
Setting up zstd (1.5.5+dfsg2-2) ...
Setting up rsync (3.2.7-1) ...
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Running in chroot, ignoring request.
Setting up libctf0:riscv64 (2.41.50.20231206-1) ...
Setting up u-boot-menu (4.2.2) ...
Setting up libfftw3-single3:riscv64 (3.3.10-1) ...
Setting up alsa-ucm-conf (1.2.10-1) ...
Setting up binutils-riscv64-linux-gnu (2.41.50.20231206-1) ...
Setting up binutils (2.41.50.20231206-1) ...
Setting up ca-certificates (20230311) ...
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Updating certificates in /etc/ssl/certs...
140 added, 0 removed; done.
Setting up alsa-utils (1.2.10-1) ...
Setting up initramfs-tools-core (0.142) ...
Setting up initramfs-tools (0.142) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for libc-bin (2.37-13) ...
Processing triggers for ca-certificates (20230311) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for initramfs-tools (0.142) ...

Can anybody tell me why:

1
2
3
/proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.

There is a clear typo, replace sudo to apt install.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
root@lvision-MS-7C60:/# apt install network-manager network-manager-gnome openssh-server net-tools -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
adwaita-icon-theme at-spi2-common at-spi2-core dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session dconf-gsettings-backend
dconf-service dns-root-data dnsmasq-base fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono gcr gnome-icon-theme gnome-keyring gnome-keyring-pkcs11
gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme iso-codes libassuan0 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libavahi-client3
libavahi-common-data libavahi-common3 libayatana-appindicator3-1 libayatana-ido3-0.4-0 libayatana-indicator3-7 libbluetooth3 libbrotli1 libcairo-gobject2 libcairo2
libcbor0.10 libcloudproviders0 libcolord2 libcups2 libcurl3-gnutls libdatrie1 libdbus-1-3 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdconf1 libdeflate0 libduktape207
libepoxy0 libexpat1 libfido2-1 libfontconfig1 libfreetype6 libfribidi0 libgck-1-0 libgcr-base-3-1 libgcr-ui-3-1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common libglib2.0-0 libglib2.0-data libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common libgudev-1.0-0 libharfbuzz0b libicu72 libjbig0 libjim0.82
libjpeg62-turbo liblcms2-2 libldap-2.5-0 libldap-common liblerc4 libmbim-glib4 libmbim-proxy libmbim-utils libmm-glib0 libndp0 libnetfilter-conntrack3 libnfnetlink0
libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnl-route-3-200 libnm0 libnma-common libnma0 libnsl2 libpam-gnome-keyring libpam-systemd libpango-1.0-0 libpangocairo-1.0-0
libpangoft2-1.0-0 libpcap0.8 libpcsclite1 libpixman-1-0 libpng16-16 libpolkit-agent-1-0 libpolkit-gobject-1-0 libqmi-glib5 libqmi-proxy libqmi-utils libqrtr-glib0
librsvg2-2 librsvg2-common librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libsecret-1-0 libsecret-common libsharpyuv0 libssh2-1 libteamdctl0 libthai-data
libthai0 libtiff6 libusb-1.0-0 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp7 libwrap0 libx11-6 libx11-data libxau6 libxcb-render0 libxcb-shm0 libxcb1
libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxml2 libxmuu1 libxrandr2 libxrender1 libxtst6
mobile-broadband-provider-info modemmanager ncurses-term notification-daemon openssh-client openssh-sftp-server p11-kit p11-kit-modules pinentry-gnome3 policykit-1-gnome
polkitd ppp runit-helper sgml-base shared-mime-info ucf usb-modeswitch usb-modeswitch-data usr-is-merged wireless-regdb wpasupplicant x11-common xauth xdg-user-dirs
xkb-data xml-core
Suggested packages:
isoquery colord cups-common low-memory-monitor gvfs liblcms2-utils pcscd librsvg2-bin libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap
libsasl2-modules-otp libsasl2-modules-sql libteam-utils iptables network-manager-openconnect-gnome network-manager-openvpn-gnome network-manager-vpnc-gnome
network-manager-pptp-gnome keychain libpam-ssh monkeysphere ssh-askpass molly-guard ufw pinentry-doc polkitd-pkla sgml-base-doc comgt wvdial wpagui
libengine-pkcs11-openssl debhelper
The following NEW packages will be installed:
adwaita-icon-theme at-spi2-common at-spi2-core dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session dconf-gsettings-backend
dconf-service dns-root-data dnsmasq-base fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono gcr gnome-icon-theme gnome-keyring gnome-keyring-pkcs11
gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme iso-codes libassuan0 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libavahi-client3
libavahi-common-data libavahi-common3 libayatana-appindicator3-1 libayatana-ido3-0.4-0 libayatana-indicator3-7 libbluetooth3 libbrotli1 libcairo-gobject2 libcairo2
libcbor0.10 libcloudproviders0 libcolord2 libcups2 libcurl3-gnutls libdatrie1 libdbus-1-3 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdconf1 libdeflate0 libduktape207
libepoxy0 libexpat1 libfido2-1 libfontconfig1 libfreetype6 libfribidi0 libgck-1-0 libgcr-base-3-1 libgcr-ui-3-1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin
libgdk-pixbuf2.0-common libglib2.0-0 libglib2.0-data libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common libgudev-1.0-0 libharfbuzz0b libicu72 libjbig0 libjim0.82
libjpeg62-turbo liblcms2-2 libldap-2.5-0 libldap-common liblerc4 libmbim-glib4 libmbim-proxy libmbim-utils libmm-glib0 libndp0 libnetfilter-conntrack3 libnfnetlink0
libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnl-route-3-200 libnm0 libnma-common libnma0 libnsl2 libpam-gnome-keyring libpam-systemd libpango-1.0-0 libpangocairo-1.0-0
libpangoft2-1.0-0 libpcap0.8 libpcsclite1 libpixman-1-0 libpng16-16 libpolkit-agent-1-0 libpolkit-gobject-1-0 libqmi-glib5 libqmi-proxy libqmi-utils libqrtr-glib0
librsvg2-2 librsvg2-common librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libsecret-1-0 libsecret-common libsharpyuv0 libssh2-1 libteamdctl0 libthai-data
libthai0 libtiff6 libusb-1.0-0 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp7 libwrap0 libx11-6 libx11-data libxau6 libxcb-render0 libxcb-shm0 libxcb1
libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxml2 libxmuu1 libxrandr2 libxrender1 libxtst6
mobile-broadband-provider-info modemmanager ncurses-term net-tools network-manager network-manager-gnome notification-daemon openssh-client openssh-server
openssh-sftp-server p11-kit p11-kit-modules pinentry-gnome3 policykit-1-gnome polkitd ppp runit-helper sgml-base shared-mime-info ucf usb-modeswitch usb-modeswitch-data
usr-is-merged wireless-regdb wpasupplicant x11-common xauth xdg-user-dirs xkb-data xml-core
0 upgraded, 179 newly installed, 0 to remove and 0 not upgraded.
Need to get 70.3 MB of archives.
After this operation, 295 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian sid/main riscv64 libdbus-1-3 riscv64 1.14.10-3 [207 kB]
Get:2 http://deb.debian.org/debian sid/main riscv64 dbus-bin riscv64 1.14.10-3 [105 kB]
Get:3 http://deb.debian.org/debian sid/main riscv64 dbus-session-bus-common all 1.14.10-3 [78.9 kB]
Get:4 http://deb.debian.org/debian sid/main riscv64 libexpat1 riscv64 2.5.0-2+b1 [95.2 kB]
Get:5 http://deb.debian.org/debian sid/main riscv64 dbus-daemon riscv64 1.14.10-3 [185 kB]
Get:6 http://deb.debian.org/debian sid/main riscv64 dbus-system-bus-common all 1.14.10-3 [80.0 kB]
Get:7 http://deb.debian.org/debian sid/main riscv64 usr-is-merged all 38 [5504 B]
Get:8 http://deb.debian.org/debian sid/main riscv64 dbus riscv64 1.14.10-3 [98.3 kB]
Get:9 http://deb.debian.org/debian sid/main riscv64 libcbor0.10 riscv64 0.10.2-1.1 [27.3 kB]
Get:10 http://deb.debian.org/debian sid/main riscv64 libfido2-1 riscv64 1.14.0-1 [82.1 kB]
Get:11 http://deb.debian.org/debian sid/main riscv64 openssh-client riscv64 1:9.5p1-2 [984 kB]
Get:12 http://deb.debian.org/debian sid/main riscv64 openssh-sftp-server riscv64 1:9.5p1-2 [66.8 kB]
Get:13 http://deb.debian.org/debian sid/main riscv64 ucf all 3.0043+nmu1 [55.2 kB]
Get:14 http://deb.debian.org/debian sid/main riscv64 runit-helper all 2.15.2 [6520 B]
Get:15 http://deb.debian.org/debian sid/main riscv64 libnsl2 riscv64 1.3.0-3 [40.0 kB]
Get:16 http://deb.debian.org/debian sid/main riscv64 libwrap0 riscv64 7.6.q-32 [55.4 kB]
Get:17 http://deb.debian.org/debian sid/main riscv64 openssh-server riscv64 1:9.5p1-2 [447 kB]
Get:18 http://deb.debian.org/debian sid/main riscv64 sgml-base all 1.31 [15.4 kB]
Get:19 http://deb.debian.org/debian sid/main riscv64 libpam-systemd riscv64 255-1 [260 kB]
Get:20 http://deb.debian.org/debian sid/main riscv64 ncurses-term all 6.4+20231121-1 [508 kB]
Get:21 http://deb.debian.org/debian sid/main riscv64 hicolor-icon-theme all 0.17-2 [11.4 kB]
Get:22 http://deb.debian.org/debian sid/main riscv64 libgdk-pixbuf2.0-common all 2.42.10+dfsg-3 [307 kB]
Get:23 http://deb.debian.org/debian sid/main riscv64 libglib2.0-0 riscv64 2.78.3-1 [1467 kB]
Get:24 http://deb.debian.org/debian sid/main riscv64 libicu72 riscv64 72.1-4 [9375 kB]
Get:25 http://deb.debian.org/debian sid/main riscv64 libxml2 riscv64 2.9.14+dfsg-1.3+b2 [706 kB]
Get:26 http://deb.debian.org/debian sid/main riscv64 shared-mime-info riscv64 2.4-1 [750 kB]
Get:27 http://deb.debian.org/debian sid/main riscv64 libjpeg62-turbo riscv64 1:2.1.5-2+b1 [154 kB]
Get:28 http://deb.debian.org/debian sid/main riscv64 libpng16-16 riscv64 1.6.40-2 [282 kB]
Get:29 http://deb.debian.org/debian sid/main riscv64 libdeflate0 riscv64 1.18-1 [37.2 kB]
Get:30 http://deb.debian.org/debian sid/main riscv64 libjbig0 riscv64 2.1-6.1 [32.8 kB]
Get:31 http://deb.debian.org/debian sid/main riscv64 liblerc4 riscv64 4.0.0+ds-4 [176 kB]

......

Setting up notification-daemon (3.20.0-4) ...
Setting up at-spi2-core (2.50.0-1) ...
Setting up libayatana-indicator3-7:riscv64 (0.9.3-1.1) ...
Setting up libgcr-ui-3-1:riscv64 (3.41.1-3) ...
Setting up gcr (3.41.1-3) ...
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/user/graphical-session-pre.target.wants/gcr-ssh-agent.service → /usr/lib/systemd/user/gcr-ssh-agent.service.
Created symlink /etc/systemd/user/sockets.target.wants/gcr-ssh-agent.socket → /usr/lib/systemd/user/gcr-ssh-agent.socket.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Setting up pinentry-gnome3 (1.2.1-3) ...
Setting up libayatana-appindicator3-1 (0.5.93-1) ...
Setting up gnome-keyring (42.1-1) ...
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/user/graphical-session-pre.target.wants/gnome-keyring-daemon.service → /usr/lib/systemd/user/gnome-keyring-daemon.service.
Created symlink /etc/systemd/user/sockets.target.wants/gnome-keyring-daemon.socket → /usr/lib/systemd/user/gnome-keyring-daemon.socket.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Processing triggers for libc-bin (2.37-13) ...
Processing triggers for sgml-base (1.31) ...
Setting up polkitd (123-3) ...
Creating group 'polkitd' with GID 991.
Creating user 'polkitd' (polkit) with UID 991 and GID 991.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Running in chroot, ignoring request.
Reloading system message bus config...Failed to open connection to "system" message bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
invoke-rc.d: initscript dbus, action "reload" failed.
/proc/ is not mounted, but required for successful operation of systemd-tmpfiles. Please mount /proc/. Alternatively, consider using the --root= or --image= switches.
start-stop-daemon: nothing in /proc - not mounted?
start-stop-daemon: unable to stat /usr/libexec/polkitd (No such file or directory)
Setting up policykit-1-gnome (0.105-8) ...
Setting up network-manager (1.44.2-6) ...
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service → /usr/lib/systemd/system/NetworkManager-dispatcher.service.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service → /usr/lib/systemd/system/NetworkManager-wait-online.service.
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service → /usr/lib/systemd/system/NetworkManager.service.
Setting up modemmanager (1.22.0-1) ...
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/dbus-org.freedesktop.ModemManager1.service → /usr/lib/systemd/system/ModemManager.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ModemManager.service → /usr/lib/systemd/system/ModemManager.service.
Setting up network-manager-gnome (1.34.0-2) ...
Processing triggers for dbus (1.14.10-3) ...
Processing triggers for libgdk-pixbuf-2.0-0:riscv64 (2.42.10+dfsg-3) ...
root@lvision-MS-7C60:/# ls
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
root@lvision-MS-7C60:/# ls proc
root@lvision-MS-7C60:/#

3.4 Install GNOME Desktop

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
root@lvision-MS-7C60:/# DEBIAN_FRONTEND=noninteractive apt-get install gnome-shell gnome-terminal gnome-tweaks gnome-shell-extensions -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package gnome-shell is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
gnome-shell-common

E: Package 'gnome-shell' has no installation candidate
root@lvision-MS-7C60:/# DEBIAN_FRONTEND=noninteractive apt-get install gnome-terminal gnome-tweaks gnome-shell-extensions -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
gnome-shell-extensions : Depends: gnome-shell (< 45~) but it is not installable
Depends: gnome-shell (>= 44~) but it is not installable
Recommends: gnome-shell-extension-prefs but it is not installable
E: Unable to correct problems, you have held broken packages.
root@lvision-MS-7C60:/# DEBIAN_FRONTEND=noninteractive apt-get install gnome-terminal gnome-tweaks -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
aspell aspell-en bsdextrautils bubblewrap cpp cpp-13 desktop-file-utils dictionaries-common dirmngr docbook-xml dosfstools eject emacsen-common enchant-2 exfatprogs fonts-dejavu fonts-dejavu-extra fonts-droid-fallback fonts-noto-mono fonts-urw-base35 fuse3
geocode-glib-common ghostscript gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdesktopenums-3.0 gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gnomedesktop-3.0 gir1.2-gtk-3.0 gir1.2-handy-1 gir1.2-harfbuzz-0.0 gir1.2-notify-0.7 gir1.2-pango-1.0 glib-networking
glib-networking-common glib-networking-services gnome-desktop3-data gnome-settings-daemon gnome-settings-daemon-common gnome-shell-common gnome-terminal-data gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm groff-base gstreamer1.0-gl
gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x gvfs gvfs-common gvfs-daemons gvfs-libs hunspell-en-us iio-sensor-proxy imagemagick-6-common libaa1 libaacs0 libabsl20220623 libaom3 libaspell15 libass9
libasyncns0 libatasmart4 libatomic1 libavc1394-0 libavcodec60 libavfilter9 libavformat60 libavif16 libavtp0 libavutil58 libbdplus0 libblas3 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3
libblockdev-utils3 libblockdev3 libbluray2 libbs2b0 libbytesize-common libbytesize1 libc-l10n libcaca0 libcanberra-gtk3-0 libcanberra-gtk3-module libcanberra0 libcdparanoia0 libchromaprint1 libcjson1 libcodec2-1.2 libconfig++9v5 libdav1d7 libdc1394-25 libdca0 libde265-0
libdecor-0-0 libdecor-0-plugin-1-gtk libdirectfb-1.7-7 libdjvulibre-text libdjvulibre21 libdrm-amdgpu1 libdrm-common libdrm-nouveau2 libdrm-radeon1 libdrm2 libdv4 libdvdnav4 libdvdread8 libdw1 libegl-mesa0 libegl1 libenchant-2-2 libevdev2 libfaad2 libffado2
libfftw3-double3 libflac12 libflite1 libfluidsynth3 libfontenc1 libfreeaptx0 libfuse3-3 libgav1-1 libgbm1 libgeoclue-2-0 libgeocode-glib-2-0 libgfortran5 libgirepository-1.0-1 libgl1 libgl1-mesa-dri libglapi-mesa libgles2 libglibmm-2.4-1v5 libglvnd0 libglx-mesa0 libglx0
libgme0 libgnome-desktop-3-20 libgpgme11 libgpm2 libgraphene-1.0-0 libgs-common libgs10 libgs10-common libgsm1 libgssdp-1.6-0 libgstreamer-gl1.0-0 libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgupnp-1.6-0 libgupnp-igd-1.6-0
libgweather-4-0 libgweather-4-common libhandy-1-0 libharfbuzz-gobject0 libharfbuzz-icu0 libheif-plugin-aomenc libheif-plugin-dav1d libheif-plugin-libde265 libheif-plugin-x265 libheif1 libhunspell-1.7-0 libhwy1 libhyphen0 libice6 libidn12 libiec61883-0 libijs-0.35
libimath-3-1-29 libimobiledevice6 libinstpatch-1.0-2 libisl23 libjack-jackd2-0 libjavascriptcoregtk-4.1-0 libjbig2dec0 libjson-glib-1.0-0 libjson-glib-1.0-common libjxl0.7 libjxr-tools libjxr0 libkate1 libksba8 liblapack3 liblc3-1 libldacbt-abr2 libldacbt-enc2 liblilv-0-0
libllvm16 liblqr-1-0 liblrdf0 libltc11 libltdl7 liblua5.4-0 libmagickcore-6.q16-7 libmagickcore-6.q16-7-extra libmagickwand-6.q16-7 libmanette-0.2-0 libmbedcrypto7 libmjpegutils-2.1-0 libmodplug1 libmp3lame0 libmpc3 libmpcdec6 libmpeg2encpp-2.1-0 libmpfr6 libmpg123-0
libmplex2-2.1-0 libmysofa1 libnautilus-extension4 libncurses6 libneon27 libnice10 libnorm1 libnotify4 libnpth0 libnspr4 libnss3 libntfs-3g89 libnvme1 libogg0 libopenal-data libopenal1 libopenexr-3-1-30 libopenh264-7 libopenjp2-7 libopenmpt0 libopenni2-0 libopus0
liborc-0.4-0 libpangoxft-1.0-0 libpaper-utils libpaper1 libparted2 libpgm-5.3-0 libpipeline1 libpipewire-0.3-0 libpipewire-0.3-common libpipewire-0.3-modules libplacebo338 libplist3 libpocketsphinx3 libpostproc57 libproxy1v5 libpulse-mainloop-glib0 libpulse0
libpython3-stdlib libpython3.11-minimal libpython3.11-stdlib libqrencode4 librabbitmq4 libraptor2-0 librav1e0 libraw1394-11 libraw23 librist4 libroc0.3 librubberband2 libsbc1 libsdl2-2.0-0 libsensors-config libsensors5 libserd-0-0 libshine3 libshout3 libsigc++-2.0-0v5
libsm6 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 libsord-0-0 libsoundtouch1 libsoup-3.0-0 libsoup-3.0-common libsoxr0 libspa-0.2-bluetooth libspa-0.2-modules libspandsp2 libspeex1 libspeexdsp1 libsphinxbase3 libsqlite3-0 libsratom-0-0 libsrt1.5-gnutls libsrtp2-1
libssh-gcrypt-4 libsvtav1enc1d1 libswresample4 libswscale7 libtag1v5 libtag1v5-vanilla libtdb1 libtheora0 libtwolame0 libuchardet0 libudfread0 libudisks2-0 libunibreak5 libunwind8 libupower-glib3 libusbmuxd6 libuv1 libv4l-0 libv4lconvert0 libva-drm2 libva-x11-2 libva2
libvdpau-va-gl1 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvo-aacenc0 libvo-amrwbenc0 libvolume-key1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx8 libvte-2.91-0 libvte-2.91-common libvulkan1 libwacom-common libwacom9 libwavpack1 libwayland-server0 libwebkit2gtk-4.1-0
libwebpdemux2 libwebpmux3 libwebrtc-audio-processing1 libwildmidi2 libwireplumber-0.4-0 libwmflite-0.2-7 libwoff1 libwpe-1.0-1 libwpebackend-fdo-1.0-1 libx11-xcb1 libx264-164 libx265-199 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0
libxcb-sync1 libxcb-xfixes0 libxcb-xkb1 libxft2 libxkbcommon-x11-0 libxkbregistry0 libxml++2.6-2v5 libxmu6 libxpm4 libxshmfence1 libxslt1.1 libxss1 libxt6 libxv1 libxvidcore4 libxxf86vm1 libyajl2 libyelp0 libyuv0 libz3-4 libzbar0 libzimg2 libzix-0-0 libzmq5 libzvbi-common
libzvbi0 libzxing2 locales lsb-release lsof man-db media-types mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers mutter-common nautilus-extension-gnome-terminal ntfs-3g ocl-icd-libopencl1 parted pipewire pipewire-alsa pipewire-audio pipewire-bin pipewire-pulse pkexec
pocketsphinx-en-us poppler-data python3 python3-distro python3-gi python3-minimal python3.11 python3.11-minimal rtkit sgml-data sound-theme-freedesktop timgm6mb-soundfont udisks2 upower usbmuxd va-driver-all vdpau-driver-all wireplumber x11-xserver-utils xdg-dbus-proxy
xdg-desktop-portal xdg-desktop-portal-gtk xfonts-encodings xfonts-utils yelp yelp-xsl
Suggested packages:
aspell-doc spellutils cpp-doc gcc-13-locales cpp-13-doc wordlist tor docbook docbook-dsssl docbook-xsl docbook-defguide fonts-noto fonts-freefont-otf | fonts-freefont-ttf fonts-texgyre usbguard gnome-shell-extension-prefs | gnome-shell-extension-manager parcimonie
xloadimage scdaemon groff frei0r-plugins gvfs-backends hunspell openoffice.org-hunspell | openoffice.org-core mdadm libbluray-bdj libcanberra-pulse libdirectfb-extra libdv-bin oss-compat libdvdcss2 libenchant-2-voikko libfftw3-bin libfftw3-dev gpm libvisual-0.4-plugins
gstreamer1.0-tools libheif-plugin-ffmpegdec libheif-plugin-jpegdec libheif-plugin-jpegenc libheif-plugin-j2kdec libheif-plugin-j2kenc libheif-plugin-rav1e libheif-plugin-svtenc libusbmuxd-tools jackd2 liblrdf0-dev inkscape nvme-cli libportaudio2 opus-tools libparted-dev
libparted-i18n pulseaudio raptor2-utils libraw1394-doc xdg-utils lm-sensors serdi sndiod sordi speex libwacom-bin gstreamer1.0-alsa libwildmidi-config apparmor www-browser opencl-icd parted-doc pulseaudio-utils poppler-utils fonts-japanese-mincho | fonts-ipafont-mincho
fonts-japanese-gothic | fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-nanum python3-doc python3-tk python3-venv python3.11-venv python3.11-doc binfmt-support perlsgml w3-recs opensp libxml2-utils fluid-soundfont-gm btrfs-progs f2fs-tools nilfs-tools
reiserfsprogs udftools udisks2-btrfs udisks2-lvm2 xfsprogs libspa-0.2-libcamera wireplumber-doc nickle cairo-5c xorg-docs-core accountsservice evince xdg-desktop-portal-gnome
Recommended packages:
gnupg
The following NEW packages will be installed:
......
Processing triggers for dictionaries-common (1.29.7) ...
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
aspell-autobuildhash: processing: en [en-common].
aspell-autobuildhash: processing: en [en-variant_0].
aspell-autobuildhash: processing: en [en-variant_1].
aspell-autobuildhash: processing: en [en-variant_2].
aspell-autobuildhash: processing: en [en-w_accents-only].
aspell-autobuildhash: processing: en [en-wo_accents-only].
aspell-autobuildhash: processing: en [en_AU-variant_0].
aspell-autobuildhash: processing: en [en_AU-variant_1].
aspell-autobuildhash: processing: en [en_AU-w_accents-only].
aspell-autobuildhash: processing: en [en_AU-wo_accents-only].
aspell-autobuildhash: processing: en [en_CA-variant_0].
aspell-autobuildhash: processing: en [en_CA-variant_1].
aspell-autobuildhash: processing: en [en_CA-w_accents-only].
aspell-autobuildhash: processing: en [en_CA-wo_accents-only].
aspell-autobuildhash: processing: en [en_GB-ise-w_accents-only].
aspell-autobuildhash: processing: en [en_GB-ise-wo_accents-only].
aspell-autobuildhash: processing: en [en_GB-ize-w_accents-only].
aspell-autobuildhash: processing: en [en_GB-ize-wo_accents-only].
aspell-autobuildhash: processing: en [en_GB-variant_0].
aspell-autobuildhash: processing: en [en_GB-variant_1].
aspell-autobuildhash: processing: en [en_US-w_accents-only].
aspell-autobuildhash: processing: en [en_US-wo_accents-only].
Processing triggers for libc-bin (2.37-13) ...
Processing triggers for sgml-base (1.31) ...
root@lvision-MS-7C60:/#

3.5 Configure Kernel

The MOST important step:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
root@lvision-MS-7C60:/# dpkg-reconfigure linux-image-6.6.5-starfive
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_CA:en",
LC_ALL = (unset),
LC_NUMERIC = "en_CA.UTF-8",
LC_TIME = "en_CA.UTF-8",
LC_MEASUREMENT = "en_CA.UTF-8",
LC_TELEPHONE = "en_CA.UTF-8",
LC_IDENTIFICATION = "en_CA.UTF-8",
LC_PAPER = "en_CA.UTF-8",
LC_MONETARY = "en_CA.UTF-8",
LC_NAME = "en_CA.UTF-8",
LC_ADDRESS = "en_CA.UTF-8",
LANG = "en_CA.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
update-initramfs: Generating /boot/initrd.img-6.6.5-starfive
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125b-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125a-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8107e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168fp-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168h-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168g-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168g-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8106e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8106e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8411-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8411-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8402-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/iwlwifi-100-5.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-1000-5.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-135-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-105-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-2030-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-2000-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-5150-2.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-5000-5.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-6000g2b-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-6000g2a-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-6050-5.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-6000-6.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-7265D-29.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-7265-17.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-3168-29.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-3160-17.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-7260-17.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-8265-36.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-8000C-36.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-9260-th-b0-jf-b0-46.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-9000-pu-b0-jf-b0-46.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-cc-a0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-QuZ-a0-jf-b0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-QuZ-a0-hr-b0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-Qu-b0-jf-b0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-Qu-c0-hr-b0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-Qu-b0-hr-b0-77.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-b0-mr-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-b0-gf4-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-b0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-b0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-a0-mr-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-a0-gf4-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-a0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ma-a0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-ty-a0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-so-a0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-so-a0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-so-a0-jf-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-gl-c0-fm-c0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-gl-b0-fm-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-fm4-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-fm-c0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-fm-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-gf4-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-bz-a0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-wh-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-gf4-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-gf-a0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-hr-b0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-fm-c0-83.ucode for built-in driver iwlwifi
W: Possible missing firmware /lib/firmware/iwlwifi-sc-a0-fm-b0-83.ucode for built-in driver iwlwifi
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/cat'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/cpio'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/dd'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/dmesg'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/false'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/gunzip'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/kill'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/ln'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/ls'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/mkdir'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/mkfifo'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/mknod'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/mount'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/mv'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/nuke'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/readlink'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/resume'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/sh'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/sleep'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/sync'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/true'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/umount'
cp: not replacing '/var/tmp/mkinitramfs_VdCKqO/bin/uname'
P: Checking for EXTLINUX directory... not found.
P: Creating EXTLINUX directory... done: /boot/extlinux
cat: /proc/cmdline: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_CA:en",
LC_ALL = (unset),
LC_PAPER = "en_CA.UTF-8",
LC_NUMERIC = "en_CA.UTF-8",
LC_IDENTIFICATION = "en_CA.UTF-8",
LC_MEASUREMENT = "en_CA.UTF-8",
LC_NAME = "en_CA.UTF-8",
LC_TELEPHONE = "en_CA.UTF-8",
LC_ADDRESS = "en_CA.UTF-8",
LC_MONETARY = "en_CA.UTF-8",
LC_TIME = "en_CA.UTF-8",
LANG = "en_CA.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_CA:en",
LC_ALL = (unset),
LC_PAPER = "en_CA.UTF-8",
LC_NUMERIC = "en_CA.UTF-8",
LC_IDENTIFICATION = "en_CA.UTF-8",
LC_MEASUREMENT = "en_CA.UTF-8",
LC_NAME = "en_CA.UTF-8",
LC_TELEPHONE = "en_CA.UTF-8",
LC_ADDRESS = "en_CA.UTF-8",
LC_MONETARY = "en_CA.UTF-8",
LC_TIME = "en_CA.UTF-8",
LANG = "en_CA.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
P: Writing config for vmlinuz-6.6.5-starfive...
P: Updating /boot/extlinux/extlinux.conf...
root@lvision-MS-7C60:/#

3.6 Configure Network

Follow Building StarFive Debian Image.

3.7 Configure User

Follow Building StarFive Debian Image.

3.8 Configure GPU

A variety of errors. So, ignore this step!!! Use the default Mesa coming with Debian 12.3

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
root@lvision-MS-7C60:/# cd /opt/debs
dpkg -i *.deb
dpkg: warning: downgrading libegl-mesa0:riscv64 from 23.2.1-1 to 22.3.5-1.1
(Reading database ... 41731 files and directories currently installed.)
Preparing to unpack libegl-mesa0_22.3.5-1.1_riscv64.deb ...
Unpacking libegl-mesa0:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
Selecting previously unselected package libegl1-mesa:riscv64.
Preparing to unpack libegl1-mesa_22.3.5-1.1_riscv64.deb ...
Unpacking libegl1-mesa:riscv64 (22.3.5-1.1) ...
Selecting previously unselected package libgbm-dev:riscv64.
Preparing to unpack libgbm-dev_22.3.5-1.1_riscv64.deb ...
Unpacking libgbm-dev:riscv64 (22.3.5-1.1) ...
dpkg: warning: downgrading libgbm1:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack libgbm1_22.3.5-1.1_riscv64.deb ...
Unpacking libgbm1:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
dpkg: warning: downgrading libgl1-mesa-dri:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack libgl1-mesa-dri_22.3.5-1.1_riscv64.deb ...
Unpacking libgl1-mesa-dri:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
Selecting previously unselected package libgl1-mesa-glx:riscv64.
Preparing to unpack libgl1-mesa-glx_22.3.5-1.1_riscv64.deb ...
Unpacking libgl1-mesa-glx:riscv64 (22.3.5-1.1) ...
dpkg: warning: downgrading libglapi-mesa:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack libglapi-mesa_22.3.5-1.1_riscv64.deb ...
Unpacking libglapi-mesa:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
Selecting previously unselected package libgles2-mesa:riscv64.
Preparing to unpack libgles2-mesa_22.3.5-1.1_riscv64.deb ...
Unpacking libgles2-mesa:riscv64 (22.3.5-1.1) ...
dpkg: warning: downgrading libglx-mesa0:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack libglx-mesa0_22.3.5-1.1_riscv64.deb ...
Unpacking libglx-mesa0:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
Selecting previously unselected package libosmesa6:riscv64.
Preparing to unpack libosmesa6_22.3.5-1.1_riscv64.deb ...
Unpacking libosmesa6:riscv64 (22.3.5-1.1) ...
Selecting previously unselected package libwayland-egl1-mesa:riscv64.
Preparing to unpack libwayland-egl1-mesa_22.3.5-1.1_riscv64.deb ...
Unpacking libwayland-egl1-mesa:riscv64 (22.3.5-1.1) ...
dpkg: warning: downgrading mesa-va-drivers:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack mesa-va-drivers_22.3.5-1.1_riscv64.deb ...
Unpacking mesa-va-drivers:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
dpkg: warning: downgrading mesa-vdpau-drivers:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack mesa-vdpau-drivers_22.3.5-1.1_riscv64.deb ...
Unpacking mesa-vdpau-drivers:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
dpkg: warning: downgrading mesa-vulkan-drivers:riscv64 from 23.2.1-1 to 22.3.5-1.1
Preparing to unpack mesa-vulkan-drivers_22.3.5-1.1_riscv64.deb ...
Unpacking mesa-vulkan-drivers:riscv64 (22.3.5-1.1) over (23.2.1-1) ...
Setting up libegl1-mesa:riscv64 (22.3.5-1.1) ...
Setting up libgbm1:riscv64 (22.3.5-1.1) ...
dpkg: dependency problems prevent configuration of libgl1-mesa-dri:riscv64:
libgl1-mesa-dri:riscv64 depends on libllvm15; however:
Package libllvm15 is not installed.

dpkg: error processing package libgl1-mesa-dri:riscv64 (--install):
dependency problems - leaving unconfigured
Setting up libglapi-mesa:riscv64 (22.3.5-1.1) ...
Setting up libgles2-mesa:riscv64 (22.3.5-1.1) ...
dpkg: dependency problems prevent configuration of libglx-mesa0:riscv64:
libglx-mesa0:riscv64 depends on libgl1-mesa-dri; however:
Package libgl1-mesa-dri:riscv64 is not configured yet.

dpkg: error processing package libglx-mesa0:riscv64 (--install):
dependency problems - leaving unconfigured
Setting up libosmesa6:riscv64 (22.3.5-1.1) ...
Setting up libwayland-egl1-mesa:riscv64 (22.3.5-1.1) ...
dpkg: dependency problems prevent configuration of mesa-va-drivers:riscv64:
mesa-va-drivers:riscv64 depends on libllvm15; however:
Package libllvm15 is not installed.

dpkg: error processing package mesa-va-drivers:riscv64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of mesa-vdpau-drivers:riscv64:
mesa-vdpau-drivers:riscv64 depends on libllvm15; however:
Package libllvm15 is not installed.

dpkg: error processing package mesa-vdpau-drivers:riscv64 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of mesa-vulkan-drivers:riscv64:
mesa-vulkan-drivers:riscv64 depends on libllvm15; however:
Package libllvm15 is not installed.

dpkg: error processing package mesa-vulkan-drivers:riscv64 (--install):
dependency problems - leaving unconfigured
Setting up libegl-mesa0:riscv64 (22.3.5-1.1) ...
Setting up libgbm-dev:riscv64 (22.3.5-1.1) ...
dpkg: dependency problems prevent configuration of libgl1-mesa-glx:riscv64:
libgl1-mesa-glx:riscv64 depends on libglx-mesa0; however:
Package libglx-mesa0:riscv64 is not configured yet.

dpkg: error processing package libgl1-mesa-glx:riscv64 (--install):
dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.37-13) ...
Errors were encountered while processing:
libgl1-mesa-dri:riscv64
libglx-mesa0:riscv64
mesa-va-drivers:riscv64
mesa-vdpau-drivers:riscv64
mesa-vulkan-drivers:riscv64
libgl1-mesa-glx:riscv64
root@lvision-MS-7C60:/opt/debs#

3.9 Configure Initramfs

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
root@lvision-MS-7C60:/# mkdir -p /opt/initramfs-setup
cd /opt/initramfs-setup
cp /boot/initrd.img-6.6.5-starfive /opt/initramfs-setup
zstd -d initrd.img-6.6.5-starfive -o initrd
mkdir rootfs
cd rootfs
cpio -id < ../initrd
mkdir -p lib/firmware
mount -t tmpfs none lib/firmware
cp /lib/firmware/rgx.fw.* lib/firmware
cp /lib/firmware/rgx.sh.* lib/firmware
sync
find . | cpio -H newc -o | zstd -19 --ultra -o initrd.img-6.6.5-starfive
cp initrd.img-6.6.5-starfive /boot/initrd.img-6.6.5-starfive
umount /opt/initramfs-setup/rootfs/lib/firmware
rm -rf /opt/initramfs-setup
initrd.img-6.6.5-starfive: 12559872 bytes
24531 blocks
Read: 0 B ==> 0%25516 blocks
/*stdin*\ : 40.14% ( 12.5 MiB => 5.00 MiB, initrd.img-6.6.5-starfive)
root@lvision-MS-7C60:/opt/initramfs-setup/rootfs# cd /etc/kernel/postinst.d
rm -rf zz-u-boot-menu
rm -rf zz-initramfs-mod
root@lvision-MS-7C60:/etc/kernel/postinst.d# cat << EOF >> zz-u-boot-menu
#!/bin/sh
set -e
#Exit if extlinux was removed (!= purged)
if [ -x /usr/sbin/u-boot-update ]
then
#Update extlinux configuration
u-boot-update
fi
sed -i '/append/i \\\tfdtdir /dtbs' /boot/extlinux/extlinux.conf
EOF
root@lvision-MS-7C60:/etc/kernel/postinst.d# cat << EOF >> zz-initramfs-mod
#!/bin/sh
set -e
VERSION="\$1"
INITRD="/boot/initrd.img-\$VERSION"
echo "Copying rgx firmware to initrd..."
TEMPDIR=\$(mktemp -d)
mkdir "\$TEMPDIR/initrd"
cd "\$TEMPDIR/initrd"
zstd -d --stdout "\$INITRD" | cpio -id
if [ ! -d "./lib/firmware" ]; then
echo "Creating lib/firmware folder in initrd..."
mkdir -p "./lib/firmware"
fi
#Copy firmware files to lib/firmware
cp /lib/firmware/rgx.* ./lib/firmware/
#Recreate initrd image
find . | cpio -H newc -o | zstd -19 --ultra > "\$INITRD.tmp"
mv "\$INITRD.tmp" "\$INITRD"
cd -
rm -rf "\$TEMPDIR"
echo "Done."
EOF
root@lvision-MS-7C60:/etc/kernel/postinst.d# chmod +x zz-initramfs-mod
chmod +x zz-u-boot-menu
cd /etc/kernel/postrm.d
rm -rf zz-u-boot-menu
root@lvision-MS-7C60:/etc/kernel/postrm.d# cat << EOF >> zz-u-boot-menu
#!/bin/sh
set -e
#Exit if extlinux was removed (!= purged)
if [ -x /usr/sbin/u-boot-update ]
then
#Update extlinux configuration
u-boot-update
fi
sed -i '/append/i \\\tfdtdir /dtbs' /boot/extlinux/extlinux.conf
EOF
root@lvision-MS-7C60:/etc/kernel/postrm.d# chmod +x zz-u-boot-menu
root@lvision-MS-7C60:/etc/kernel/postrm.d#

3.10 Configure VPU

Follow Building StarFive Debian Image.

3.11 Configure Audio Server

Follow Building StarFive Debian Image.

3.12 Configure SSH Keygen

Follow Building StarFive Debian Image.

3.13 Mask Hibernate

1
2
3
4
5
6
7
8
9
10
root@lvision-MS-7C60:~# systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
⚠️ /proc/ is not mounted. This is not a supported mode of operation. Please fix
your invocation environment to mount /proc/ and /sys/ properly. Proceeding anyway.
Your mileage may vary.
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
root@lvision-MS-7C60:/etc/init.d# cd ~
root@lvision-MS-7C60:~#

3.14 Configure Blacklist Module

Follow Building StarFive Debian Image.

3.15 Install Applications

I didn't follow Building StarFive Debian Image, but use apt install instead.

3.16 Hold Custom Packages

Ignore.

3.17 Clean Up

Follow Building StarFive Debian Image.

4. Build Image

4.1 Build SD Image

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
➜  create_sd_image mkdir boot rootfs
sudo mkfs.vfat /dev/loop19p3
sudo mkfs.ext4 -m 0 -L root /dev/loop19p4
sudo mount /dev/loop19p3 $VF2_WORK_DIR/create_sd_image/boot
sudo mount /dev/loop19p4 $VF2_WORK_DIR/create_sd_image/rootfs
wget https://github.com/starfive-tech/VisionFive2/releases/download/JH7110_VF2_515_v3.9.3/u-boot-spl.bin.normal.out ./
wget https://github.com/starfive-tech/VisionFive2/releases/download/JH7110_VF2_515_v3.9.3/visionfive2_fw_payload.img ./
sudo dd if=u-boot-spl.bin.normal.out of=/dev/loop19p1 bs=4096
sudo dd if=visionfive2_fw_payload.img of=/dev/loop19p2 bs=4096
sudo cp -a $VF2_WORK_DIR/riscv-chroot-snapshots/* $VF2_WORK_DIR/create_sd_image/rootfs
sudo mv $VF2_WORK_DIR/create_sd_image/rootfs/boot/* $VF2_WORK_DIR/create_sd_image/boot
sudo mkdir -p $VF2_WORK_DIR/create_sd_image/boot/dtbs
sudo cp -r $VF2_WORK_DIR/create_sd_image/rootfs/usr/lib/linux-image-6.6.5*/* $VF2_WORK_DIR/create_sd_image/boot/dtbs
sync
mkfs.fat 4.2 (2021-01-31)
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 996091 4k blocks and 249488 inodes
Filesystem UUID: 6e8ce8f8-5380-4c13-b4f4-2b43eb4a68a0
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

--2023-12-09 14:44:48-- https://github.com/starfive-tech/VisionFive2/releases/download/JH7110_VF2_515_v3.9.3/u-boot-spl.bin.normal.out
Resolving github.com (github.com)... 140.82.113.4
Connecting to github.com (github.com)|140.82.113.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/575344135/af366bc5-d71d-4816-8b7a-ddaf8b1d64c3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231209T224448Z&X-Amz-Expires=300&X-Amz-Signature=fe39604eea2f133199e8b67f675c3d1c406125ae71b2f831e3006dac6b45ce6e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=575344135&response-content-disposition=attachment%3B%20filename%3Du-boot-spl.bin.normal.out&response-content-type=application%2Foctet-stream [following]
--2023-12-09 14:44:48-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/575344135/af366bc5-d71d-4816-8b7a-ddaf8b1d64c3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231209T224448Z&X-Amz-Expires=300&X-Amz-Signature=fe39604eea2f133199e8b67f675c3d1c406125ae71b2f831e3006dac6b45ce6e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=575344135&response-content-disposition=attachment%3B%20filename%3Du-boot-spl.bin.normal.out&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 147336 (144K) [application/octet-stream]
Saving to: ‘u-boot-spl.bin.normal.out’

u-boot-spl.bin.normal.out 100%[======================================================================================================================================================================>] 143.88K --.-KB/s in 0.03s

2023-12-09 14:44:48 (4.04 MB/s) - ‘u-boot-spl.bin.normal.out’ saved [147336/147336]

--2023-12-09 14:44:48-- http://./
Resolving . (.)... failed: Name or service not known.
wget: unable to resolve host address ‘.’
FINISHED --2023-12-09 14:44:48--
Total wall clock time: 0.6s
Downloaded: 1 files, 144K in 0.03s (4.04 MB/s)
--2023-12-09 14:44:48-- https://github.com/starfive-tech/VisionFive2/releases/download/JH7110_VF2_515_v3.9.3/visionfive2_fw_payload.img
Resolving github.com (github.com)... 140.82.113.4
Connecting to github.com (github.com)|140.82.113.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/575344135/889dfed1-a205-4455-9b23-1632d8c95e08?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231209T224448Z&X-Amz-Expires=300&X-Amz-Signature=5c3709ad854710aaff67eb4180b4e83208f30a73865b7e5710818d3e9235eb3f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=575344135&response-content-disposition=attachment%3B%20filename%3Dvisionfive2_fw_payload.img&response-content-type=application%2Foctet-stream [following]
--2023-12-09 14:44:49-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/575344135/889dfed1-a205-4455-9b23-1632d8c95e08?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231209T224448Z&X-Amz-Expires=300&X-Amz-Signature=5c3709ad854710aaff67eb4180b4e83208f30a73865b7e5710818d3e9235eb3f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=575344135&response-content-disposition=attachment%3B%20filename%3Dvisionfive2_fw_payload.img&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.108.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3013813 (2.9M) [application/octet-stream]
Saving to: ‘visionfive2_fw_payload.img’

visionfive2_fw_payload.img 100%[======================================================================================================================================================================>] 2.87M --.-KB/s in 0.09s

2023-12-09 14:44:49 (31.1 MB/s) - ‘visionfive2_fw_payload.img’ saved [3013813/3013813]

--2023-12-09 14:44:49-- http://./
Resolving . (.)... failed: Name or service not known.
wget: unable to resolve host address ‘.’
FINISHED --2023-12-09 14:44:49--
Total wall clock time: 0.7s
Downloaded: 1 files, 2.9M in 0.09s (31.1 MB/s)
35+1 records in
35+1 records out
147336 bytes (147 kB, 144 KiB) copied, 0.00141836 s, 104 MB/s
735+1 records in
735+1 records out
3013813 bytes (3.0 MB, 2.9 MiB) copied, 0.0123574 s, 244 MB/s
➜ create_sd_image ll
total 2.1G
drwxr-xr-x 4 root root 16K Dec 31 1969 boot
drwxr-xr-x 18 root root 4.0K Dec 9 14:44 rootfs
-rw-r--r-- 1 root root 4.0G Dec 9 14:44 starfive-jh7110-SD-minimal-desktop.img
-rw-rw-r-- 1 lvision lvision 144K Nov 29 06:40 u-boot-spl.bin.normal.out
-rw-rw-r-- 1 lvision lvision 2.9M Nov 29 06:38 visionfive2_fw_payload.img
➜ create_sd_image

Now, finger crossed. Hopefully, starfive-jh7110-SD-minimal-desktop.img is working properly.

4.2 Build eMMC Image

Ingore

4.3 Build NVME Image

Ignore

5. Demonstration

After flashing this starfive-jh7110-SD-minimal-desktop.img, let's try out our customized Debian 12.3.

6. Other Useful Online Info

SPL New VisionFive2 Debian User Guide Quick Start Guide Application Center Software Technical Reference Manual

My FIRST FPGA board went bricked. So, today, I'll have to try another one: iCEstick. This is really a good journey in my opinion.

1. Introduction

1.1 lsusb

1
2
3
......
Bus 011 Device 002: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
......

1.2 Why TWO Devices?

1
2
3
4
➜  ~ ll /dev/ttyUSB*                                                         
crw-rw----+ 1 root plugdev 188, 0 Dec 7 15:17 /dev/ttyUSB0
crw-rw----+ 1 root plugdev 188, 1 Dec 7 15:17 /dev/ttyUSB1
➜ ~

1.3 Spec

1.4 Github Source Code

2. Flash the Firmware

2.1 Preparation

2.1.1 Ensure Python and APIO Are Both Installed

Python apio version

2.1.2 APIO Install ALL and lsftdi

APIO Install ALL and lsftdi

2.2 APIO Examples for iCEstick

2.2.1 List ALL APIO Examples

List ALL APIO Examples

2.2.2 Install APIO Example LEDs

Install APIO Example LEDs

2.3 Find Corresponding Board's Name

2.3.1 List ALL APIO Supported Boards

List ALL APIO Supported Boards

2.3.2 Find the Name of Your FPGA Board

Find the Name of Your FPGA Board

2.3 Init, Verify, Sim, Build and Upload

2.3.1 Init and Verify

Init and Verify

2.3.2 Simulation with GTKWave

Simulation with [GTKWave]

2.3.3 Build

Build

2.3.4 Upload

Upload

3. Demonstration

My previous blog MaixDuino 1 briefly introduced the fundamental functionalities of MaixDuino. Today, two more functionalities are to be investigated.

1. Binocular

Sipeed provides its official sipeed_gc0328_binocular.ino.

1.1 Verify/Compile

1
Sketch uses 321804 bytes (3%) of program storage space. Maximum is 8388608 bytes.

1.2 Upload Using Programmer (k-flash)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Sketch uses 321804 bytes (3%) of program storage space. Maximum is 8388608 bytes.
[INFO] ANSI colors not used
[INFO] COM Port Selected Manually: /dev/ttyUSB0
[INFO] Default baudrate is 115200 , later it may be changed to the value you set.
[INFO] Trying to Enter the ISP Mode...
*
[INFO] Greeting Message Detected, Start Downloading ISP

Downloading ISP: |---------------------------------------------| 1.5%

Downloading ISP: |=--------------------------------------------| 3.1%

Downloading ISP: |==-------------------------------------------| 4.6%

Downloading ISP: |==-------------------------------------------| 6.2%

Downloading ISP: |===------------------------------------------| 7.7%

Downloading ISP: |====-----------------------------------------| 9.2%

Downloading ISP: |====-----------------------------------------| 10.8%

Downloading ISP: |=====----------------------------------------| 12.3%

Downloading ISP: |======---------------------------------------| 13.8%

Downloading ISP: |======---------------------------------------| 15.4%

Downloading ISP: |=======--------------------------------------| 16.9% 10kiB/s

Downloading ISP: |========-------------------------------------| 18.5% 10kiB/s

Downloading ISP: |=========------------------------------------| 20.0% 10kiB/s

Downloading ISP: |=========------------------------------------| 21.5% 10kiB/s

Downloading ISP: |==========-----------------------------------| 23.1% 10kiB/s

Downloading ISP: |===========----------------------------------| 24.6% 10kiB/s

Downloading ISP: |===========----------------------------------| 26.2% 10kiB/s

Downloading ISP: |============---------------------------------| 27.7% 10kiB/s

Downloading ISP: |=============--------------------------------| 29.2% 10kiB/s

Downloading ISP: |=============--------------------------------| 30.8% 10kiB/s

Downloading ISP: |==============-------------------------------| 32.3% 10kiB/s

Downloading ISP: |===============------------------------------| 33.8% 10kiB/s

Downloading ISP: |===============------------------------------| 35.4% 10kiB/s

Downloading ISP: |================-----------------------------| 36.9% 10kiB/s

Downloading ISP: |=================----------------------------| 38.5% 10kiB/s

Downloading ISP: |==================---------------------------| 40.0% 10kiB/s

Downloading ISP: |==================---------------------------| 41.5% 10kiB/s

Downloading ISP: |===================--------------------------| 43.1% 10kiB/s

Downloading ISP: |====================-------------------------| 44.6% 10kiB/s

Downloading ISP: |====================-------------------------| 46.2% 10kiB/s

Downloading ISP: |=====================------------------------| 47.7% 10kiB/s

Downloading ISP: |======================-----------------------| 49.2% 10kiB/s

Downloading ISP: |======================-----------------------| 50.8% 10kiB/s

Downloading ISP: |=======================----------------------| 52.3% 10kiB/s

Downloading ISP: |========================---------------------| 53.8% 10kiB/s

Downloading ISP: |========================---------------------| 55.4% 10kiB/s

Downloading ISP: |=========================--------------------| 56.9% 10kiB/s

Downloading ISP: |==========================-------------------| 58.5% 10kiB/s

Downloading ISP: |===========================------------------| 60.0% 10kiB/s

Downloading ISP: |===========================------------------| 61.5% 10kiB/s

Downloading ISP: |============================-----------------| 63.1% 10kiB/s

Downloading ISP: |=============================----------------| 64.6% 10kiB/s

Downloading ISP: |=============================----------------| 66.2% 10kiB/s

Downloading ISP: |==============================---------------| 67.7% 10kiB/s

Downloading ISP: |===============================--------------| 69.2% 10kiB/s

Downloading ISP: |===============================--------------| 70.8% 10kiB/s

Downloading ISP: |================================-------------| 72.3% 10kiB/s

Downloading ISP: |=================================------------| 73.8% 10kiB/s

Downloading ISP: |=================================------------| 75.4% 10kiB/s

Downloading ISP: |==================================-----------| 76.9% 10kiB/s

Downloading ISP: |===================================----------| 78.5% 10kiB/s

Downloading ISP: |====================================---------| 80.0% 10kiB/s

Downloading ISP: |====================================---------| 81.5% 10kiB/s

Downloading ISP: |=====================================--------| 83.1% 10kiB/s

Downloading ISP: |======================================-------| 84.6% 10kiB/s

Downloading ISP: |======================================-------| 86.2% 10kiB/s

Downloading ISP: |=======================================------| 87.7% 10kiB/s

Downloading ISP: |========================================-----| 89.2% 10kiB/s

Downloading ISP: |========================================-----| 90.8% 10kiB/s

Downloading ISP: |=========================================----| 92.3% 10kiB/s

Downloading ISP: |==========================================---| 93.8% 10kiB/s

Downloading ISP: |==========================================---| 95.4% 10kiB/s

Downloading ISP: |===========================================--| 96.9% 10kiB/s

Downloading ISP: |============================================-| 98.5% 10kiB/s

Downloading ISP: |=============================================| 100.0% 10kiB/s
[INFO] Booting From 0x80000000
[INFO] Wait For 0.1 second for ISP to Boot
[INFO] Boot to Flashmode Successfully
[INFO] Selected Baudrate: 500000
[INFO] Baudrate changed, greeting with ISP again ...
[INFO] Boot to Flashmode Successfully
[INFO] Selected Flash: On-Board
[INFO] Initialization flash Successfully

Programming BIN: |===============------------------------------| 33.3% 29kiB/s

Programming BIN: |==============================---------------| 66.7% 29kiB/s

Programming BIN: |=============================================| 100.0% 28kiB/s
[INFO] Rebooting...

1.3 Demonstration

2. Wifi

0%