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

Long time no see everybody. Today let's talk about MaixDuino board.

1. Introduction

1.1 lsusb

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

1.2 Wiki

Detailed specification about MaixDuino board can be found on MaixDuino Wiki.

1.3 Github Source Code

Typically, there's no need to rebuild your project from the ground up. Instead, simply enter the Maixduino package URL in the Additional Boards Manager URLs section.

However, when needed, Maixduino Github repository offers open-source resource that you can utilize as a foundation for further development.

2. Flash

2.1 Environment Configuration

MaixDuino Arduino Output

2.2 Flash a Customized Sketch

  • The W cse475 course from the University of Washington provides comprehensive course content, serving as an excellent tutorial for those interested in following along.

  • Highlight: MUST add the following two lines and use Burn Baudo Rate "500 kbps"

1
2
bitm.menu.burn_baudrate.500000=500 kbps
bitm.menu.burn_baudrate.500000.build.burn_baudrate=500000

2.2.1.1 Verify/Compile

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
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/wiring_analog.c: In function 'analogRead':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/wiring_analog.c:104:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vAddNewTaskToCurrentReadyList':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:1111:26: warning: assignment to 'UBaseType_t' {aka 'long unsigned int'} from 'UBaseType_t *' {aka 'long unsigned int *'} makes integer from pointer without a cast [-Wint-conversion]
pxNewTCB->uxTCBNumber = uxTaskNumber;
^
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'uxTaskGetSystemState':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2483:20: warning: comparison between pointer and integer
if( uxArraySize >= uxCurrentNumberOfTasks )
^~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2490:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &( pxReadyTasksLists[ uxQueue ] ), eReady );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[5]' {aka 'struct xLIST (*)[5]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2503:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xTasksWaitingTermination, eDeleted );
^~~~~~~~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[2]' {aka 'struct xLIST (*)[2]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2511:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xSuspendedTaskList, eSuspended );
^~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[2]' {aka 'struct xLIST (*)[2]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vTaskGetInfo':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:3626:14: warning: comparison of distinct pointer types lacks a cast
if( pxTCB == pxCurrentTCB )
^~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vTaskList':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:4292:15: warning: assignment to 'UBaseType_t' {aka 'volatile long unsigned int'} from 'volatile UBaseType_t *' {aka 'volatile long unsigned int *'} makes integer from pointer without a cast [-Wint-conversion]
uxArraySize = uxCurrentNumberOfTasks;
^
Sketch uses 95791 bytes (1%) of program storage space. Maximum is 8388608 bytes.
  • A lot of warnings but successfully built.

2.2.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
 Sketch uses 95791 bytes (1%) 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: |======================-----------------------| 50.0% 28kiB/s

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

2.2.1.3 Demonstration

Too simple. Ignore...

2.2.2 Basic Graphics

2.2.2.1 Verify/Compile

  • Compilation error:
1
2
3
4
5
6
7
8
9
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp: In member function 'void Adafruit_I2CDevice::end()':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp:52:10: error: 'class TwoWire' has no member named 'end'; did you mean 'read'?
_wire->end();
^~~
read

exit status 1

Compilation error: exit status 1
  • Solution: comment out this line: _wire->end();
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
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/wiring_analog.c: In function 'analogRead':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/wiring_analog.c:104:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vAddNewTaskToCurrentReadyList':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:1111:26: warning: assignment to 'UBaseType_t' {aka 'long unsigned int'} from 'UBaseType_t *' {aka 'long unsigned int *'} makes integer from pointer without a cast [-Wint-conversion]
pxNewTCB->uxTCBNumber = uxTaskNumber;
^
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'uxTaskGetSystemState':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2483:20: warning: comparison between pointer and integer
if( uxArraySize >= uxCurrentNumberOfTasks )
^~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2490:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &( pxReadyTasksLists[ uxQueue ] ), eReady );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[5]' {aka 'struct xLIST (*)[5]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2503:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xTasksWaitingTermination, eDeleted );
^~~~~~~~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[2]' {aka 'struct xLIST (*)[2]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:2511:80: warning: passing argument 2 of 'prvListTasksWithinSingleList' from incompatible pointer type [-Wincompatible-pointer-types]
uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xSuspendedTaskList, eSuspended );
^~~~~~~~~~~~~~~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:505:92: note: expected 'List_t *' {aka 'struct xLIST *'} but argument is of type 'List_t (*)[2]' {aka 'struct xLIST (*)[2]'}
static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION;
~~~~~~~~^~~~~~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vTaskGetInfo':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:3626:14: warning: comparison of distinct pointer types lacks a cast
if( pxTCB == pxCurrentTCB )
^~
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c: In function 'vTaskList':
~/.arduino15/packages/Maixduino/hardware/k210/0.3.11/cores/arduino/kendryte-standalone-sdk/lib/freertos/tasks.c:4292:15: warning: assignment to 'UBaseType_t' {aka 'volatile long unsigned int'} from 'volatile UBaseType_t *' {aka 'volatile long unsigned int *'} makes integer from pointer without a cast [-Wint-conversion]
uxArraySize = uxCurrentNumberOfTasks;
^
Sketch uses 161412 bytes (1%) of program storage space. Maximum is 8388608 bytes.

2.2.2.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 161412 bytes (1%) 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% 28kiB/s

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

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

2.2.2.3 Demonstration

2.2.3 Display Images from the Camera on the LCD

2.2.3.0 Setup

  • Either: Directly open up File->Examples->Sipeed_OV2640->selfie, and in my case, change all occurrences of Sipeed_OV2640 to Sipeed_GC0328.
  • Or: Use official sipeed_gc0328.ino

2.2.3.1 Verify/Compile

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

2.2.3.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 322004 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% 27kiB/s

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

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

2.2.3.3 Demonstration

QuickFeather is a development board adopting QuickLogic's EOS S3 SOC.

1. Introduction

1.1 lsusb

1
2
3
......
Bus 011 Device 016: ID 1d50:6140 OpenMoko, Inc.
......

1.2 Openmoko

So cool. For Openmoko, please refer to:

1.3 Spec

  • All details can be found at QuickLogic's EOS S3 page.
  • In fact, the content on the QuickFeather crowdsupply website is also comprehensive and includes all necessary information.

1.4 Github Source Code

2. Flash the Firmware

2.1 Preparation

Please strictly follow: - the videos on QuickLogic's official website QuickFeather Development Kit - the installation steps on TinyFPGA-Programmer-Application

2.1.1 Highlight 1 - qfprog

In my .bashrc and .zshrc, the following line is added.

1
alias qfprog="python3 /opt/TinyFPGA-Programmer-Application/tinyfpga-programmer-gui.py"

2.1.2 Highlight 2 - tinyfpgaa and tinyfpgab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
➜  ~ pip show tinyfpgab
Name: tinyfpgab
Version: 1.1.0
Summary: Programmer for the TinyFPGA B2 boards (http://tinyfpga.com)
Home-page: https://github.com/tinyfpga/TinyFPGA-B-Series/tree/master/programmer
Author: Luke Valenty
Author-email: lvalenty@gmail.com
License:
Location: ~/.local/lib/python3.10/site-packages
Requires: pyserial
Required-by:
➜ ~ pip show tinyfpgaa
Name: tinyfpgaa
Version: 0.9.0
Summary: A small example package
Home-page: https://github.com/tinyfpga/TinyFPGA-A-Programmer
Author: William D. Jones
Author-email: thor0505@comcast.net
License:
Location: ~/.local/lib/python3.10/site-packages/tinyfpgaa-0.9.0-py3.10.egg
Requires:
Required-by:

2.2 Now Let's Flash

2.2.1 Flash Bootloader

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
➜  qorc-sdk git:(master) ✗ qfprog --port=/dev/ttyACM0 --bl ./qf_apps/quickfeather-initial-binaries/qf_bootloader.bin
CLI mode
ports = ['/dev/ttyACM0 (QuickFeather)'] 1
Using port /dev/ttyACM0 (QuickFeather)
Programming bootloader with ./qf_apps/quickfeather-initial-binaries/qf_bootloader.bin
Erasing designated flash pages
Erase 32.0 KiB ( 0x52 ) at 0x0
Erase 4.0 KiB ( 0x20 ) at 0x8000
Erase 4.0 KiB ( 0x20 ) at 0x9000
Writing binary
Write 40340 bytes
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
Verifying binary
FastREAD 0x0B ( 40340 )
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
Success: read_back == data
Writing metadata
Erasing designated flash pages
Erase 4.0 KiB ( 0x20 ) at 0x1f000
Writing metadata
Write 8 bytes
[X] ]
Verifying metadata
FastREAD 0x0B ( 8 )
[X] ]
Success: read_back == data

2.2.2 Flash BootFPGA

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
➜  qorc-sdk git:(master) ✗ qfprog --port=/dev/ttyACM0 --bootfpga ./qf_apps/quickfeather-initial-binaries/qf_bootfpga.bin
CLI mode
ports = ['/dev/ttyACM0 (QuickFeather)'] 1
Using port /dev/ttyACM0 (QuickFeather)
Programming FPGA image used during programming ./qf_apps/quickfeather-initial-binaries/qf_bootfpga.bin
Erasing designated flash pages
Erase 64.0 KiB ( 0xd8 ) at 0x20000
Erase 4.0 KiB ( 0x20 ) at 0x30000
Erase 4.0 KiB ( 0x20 ) at 0x31000
Erase 4.0 KiB ( 0x20 ) at 0x32000
Writing binary
Write 75960 bytes
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]
Verifying binary
FastREAD 0x0B ( 75960 )
[XXXXXXXXXXXXXXXXXXXXXXXXXXXXTraceback (most recent call last):
File "/opt/TinyFPGA-Programmer-Application/tinyfpga-programmer-gui.py", line 206, in program
fpga.program_bitstream(addr, bitstream, "binary")
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 311, in program_bitstream
if self.program(addr, bitstream, what):
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 237, in program
read_back = self.read(addr, len(data))
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 72, in read
data += self.cmd(0x0b, addr, b'\x00', read_len=read_length)
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 45, in cmd
response = self.ser.read(read_len)
File "~/.local/lib/python3.10/site-packages/serial/serialposix.py", line 595, in read
raise SerialException(
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
Writing metadata
Erasing designated flash pages
Traceback (most recent call last):
File "~/.local/lib/python3.10/site-packages/serial/serialposix.py", line 621, in write
n = os.write(self.fd, d)
OSError: [Errno 5] Input/output error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/TinyFPGA-Programmer-Application/tinyfpga-programmer-gui.py", line 218, in program
fpga.program_bitstream(meta_addr, meta_bitstream, "metadata")
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 311, in program_bitstream
if self.program(addr, bitstream, what):
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 229, in program
self.quick_erase(addr, len(data))
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 179, in quick_erase
self._erase(start_addr, 0x1000)
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 108, in _erase
self.write_enable()
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 86, in write_enable
self.cmd(0x06)
File "/opt/TinyFPGA-Programmer-Application/q-series/python/tinyfpgaq.py", line 43, in cmd
self.ser.write(bytearray(cmd_write_string))
File "~/.local/lib/python3.10/site-packages/serial/serialposix.py", line 655, in write
raise SerialException('write failed: {}'.format(e))
serial.serialutil.SerialException: write failed: [Errno 5] Input/output error

2.2.3 Bricked

Unfortunately, my QuickFeather is bricked. Whenever reset or even entering user mode, the LED on QuickFeather turns to red in the end.

Raspberry Pi Pico is a MCU, which adopts Raspberry Pi's chip RP2040.

1. Introduction

1.1 lsusb

1
2
3
......
Bus 011 Device 021: ID 2e8a:000a Raspberry Pi Pico
......

1.2 Spec

1.3 Github Source Code

2. Flash the Firmware

2.1 Micropython

2.1.1 How to?

The official way to flash a Raspberry Pi Pico is just to drag-and-drop the Micropython UF2 file onto it. Please follow:

2.1.2 Demonstration

By connecting from my Ubuntu desktop using command

1
➜  ~ minicom -b 115200 -o -D /dev/ttyACM0

we can easily connect to Raspberry Pi Pico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Welcome to minicom 2.8

OPTIONS: I18n
Port /dev/ttyACM0, 02:38:32

Press CTRL-A Z for help on special keys


>>> import os
>>> os.uname()
(sysname='rp2', nodename='rp2', release='1.21.0', version='v1.21.0 on 2023-10-06 (GNU 13.2.0 MinSizeRel)', machine='Raspberry Pi Pico with RP2040')
>>> import sys
>>> sys.implementation
(name='micropython', version=(1, 21, 0), _machine='Raspberry Pi Pico with RP2040', _mpy=4358)
>>>

2.2 Arduino

2.2.1 Using Arduino IDE

Since Raspberry Pi Pico is an MCU, it is of course able to be connected using the popular Arduino IDE.

I actually strictly follow this blog Programming Raspberry Pi Pico with Arduino IDE.

2.2.2 Flash with BOOTSEL Pressed

In my test, no matter MicroPython Download RPI_PICO is dragged-and-dropped, or a customized program is uploaded via Arduino IDE as in the following picture:

Arduino IDE Raspberry Pi Pico

I ALWAYS hold the BOOTSEL button.

3. More to Talk

3.1 LED Example Demo

3.2 Please Try Out Raspberry Pi Pico W and Pico WH Yourself

Recommended tutorials: - Getting started with your Raspberry Pi Pico W

1. Specifications

Details about VisionFive2 can be found on StarFive's official website VisionFive2 Specs.

2. Debian Installation

2.1 Getting Started

2.2 Overview

2.2.1 SSH into VisionFive2 Debian

SSH Into VisionFive2

2.2.2 CPU Info

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
user@starfive:~$ cat /proc/cpuinfo
processor : 0
hart : 1
isa : rv64imafdc
mmu : sv39
isa-ext :
uarch : sifive,u74-mc

processor : 1
hart : 2
isa : rv64imafdc
mmu : sv39
isa-ext :
uarch : sifive,u74-mc

processor : 2
hart : 3
isa : rv64imafdc
mmu : sv39
isa-ext :
uarch : sifive,u74-mc

processor : 3
hart : 4
isa : rv64imafdc
mmu : sv39
isa-ext :
uarch : sifive,u74-mc

2.2.3 Memory Info

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
user@starfive:~$ cat /proc/meminfo
MemTotal: 3967740 kB
MemFree: 3086144 kB
MemAvailable: 3408808 kB
Buffers: 15396 kB
Cached: 319444 kB
SwapCached: 0 kB
Active: 170156 kB
Inactive: 467480 kB
Active(anon): 3264 kB
Inactive(anon): 303136 kB
Active(file): 166892 kB
Inactive(file): 164344 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 302844 kB
Mapped: 178224 kB
Shmem: 3604 kB
KReclaimable: 34932 kB
Slab: 71832 kB
SReclaimable: 34932 kB
SUnreclaim: 36900 kB
KernelStack: 6112 kB
PageTables: 8188 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1983868 kB
Committed_AS: 2616964 kB
VmallocTotal: 67108863 kB
VmallocUsed: 19120 kB
VmallocChunk: 0 kB
Percpu: 528 kB
CmaTotal: 524288 kB
CmaFree: 489424 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
user@starfive:~$

2.2.4 List Block Devices

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
user@starfive:~$ lsblk       
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mtdblock0 31:0 0 256K 0 disk
mtdblock1 31:1 0 64K 0 disk
mtdblock2 31:2 0 3M 0 disk
mtdblock3 31:3 0 1M 0 disk
mmcblk1 179:0 0 119.1G 0 disk
|-mmcblk1p1 179:1 0 2M 0 part
|-mmcblk1p2 179:2 0 4M 0 part
|-mmcblk1p3 179:3 0 100M 0 part
`-mmcblk1p4 179:4 0 3.8G 0 part /
nvme0n1 259:0 0 238.5G 0 disk
|-nvme0n1p1 259:1 0 128M 0 part
|-nvme0n1p2 259:2 0 572M 0 part
`-nvme0n1p3 259:3 0 237.8G 0 part

2.3 Resize

VisionFive2 fdisk

VisionFive2 resize2fs

3. User Guide

So far, we successfully boot into VisionFive2 Debian 202310 Released using the SD card. But how to boot with eMMC or NVME.

I got the solution from my posted issue Boot from eMMC or NVME? Existing Doubts on the official RVspace forum. The solution is just hidden in the file /boot/extlinux/extlinux.conf. Well, to modify this file correspondingly, you need to:

  • mount /boot using sudo mount /dev/sdc3 /mnt
  • take a look at the file /boot/extlinux/extlinux.conf
  • modify this file accordingly
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
➜  extlinux cat extlinux.conf 
## /extlinux/extlinux.conf
##
## IMPORTANT WARNING
##
## The configuration of this file is generated automatically.
## Do not edit this file manually, use: u-boot-update

default l1
menu title U-Boot menu
prompt 0
timeout 50


label l0
menu label Debian GNU/Linux bookworm/sid 5.15.0-starfive
linux /vmlinuz-5.15.0-starfive
initrd /initrd.img-5.15.0-starfive


fdtdir /dtbs
append root=/dev/mmcblk1p4 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0

label l0r
menu label Debian GNU/Linux bookworm/sid 5.15.0-starfive (rescue target)
linux /vmlinuz-5.15.0-starfive
initrd /initrd.img-5.15.0-starfive

fdtdir /dtbs
append root=/dev/mmcblk1p4 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0 single

label l1
menu label Debian GNU/Linux bookworm/sid 5.15.0-starfive
linux /vmlinuz-5.15.0-starfive
initrd /initrd.img-5.15.0-starfive


fdtdir /dtbs
append root=/dev/nvme0n1p4 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0

label l1r
menu label Debian GNU/Linux bookworm/sid 5.15.0-starfive (rescue target)
linux /vmlinuz-5.15.0-starfive
initrd /initrd.img-5.15.0-starfive

fdtdir /dtbs
append root=/dev/nvme0n1p4 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0 single

Now, I'm able to boot from both SD card or NVME, however, there seems to be NO such a thing similar to grub? And I'll have to manually edit the value of default l1 accordingly whenever I want to boot from a different device.

Anyway, I've got to stop here for now. I'll talk about how to build a fresh distro for VisionFive2 from scratch in my next post.

Continue, the Arduino UNO R4.

1. Introduction

1.1 lsusb

1
2
3
......
Bus 011 Device 058: ID 2341:1002 Arduino SA UNO WiFi R4 CMSIS-DAP
......

1.2 Spec

What I purchased is an Arduino UNO R4 WiFi. Detailed specification about it can be found on Arduino UNO R4 Wifi Doc.

1.3 Github Source Code

Typically, there's no need to rebuild your project from the ground up. However, when needed, Arduino UNO R4 Wifi USB Bridge offers open-source resource that you can utilize as a foundation for further development.

2. Demonstrate Arduino Examples

2.1 Environment Configuration

  • Install Arduino Environment When I tried to run the basic example blink, I was asked to install the package renesas_uno@1.0.5, as shown in the Output console of Arduino IDE:

    Arduino UNO R4 Wifi Output

2.2 Flash a Sketch

  • Sketch Verify/Compile
1
2
Sketch uses 51488 bytes (19%) of program storage space. Maximum is 262144 bytes.
Global variables use 6744 bytes (20%) of dynamic memory, leaving 26024 bytes for local variables. Maximum is 32768 bytes.
  • Upload
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sketch uses 51488 bytes (19%) of program storage space. Maximum is 262144 bytes.
Global variables use 6744 bytes (20%) of dynamic memory, leaving 26024 bytes for local variables. Maximum is 32768 bytes.
Erase flash

Done in 0.001 seconds
Write 51496 bytes to flash (13 pages)

[ ] 0% (0/13 pages)
[== ] 7% (1/13 pages)
[==== ] 15% (2/13 pages)
[====== ] 23% (3/13 pages)
[========= ] 30% (4/13 pages)
[=========== ] 38% (5/13 pages)
[============= ] 46% (6/13 pages)
[================ ] 53% (7/13 pages)
[================== ] 61% (8/13 pages)
[==================== ] 69% (9/13 pages)
[======================= ] 76% (10/13 pages)
[========================= ] 84% (11/13 pages)
[=========================== ] 92% (12/13 pages)
[==============================] 100% (13/13 pages)
Done in 3.480 seconds

Now, one LED starts blinking successfully.

3. Arduino UNO R4 WiFi Examples

3.1 Wi-Fi Web Server

First, let me test the example Wi-Fi® Web Server on Arduino official tutorial UNO R4 WiFi Network Examples. The code can be found on Github Arduino WiFiWebServer. And the following is printed in the Output console of Arduino IDE.

1
2
3
4
5
Please upgrade the firmware
Attempting to connect to SSID: TELUSXXXX
SSID: TELUSXXXX
IP Address: 192.168.1.YY
signal strength (RSSI):-52 dBm

3.2 Upgrade Firmware of UNO R4 Wifi

It's confusing that I received the error message Please upgrade the firmware, right after I installed/upgraded renesas_uno@1.0.5 from within Arduino IDE.

In the end, I noticed there are 2 main chips on Arduino UNO R4 WiFi, and renesas's firmware is installed/upgraded, but ESP32's firmware hasn't yet. Therefore, I proceeded with upgrading ESP32's firmware by following Arduino UNO R4 WiFi Upload to ESP32.

Different from 1.1, by shorting the download pin and GND, now we have a different lsusb result:

1
2
3
......
Bus 011 Device 007: ID 303a:1001 Espressif USB JTAG/serial debug unit
......

Again, I was asked to install the esp32 package(s), as shown:

esp32 installation

Click YES and continue the installation:

esp32 packages to upgrade

install esp32 package

install esp32 boards package

3.3 Wi-Fi Web Client

Now, let me test the example Wi-Fi® Web Client on Arduino official tutorial UNO R4 WiFi Network Examples. The code can be found on Github Arduino WiFiWebClient. And a bunch of communication info with www.google.com are printed on the Output console of Arduino IDE.

Arduino Wifi Web Client Upload

Arduino Wifi Web Client Running

4. Arduino UNO R4 WiFi - ChatGPT

Finally, let's extend a bit. Let's finish our demonstration of the day by chatting with OpenAI's ChatGPT on this Arduino UNO R4 WiFi.

My source code is provided at Longer Vision Robot Arduino Examples.

And its demonstration can be seen by this screenshot.

Arduino UNO R4 WiFi ChatGPT

Quickly had LLVM 17.0.3 built from source again. Just follow the official website:

1. Git clone

1
2
$ ➜ git clone https://github.com/llvm/llvm-project.git
$ ➜ cd llvm-project

2. CMake Configure

There is a very serious pitfall here, please refer to LLVM CMake documentation

For LLVM-related variable LLVM_ENABLE_PROJECTS, if you want to build ALL projects by specifying -DLLVM_ENABLE_PROJECTS=all, all the following projects clang;clang-tools-extra;cross-project-tests;libc;libclc;lld;lldb;openmp;polly;pstl are to be built. Particularly, libc is also to be built, which will bring me the following error:

1
2
....../llvm-project/libc/src/string/strcpy.cpp:17:28: error: ‘char*__llvm_libc_18_0_0_git::strcpy(char*, const char*)’ aliased to external symbol ‘strcpy’
17 | LLVM_LIBC_FUNCTION(char*, strcpy,

Therefore, it's better to avoid building libc.

1
2
3
4
5
6
$ ➜ llvm-project git:(main)  cmake -S llvm-project/llvm -B llvm-project/build \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;lld;lldb" \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER=clang \
-DBUILD_SHARED_LIBS=Onhexo

3. Build

1
$ ➜ llvm-project git:(main) cmake --build llvm-project/build -j16

4. Installation

1
$ ➜ llvm-project git:(main) sudo cmake --install llvm-project/build --prefix /usr/local 
0%