Практический опыт работы с одноплатным компьютером StarFive VisionFive 2 на архитектуре RISC-V под управлением Debian 12

Компания StarFive предоставила для тестирования и обзора одноплатный компьютер VisionFive 2 на RISC-V . В распоряжении оказалась модель с двумя портами Gigabit Ethernet и 8 ГБ оперативной памяти. В этом материале представлен опыт работы с образом Debian 12 «bookworm». Стоит отметить, что это не полноценный обзор, поскольку плата на текущем этапе не готова для всесторонней оценки. Она ориентирована на ранних последователей, и существует множество нерешенных проблем. В статье описано, что работает, а что нет, а также сложности, возникшие при установке ОС…

Распаковка VisionFive 2

Плата поставляется в упаковке с надписью «Embrace change, embrace the future».

StarFive VisionFive 2 SBC package

На нижней стороне коробки размещены полезные ссылки и QR-коды. Наиболее важными являются репозиторий на GitHub с исходным кодом и инструкциями по сборке образа (рекомендуется Ubuntu 16.04, 18.04 или 20.04 x86_64), а также раздел форума RVspace, посвященный этой плате , где можно найти руководства по началу работы и отзывы других пользователей.

VisionFive 2 community GitHub

Компоновка платы и компоненты выглядят точно так же, как и при запуске на Kickstarter, за исключением того, что данная плата имеет версию VisionFive 2 V1.3B.

StarFive JH7110 RISC-V SBC

В центре расположен четырехъядерный процессор StarFive JH7110 на архитектуре RISC-V, микросхема оперативной памяти BIWIN BWMZCX32H2A-64G объемом 8 ГБ, мост VL805 PCIe to USB 3.0 (аналогичный используемому в Raspberry Pi 4), два трансивера Gigabit Ethernet MotorComm YT8531C и PMIC AXP15060. Все основные порты выведены на одну сторону: 3.5-мм аудиоразъем, четыре порта USB 3.0, выход HDMI 2.0 и два порта Gigabit Ethernet.

StarFive VisionFive 2 eMMC flash module M.2 socket

На нижней стороне расположен слот для карт MicroSD, который используется для загрузки ОС, разъемы для модуля eMMC и слот M.2 для NVMe SSD.

Установка Debian 12 на VisionFive 2

Образы Debian доступны на сайте StarFive с ссылками на Baidu Drive или Google Drive. Последний на данный момент образ — Image-69, выпущенный в конце декабря.

Несжатый образ не помещался на карту MicroSD объемом 8 ГБ, поэтому использовалась карта на 32 ГБ, процесс записи занял около 45 минут. Вероятно, карта скоро выйдет из строя, и придется приобретать новую партию. Постоянная трата времени на карты памяти, которые служат всего несколько месяцев, — одна из причин, по которой не нравятся платы, загружающиеся только с MicroSD

StarFive VisionFive 2 review

Затем были подключены USB-клавиатура, USB-мышь, кабель Ethernet и блок питания с разъемом USB Type-C. Сначала использовался адаптер 5В/2А, но этого оказалось недостаточно — плата постоянно перезагружалась. Блок питания Raspberry Pi 5В/3А также не справился, поэтому был взят GaN-адаптер на 100 Вт, чтобы исключить проблемы с питанием. Также были добавлены проставки для приподнимания платы, как рекомендуется.

Однако плата не загружалась, и в анонсе Image 69 на форуме было обнаружено объяснение:

Перед использованием этого образа Debian необходимо обновить SPL 46 и U-Boot 44 в соответствии с руководством: глава 4.3 77 . Это очень важно.

Поиск нужной документации занял некоторое время, поскольку она разбросана по разным источникам на китайском и/или английском языках. Лучшим вариантом оказалась страница статуса публикации документов с англоязычной документацией. Вход через SSH возможен, но учитывая вероятность проблем с загрузкой, рекомендуется подключить отладочную плату с последовательным интерфейсом — именно так была обнаружена проблема с циклической перезагрузкой, упомянутая выше.

VisionFive 2 Serial Console

Перед установкой Debian 12 необходимо обновить загрузчики SPL и U-boot на VisionFive 2, а также использовать минимальный образ Linux sdcard.img. Эти файлы можно найти на GitHub , использовались файлы из состава VisionFive2 Software v2.8.0. Первым шагом была запись образа sdcard.img на карту MicroSD. Этот образ помещается на карту объемом 8 ГБ.

Starting NFS mountd: rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
OK
Starting isp_ctrl_daemon.sh: OK
Starting DHCP server: FAIL

Welcome to Buildroot
buildroot login:

Войти в систему можно под именем пользователя «root» и паролем «starfive». Для любознательных приведен журнал загрузки .

Проверим подключение к сети:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 6C:CF:39:00:2A:F1  
          inet addr:192.168.31.114  Bcast:192.168.31.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:41 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4630 (4.5 KiB)  TX bytes:730 (730.0 B)
          Interrupt:39

Все в порядке. Теперь можно загрузить последние версии бинарных файлов SPL и U-boot с GitHub и передать их на плату через SCP с хостовой машины:

$ scp u-boot-spl.bin.normal.out root@192.168.31.114:~
$ scp visionfive2_fw_payload.img root@192.168.31.114:~

В терминале VisionFive 2 проверим разделы:

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00001000 "spl"
mtd1: 00300000 00001000 "uboot"
mtd2: 00100000 00001000 "data"

Все выглядит правильно, обновим бинарный файл SPL с помощью утилиты flashcp:

# flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
Erasing blocks: 32/32 (100%)
Writing data: 127k/127k (100%)
Verifying data: 127k/127k (100%)

а затем U-boot:

# flashcp -v visionfive2_fw_payload.img /dev/mtd1
Erasing blocks: 683/683 (100%)
Writing data: 2731k/2731k (100%)
Verifying data: 2731k/2731k (100%)

Выключите плату VisionFive 2 и замените карту MicroSD на ту, где записан образ Debian 12. Образ удалось «успешно» загрузить.

Первая загрузка заняла более 3 минут, поэтому потребуется терпение:

[  OK  ] Finished Permit User Sessions.
         Starting Light Display Manager...
         Starting Hold until boot process finishes up...
         Starting Hostname Service...
[  184.478849] starfive-eth-plat 16030000.ethernet eth0: PHY [stmmac-0:00] driver [YT8531 Gigabit Ethernet] (irq=POLL)
[  184.496693] starfive-eth-plat 16030000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[  184.504916] dwmac4: Master AXI performs fixed burst length
[  184.510487] starfive-eth-plat 16030000.ethernet eth0: No Safety Features support found
[  184.518472] starfive-eth-plat 16030000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported
[  184.528233] starfive-eth-plat 16030000.ethernet eth0: configuring for phy/rgmii-id link mode
[  184.555947] vs_gem_dumb_create size = 1000
[  184.560082] Allocated coherent memory, vaddr: 0xFFFFFFE1FB40A100, paddr: 0x1017B8000
[  184.560475] starfive-eth-plat 16040000.ethernet eth1: PHY [stmmac-1:00] driver [YT8531 Gigabit Ethernet] (irq=POLL)
[  184.567929] ====> vs_gem_alloc_buf, 162.vs_obj->get_pages = 0
[  184.584371] starfive-eth-plat 16040000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-0
[  185.040836] PVR_K:  410: RGX Firmware image 'rgx.fw.36.50.54.182' loaded

Debian GNU/Linux
Debian GNU/Linux bookworm/sid starfive hvc0

starfive login:  bookworm/sid starfive ttyS0

starfive login: [  185.596073] starfive-eth-plat 16040000.ethernet: Failed to reset the dma

Последующие загрузки происходят быстрее — около 90 секунд.

Еще одна проблема: экран телевизора остается черным, хотя телевизор определяет подключение кабеля HDMI, а в последовательной консоли фиксируется активность, связанная с HDMI:

[  112.068695] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate rate 148500000 tmdsclk 148500000
[  112.178204] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->pixclock = 148500000
[  112.187959] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->tmdsclock = 148500000
[  112.197795] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->prediv = 1
[  112.206677] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->fbdiv = 99
[  112.215556] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->tmds_div_a = 1
[  112.224768] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->tmds_div_b = 1
[  112.233996] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->tmds_div_c = 1
[  112.243223] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->pclk_div_a = 1
[  112.252452] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->pclk_div_b = 2
[  112.261680] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->pclk_div_c = 2
[  112.270908] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->pclk_div_d = 2
[  112.280136] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->vco_div_5_en = 0
[  112.289545] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->pre_cfg->fracdiv = 0
[  112.298520] innohdmi-starfive 29590000.hdmi: *******************************************************
[  112.307660] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->tmdsclock = 148500000
[  112.317583] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->prediv = 1
[  112.326559] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->fbdiv = 20
[  112.335520] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->postdiv = 1
[  112.344581] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->post_div_en = 3
[  112.353989] innohdmi-starfive 29590000.hdmi: inno_hdmi_phy_clk_set_rate hdmi->post_cfg->version = 3

При проверке на другом дисплее изображение также не появилось. Оказалось, что карта MicroSD вышла из строя:

Begin: Running /scripts/local-premount ... done.
Warning: fsck not present, so skipping root file system
[    8.476889] JBD2: Invalid checksum found in transaction 3875
[    8.482634] JBD2: recovery failed
[    8.486024] EXT4-fs (mmcblk1p3): error loading journal
mount: mounting /dev/mmcblk1p3 on /root failed: Input/output error
Failed to mount /dev/mmcblk1p3 as root file system.


BusyBox v1.35.0 (Debian 1:1.35.0-1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs)

Пришлось взять карту из камеры наблюдения и заказать пять карт MicroSD класса A1 для будущих обзоров…

После этого загрузка прошла нормально, но проблема с черным экраном HDMI сохранилась. Вероятная причина:

[  695.829577] lightdm-gtk-gre[1535]: unhandled signal 11 code 0x1 at 0x000000406a220cc0 in libgtk-3.so.0.2404.30[3fbbb17000+6a3000]

Произошла ошибка сегментации… У других пользователей возникала аналогичная проблема: либо черный экран с указателем мыши, либо без него. Сообщается, что это связано с отсутствием поддержки дисплеев 4K, и проблему можно обойти, принудительно установив разрешение 1920×1080 в конфигурации lightdm (/etc/lightdm/lightdm.conf), добавив следующую строку в раздел [Seat:*]:

display-setup-script=xrandr -s 1920x1080

Мои дисплеи уже работают с разрешениями 1920×1080 или 1280×800, но это не помогло. Был создан пост на форуме , где можно следить за развитием ситуации.

В этой части обзора VisionFive 2 тестирование ограничено работой в headless-режиме. Вторая часть, вероятно, будет написана после выхода нового образа Debian, когда станет доступен графический интерфейс.

Информация о системе VisionFive 2

Системную информацию можно проверить с помощью нескольких команд:

root@starfive:~# cat /etc/issue
Debian GNU/Linux bookworm/sid \n \l

root@starfive:~# uname -a
Linux starfive 5.15.0-starfive #1 SMP Mon Dec 19 07:56:37 EST 2022 riscv64 GNU/Linux
root@starfive:~# inxi -Fc0
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_ADDRESS = "en_GB.UTF-8",
	LC_NAME = "en_GB.UTF-8",
	LC_MONETARY = "en_GB.UTF-8",
	LC_PAPER = "en_GB.UTF-8",
	LC_IDENTIFICATION = "en_GB.UTF-8",
	LC_TELEPHONE = "en_GB.UTF-8",
	LC_MEASUREMENT = "en_GB.UTF-8",
	LC_TIME = "en_GB.UTF-8",
	LC_NUMERIC = "en_GB.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
System:
  Host: starfive Kernel: 5.15.0-starfive arch: riscv64 bits: 64 Console: pty pts/0
    Distro: Debian GNU/Linux bookworm/sid
Machine:
  Type: RISCV System: StarFive VisionFive V2 details: N/A serial: VF7110B1-2253-D008E000-00001654
CPU:
  Info: single core model: N/A variant: u74-mc bits: 64 type: MT cache: L2: 2 MiB
  Speed (MHz): avg: 375 min/max: 375/1500 cores: 1: 375 2: 375 3: 375 4: 375
Graphics:
  Device-1: img-gpu driver: pvrsrvkm v: kernel
  Device-2: jh7110-hdmi driver: innohdmi_starfive v: N/A
  Device-3: jh7110-display driver: starfive v: N/A
  Display: server: X.org v: 1.21.1.3 driver: N/A note:  X driver n/a tty: 203x53
  Message: GL data unavailable in console for root.
Audio:
  Device-1: jh7110-pwmdac driver: starfive_pwmdac
  Device-2: jh7110-hdmi driver: innohdmi_starfive
  Device-3: simple-audio-card driver: N/A
  Device-4: simple-audio-card driver: asoc_simple_card
  Device-5: simple-audio-card driver: N/A
  Device-6: simple-audio-card driver: asoc_simple_card
  Device-7: simple-audio-card driver: N/A
  Device-8: simple-audio-card driver: N/A
  Device-9: simple-audio-card driver: N/A
  Sound Server-1: ALSA v: k5.15.0-starfive running: yes
Network:
  Device-1: dwmac driver: starfive_eth_plat
  IF: eth0 state: up speed: 1000 Mbps duplex: full mac: 6c:cf:39:00:2a:f1
  Device-2: dwmac driver: starfive_eth_plat
  IF: eth1 state: down mac: 6c:cf:39:00:2a:f2
Drives:
  Local Storage: total: 30.47 GiB used: 11.9 GiB (39.0%)
  ID-1: /dev/mmcblk1 vendor: Apacer model: APPSD size: 30.47 GiB
Partition:
  ID-1: / size: 15.16 GiB used: 11.88 GiB (78.3%) fs: ext4 dev: /dev/mmcblk1p3
  ID-2: /boot size: 99.8 MiB used: 22 MiB (22.0%) fs: vfat dev: /dev/mmcblk1p2
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 45.1 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 113 Uptime: 19m Memory: 7.74 GiB used: 237.6 MiB (3.0%) Init: systemd
  target: graphical (5) Shell: Bash inxi: 3.3.18
root@starfive:~# df -h
free -mh
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 793M 3.0M 790M 1% /run
/dev/mmcblk1p3 16G 13G 3.1G 80% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/mmcblk1p2 100M 22M 78M 23% /boot
tmpfs 793M 24K 793M 1% /run/user/0
root@starfive:~# free -mh
total used free shared buff/cache available
Mem: 7.7Gi 206Mi 7.4Gi 2.0Mi 116Mi 7.5Gi
Swap: 0B 0B 0B
root@starfive:~#

Все компоненты определяются корректно: четырехъядерный процессор JH7110, 8 ГБ оперативной памяти, карта SD на 32 ГБ, а также драйверы для дисплея, аудио и Ethernet.

Тестирование возможностей VisionFive 2

Из-за проблем с выводом изображения тестирование HDMI и других графических функций с этим образом невозможно, но можно проверить работу в headless-режиме.

GPIO

GPIO отображаются в sysfs:

root@starfive:~# ls -l /dev/gpiochip* 
crw------- 1 root root 254, 0 Jun 10  2022 /dev/gpiochip0
crw------- 1 root root 254, 1 Jun 10  2022 /dev/gpiochip1

Попробуем переключить GPIO 44 (контакт 40 на разъеме GPIO):

cd /sys/class/gpio
echo 44 > export
gpio44/
echo out > direction
echo 1 > value

Мультиметр показал 3.27 В при измерении между контактами 40 и 39. Установим значение в ноль:

echo 0 > value

Мультиметр показывает 0.00 В. GPIO работает корректно. В документации описано использование интерфейсов I2C, SPI, PWM и UART.

Ethernet

Протестируем два порта Gigabit Ethernet с помощью iperf3, установленного через apt.

LAN1 (на краю платы):

  • Отправка:
iperf3 -t 60 -c 192.168.31.114 -i 10
Connecting to host 192.168.31.114, port 5201
[  5] local 192.168.31.199 port 53702 connected to 192.168.31.114 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec  1.10 GBytes   943 Mbits/sec    0    421 KBytes       
[  5]  10.00-20.00  sec  1.10 GBytes   942 Mbits/sec    0    612 KBytes       
[  5]  20.00-30.00  sec  1.10 GBytes   941 Mbits/sec    0    612 KBytes       
[  5]  30.00-40.00  sec  1.10 GBytes   942 Mbits/sec    0    612 KBytes       
[  5]  40.00-50.00  sec  1.10 GBytes   941 Mbits/sec    0    993 KBytes       
[  5]  50.00-60.00  sec  1.10 GBytes   942 Mbits/sec    0    993 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  6.58 GBytes   942 Mbits/sec    0             sender
[  5]   0.00-60.00  sec  6.57 GBytes   941 Mbits/sec                  receiver

iperf Done.

  • Загрузка:
iperf3 -t 60 -c 192.168.31.114 -i 10 -R
Connecting to host 192.168.31.114, port 5201
Reverse mode, remote host 192.168.31.114 is sending
[  5] local 192.168.31.199 port 38484 connected to 192.168.31.114 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec                  
[  5]  10.00-20.00  sec  1.10 GBytes   942 Mbits/sec                  
[  5]  20.00-30.00  sec  1.10 GBytes   942 Mbits/sec                  
[  5]  30.00-40.00  sec  1.10 GBytes   942 Mbits/sec                  
[  5]  40.00-50.00  sec  1.10 GBytes   942 Mbits/sec                  
[  5]  50.00-60.00  sec  1.10 GBytes   942 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  6.58 GBytes   942 Mbits/sec    0             sender
[  5]   0.00-60.00  sec  6.57 GBytes   941 Mbits/sec                  receiver

iperf Done.

  • Полнодуплексный режим (двунаправленный):
iperf3 -t 60 -c 192.168.31.114 -i 10 --bidir
Connecting to host 192.168.31.114, port 5201
[  5] local 192.168.31.199 port 60996 connected to 192.168.31.114 port 5201
[  7] local 192.168.31.199 port 32776 connected to 192.168.31.114 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-10.00  sec  1.06 GBytes   908 Mbits/sec    0   1.33 MBytes       
[  7][RX-C]   0.00-10.00  sec   459 MBytes   385 Mbits/sec                  
[  5][TX-C]  10.00-20.00  sec  1.05 GBytes   900 Mbits/sec   57    403 KBytes       
[  7][RX-C]  10.00-20.00  sec   460 MBytes   386 Mbits/sec                  
[  5][TX-C]  20.00-30.00  sec   298 MBytes   250 Mbits/sec    3    410 KBytes       
[  7][RX-C]  20.00-30.00  sec   978 MBytes   821 Mbits/sec                  
[  5][TX-C]  30.00-40.00  sec   841 MBytes   706 Mbits/sec    5    570 KBytes       
[  7][RX-C]  30.00-40.00  sec   634 MBytes   532 Mbits/sec                  
[  5][TX-C]  40.00-50.00  sec   895 MBytes   751 Mbits/sec   11    710 KBytes       
[  7][RX-C]  40.00-50.00  sec   586 MBytes   491 Mbits/sec                  
[  5][TX-C]  50.00-60.00  sec   414 MBytes   347 Mbits/sec    5    677 KBytes       
[  7][RX-C]  50.00-60.00  sec   895 MBytes   751 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.00  sec  4.49 GBytes   644 Mbits/sec   81             sender
[  5][TX-C]   0.00-60.00  sec  4.49 GBytes   642 Mbits/sec                  receiver
[  7][RX-C]   0.00-60.00  sec  3.92 GBytes   561 Mbits/sec  267             sender
[  7][RX-C]   0.00-60.00  sec  3.92 GBytes   561 Mbits/sec                  receiver

iperf Done.

Результаты идеальны в обоих направлениях, хотя и ниже максимальных в полнодуплексном режиме. Они схожи с результатами на некоторых Arm-платформах, таких как Khadas VIM4 SBC .

LAN2 (рядом с портом HDMI):

  • Загрузка:
iperf3 -t 60 -c 192.168.31.115 -i 10
Connecting to host 192.168.31.115, port 5201
[  5] local 192.168.31.199 port 57690 connected to 192.168.31.115 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec    0    424 KBytes       
[  5]  10.00-20.00  sec  1.10 GBytes   941 Mbits/sec    0    424 KBytes       
[  5]  20.00-30.00  sec  1.10 GBytes   942 Mbits/sec    0    936 KBytes       
[  5]  30.00-40.00  sec  1.10 GBytes   942 Mbits/sec    0    936 KBytes       
[  5]  40.00-50.00  sec  1.10 GBytes   942 Mbits/sec   16    749 KBytes       
[  5]  50.00-60.00  sec  1.09 GBytes   940 Mbits/sec  130    296 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  6.58 GBytes   941 Mbits/sec  146             sender
[  5]   0.00-60.00  sec  6.57 GBytes   941 Mbits/sec                  receiver

iperf Done.

  • Отправка:
iperf3 -t 60 -c 192.168.31.115 -i 10 -R
Connecting to host 192.168.31.115, port 5201
Reverse mode, remote host 192.168.31.115 is sending
[  5] local 192.168.31.199 port 48018 connected to 192.168.31.115 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec                  
[  5]  10.00-20.00  sec  1.09 GBytes   941 Mbits/sec                  
[  5]  20.00-30.00  sec  1.10 GBytes   941 Mbits/sec                  
[  5]  30.00-40.00  sec  1.09 GBytes   940 Mbits/sec                  
[  5]  40.00-50.00  sec  1.10 GBytes   941 Mbits/sec                  
[  5]  50.00-60.00  sec  1.09 GBytes   940 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  6.57 GBytes   941 Mbits/sec    0             sender
[  5]   0.00-60.00  sec  6.57 GBytes   940 Mbits/sec                  receiver

iperf Done.

Полнодуплексный режим:

iperf3 -t 60 -c 192.168.31.115 -i 10 --bidir
Connecting to host 192.168.31.115, port 5201
[  5] local 192.168.31.199 port 48972 connected to 192.168.31.115 port 5201
[  7] local 192.168.31.199 port 48984 connected to 192.168.31.115 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-10.00  sec  1011 MBytes   848 Mbits/sec   32    694 KBytes       
[  7][RX-C]   0.00-10.00  sec   507 MBytes   425 Mbits/sec                  
[  5][TX-C]  10.00-20.00  sec   490 MBytes   411 Mbits/sec    1    672 KBytes       
[  7][RX-C]  10.00-20.00  sec   843 MBytes   707 Mbits/sec                  
[  5][TX-C]  20.00-30.00  sec  1.05 GBytes   905 Mbits/sec    0    735 KBytes       
[  7][RX-C]  20.00-30.00  sec   459 MBytes   385 Mbits/sec                  
[  5][TX-C]  30.00-40.00  sec   659 MBytes   553 Mbits/sec   70    475 KBytes       
[  7][RX-C]  30.00-40.00  sec   731 MBytes   613 Mbits/sec                  
[  5][TX-C]  40.00-50.00  sec   951 MBytes   798 Mbits/sec   15    699 KBytes       
[  7][RX-C]  40.00-50.00  sec   562 MBytes   471 Mbits/sec                  
[  5][TX-C]  50.00-60.00  sec   538 MBytes   451 Mbits/sec   27    587 KBytes       
[  7][RX-C]  50.00-60.00  sec   817 MBytes   685 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.00  sec  4.62 GBytes   661 Mbits/sec  145             sender
[  5][TX-C]   0.00-60.01  sec  4.61 GBytes   660 Mbits/sec                  receiver
[  7][RX-C]   0.00-60.00  sec  3.83 GBytes   548 Mbits/sec  224             sender
[  7][RX-C]   0.00-60.01  sec  3.83 GBytes   548 Mbits/sec                  receiver

iperf Done.

Результаты практически идентичны другому порту Ethernet, что также можно считать успешным…

Хранилище M.2 NVMe

В слот M.2 на нижней стороне платы была установлена SSD Apacer M.2 2280 PCIe Gen3 x4 объемом 256 ГБ (AS2280P4), которая определилась корректно:

root@starfive:~# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mtdblock0    31:0    0   128K  0 disk 
mtdblock1    31:1    0     3M  0 disk 
mtdblock2    31:2    0     1M  0 disk 
mmcblk1     179:0    0  30.5G  0 disk 
|-mmcblk1p1 179:1    0    16M  0 part 
|-mmcblk1p2 179:2    0   100M  0 part /boot
`-mmcblk1p3 179:3    0  15.5G  0 part /
nvme0n1     259:0    0 238.5G  0 disk 
`-nvme0n1p1 259:1    0 238.5G  0 part

iozone3 недоступен через apt, поэтому пришлось загрузить его и собрать из исходного кода:

apt install build-essential
wget https://www.iozone.org/src/current/iozone3_494.tgz
tar xvf iozone3_494.tgz 
cd iozone3_494/src/current/
make linux-arm
cp iozone /usr/local/bin

В Makefile нет опции для RISC-V, поэтому сначала была попытка использовать «make linux», но сборка завершилась ошибкой при линковке. Команда «make linux-arm» завершилась успешно, поэтому использовалась она…

root@starfive:~# cd /media/nvme0n1p1/
root@starfive:/media/nvme0n1p1# sudo iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 -i 2
	Iozone: Performance Test of File I/O
	        Version $Revision: 3.494 $
		Compiled for 64 bit mode.
		Build: linux-arm 

	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
	             Vangel Bojaxhi, Ben England, Vikentsi Lapa,
	             Alexey Skidanov, Sudhir Kumar.

	Run began: Sun Feb 12 07:29:34 2023

	Include fsync in write timing
	O_DIRECT feature enabled
	Auto Mode
	File size set to 1024000 kB
	Record Size 16384 kB
	Command line used: iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 -i 2
	Output is in kBytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 kBytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
         1024000   16384   169763   161593   166202   158275   170468   202205                                                                

iozone test complete.

SSD должна обеспечивать скорость чтения до 1800 МБ/с и записи до 1100 МБ/с. При 169 МБ/с и 158 МБ/с это совершенно неприемлемо. Ранее этот накопитель тестировался с скоростью 1100 МБ/с при подключении через ORICO Thunderbolt/USB к мини-ПК на Intel . Повторный тест на VisionFive 2 показал такие же низкие скорости.

Для справки приведен вывод lscpi:

root@starfive:/media/nvme0n1p1# lspci -v 
0000:00:00.0 PCI bridge: PLDA XpressRich-AXI Ref Design (rev 02) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Memory at <unassigned> (64-bit, prefetchable)
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00000000-00000fff [size=4K]
	Memory behind bridge: 30000000-300fffff [size=1M]
	Prefetchable memory behind bridge: 0000000000000000-00000000000fffff [size=1M]
	Capabilities: [80] Express Root Port (Slot+), MSI 00
	Capabilities: [e0] MSI: Enable- Count=1/32 Maskable+ 64bit+
	Capabilities: [f8] Power Management version 3
	Capabilities: [100] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
	Capabilities: [200] Advanced Error Reporting

0000:01:00.0 USB controller: VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller (rev 01) (prog-if 30 [XHCI])
	Subsystem: VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller
	Flags: bus master, fast devsel, latency 0, IRQ 58
	Memory at 30000000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [90] MSI: Enable+ Count=1/4 Maskable- 64bit+
	Capabilities: [c4] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Kernel driver in use: xhci_hcd

0001:00:00.0 PCI bridge: PLDA XpressRich-AXI Ref Design (rev 02) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Memory at <unassigned> (64-bit, prefetchable)
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 00000000-00000fff [size=4K]
	Memory behind bridge: 38000000-380fffff [size=1M]
	Prefetchable memory behind bridge: 0000000000000000-00000000000fffff [size=1M]
	Capabilities: [80] Express Root Port (Slot+), MSI 00
	Capabilities: [e0] MSI: Enable- Count=1/32 Maskable+ 64bit+
	Capabilities: [f8] Power Management version 3
	Capabilities: [100] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
	Capabilities: [200] Advanced Error Reporting

0001:01:00.0 Non-Volatile memory controller: Phison Electronics Corporation PS5013 E13 NVMe Controller (rev 01) (prog-if 02 [NVM Express])
	Subsystem: Phison Electronics Corporation PS5013 E13 NVMe Controller
	Flags: bus master, fast devsel, latency 0, IRQ 59
	Memory at 38000000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [80] Express Endpoint, MSI 00
	Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
	Capabilities: [e0] MSI: Enable- Count=1/8 Maskable+ 64bit+
	Capabilities: [f8] Power Management version 3
	Capabilities: [100] Latency Tolerance Reporting
	Capabilities: [110] L1 PM Substates
	Capabilities: [200] Advanced Error Reporting
	Capabilities: [300] Secondary PCI Express
	Kernel driver in use: nvme

Скорость соединения не отображается, но при проверке более подробного вывода видно:

LnkSta:	Speed 5GT/s (downgraded), Width x1 (downgraded)
LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
	 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
	 Compliance De-emphasis: -6dB

На данный момент это можно считать неудачей, поскольку производительность слишком низкая.

USB

Плата была выключена, NVMe SSD извлечен из слота M.2 и помещен в упомянутый выше корпус ORICO. После подключения SSD через USB и загрузки платы

вывод lsusb выглядит следующим образом (с корпусом, клавиатурой и мышью):

root@starfive:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 1: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M

Запустим iozone:

root@starfive:~# cd /media/sda1/
root@starfive:/media/sda1# sudo iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 -i 2
	Iozone: Performance Test of File I/O
	        Version $Revision: 3.494 $
		Compiled for 64 bit mode.
		Build: linux-arm 

	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
	             Vangel Bojaxhi, Ben England, Vikentsi Lapa,
	             Alexey Skidanov, Sudhir Kumar.

	Run began: Sun Feb 12 09:40:05 2023

	Include fsync in write timing
	O_DIRECT feature enabled
	Auto Mode
	File size set to 1024000 kB
	Record Size 16384 kB
	Command line used: iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 -i 2
	Output is in kBytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 kBytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
         1024000   16384   173936   176209   152915   151294   210743   173002                                                                

iozone test complete.

Результаты странно близки к тем, что были получены при подключении через M.2: 173 МБ/с записи и 152 МБ/с чтения… Для порта USB 3.0 на 5 Гбит/с ожидались значения около 300–400 МБ/с. Возможно, iozone3 требует оптимизации для RISC-V, хотя это маловероятно.

Аудиоразъем

Хотя тестирование аудио через HDMI сейчас невозможно, можно проверить работу 3.5-мм аудиоразъема, подключив колонки, питающиеся от одного из USB-портов платы. USB используется только для питания, звук поступает через аудиоразъем.

VisionFive 2 speakers

Для воспроизведения лицензионно-свободного MP3 использовался предустановленный ffplay:

root@starfive:~# ffplay bensound-epic.mp3 -nodisp
ffplay version 4.4.1 Copyright (c) 2003-2021 the FFmpeg developers
  built with gcc 11 (Debian 11.3.0-3)
  configuration: --prefix=/code_mm_20221111/target/usr --arch=riscv64 --target-os=linux --enable-gpl --disable-stripping --disable-static --enable-shared --enable-avfilter --disable-version3 --enable-log
ging --disable-extra-warnings --enable-avdevice --enable-avcodec --enable-avformat --enable-network --disable-gray --enable-swscale-alpha --disable-small --enable-dct --enable-fft --enable-mdct --enable-
rdft --enable-libv4l2 --enable-alsa --enable-outdevs --enable-pthreads --enable-zlib --enable-indevs --enable-runtime-cpudetect --enable-pic --cpu=rv64imafd --enable-libaom --enable-libass --enable-libbl
uray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-lib
gsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --ena
ble-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-li
bx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg
 --enable-libdc1394 --enable-libdrm --enable-chromaprint --enable-libx264 --disable-frei0r --disable-gnutls --disable-ladspa --disable-libiec61883 --enable-omx --extra-ldflags=-L/code_mm_20221111/target/
usr/lib --extra-cflags=-I/code_mm_20221111/target/usr/include/omx-il --extra-libs=-lOMX_Core
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, mp3, from 'bensound-epic.mp3':q=    0KB sq=    0B f=0/0   
  Duration: 00:02:58.55, start: 0.025057, bitrate: 112 kb/s
  Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 112 kb/s
    Metadata:
      encoder         : LAME3.99r
^Croot@starfive:~#  fd=   0 aq=   14KB vq=    0KB sq=    0B f=0/0

Звук работает нормально, но на максимальной громкости наблюдались искажения. После уменьшения громкости колонок проблема исчезла.

Добавим комментарий о карте MicroSD. Используемые карты обладают низкой производительностью при случайных операциях ввода-вывода, но с ними можно работать на Raspberry Pi и других одноплатниках без особых трудностей. Однако с образом Debian 12 на VisionFive 2 даже простые команды в терминале выполняются очень медленно — например, «ls» в корневом каталоге может занять 10 секунд.

root@starfive:~# time ls
'audio_534a89f910.mp3?filename=easy-lifestyle-137766.mp3'   iozone3_494       linux-headers-5.15.0-starfive_5.15.0-starfive-1_riscv64.deb   linux-libc-dev_5.15.0-starfive-1_riscv64.deb   wget-log
 bensound-epic.mp3					    iozone3_494.tgz   linux-image-5.15.0-starfive_5.15.0-starfive-1_riscv64.deb     sbc-bench.sh

real	0m9.588s
user	0m0.009s
sys	0m0.001s

Также приходится ждать около 5–10 минут после появления приглашения «starfive login: root», прежде чем можно начать вводить команды. Использование более производительной карты MicroSD или модуля eMMC, безусловно, помогло бы, но очевидно, что образ Debian также требует оптимизации в этом отношении.

Бенчмарки SBC Bench

Обычно для оценки производительности одноплатных компьютеров и мини-ПК используется скрипт sbc-bench.sh. RISC-V — довольно новая платформа, поэтому больших надежд на его бесперебойную работу не было, но попытка все же была предпринята.

root@starfive:~# ./sbc-bench.sh -m
StarFive JH7110, Kernel: riscv64, Userland: riscv64

CPU sysfs topology (clusters, cpufreq members, clockspeeds)
                 cpufreq   min    max
 CPU    cluster  policy   speed  speed   core type
  0       -1        0      375    1500   sifive,u74-mc
  1       -1        0      375    1500   sifive,u74-mc
  2       -1        0      375    1500   sifive,u74-mc
  3       -1        0      375    1500   sifive,u74-mc

Thermal source: /sys/class/hwmon/hwmon0/ (120e0000.tmon)

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
04:51:10:  750MHz  8.35  71%   1%   1%   0%  69%   0%  50.8°C
04:51:15:  750MHz  8.26  85%   1%   1%   0%  82%   0%  50.9°C
04:51:21:  750MHz  8.24  98%   0%   0%   0%  98%   0%  50.9°C
04:51:26:  750MHz  8.22 100%   0%   0%   0%  99%   0%  50.8°C
04:51:31:  750MHz  8.28 100%   0%   0%   0%  99%   0%  50.8°C
04:51:36:  750MHz  8.02  57%   2%   2%   0%  52%   0%  51.0°C
04:51:41:  750MHz  7.86  73%   0%   0%   0%  73%   0%  50.9°C
04:51:46:  750MHz  7.79  75%   0%   0%   0%  74%   0%  50.9°C
04:51:51:  750MHz  7.81  98%   0%   0%   0%  98%   0%  50.8°C

Информационная часть работает хорошо. Наблюдается высокая активность и операции ввода-вывода, поскольку в другом окне терминала устанавливается пакет.

Но даже в режиме простоя SBC bench не запускается из-за высокой загрузки процессора:

root@starfive:~# ./sbc-bench.sh -c
WARNING: This tool is meant to run only on Debian Stretch, Buster, Bullseye or Ubuntu Bionic, Focal, Jammy, Kinetic.

When executed on Debian GNU/Linux bookworm/sid results are partially meaningless.
Press [ctrl]-[c] to stop or [enter] to continue.
WARNING: dmesg output does not contain early boot messages which
help in identifying hardware details.

It is recommended to reboot now and then execute the benchmarks.
Press [ctrl]-[c] to stop or [enter] to continue.

Average load and/or CPU utilization too high (too much background activity). Waiting...

Too busy for benchmarking: 07:51:08 up 52 min,  3 users,  load average: 7.35, 6.77, 6.40,  cpu: %
Too busy for benchmarking: 07:51:13 up 52 min,  3 users,  load average: 7.24, 6.76, 6.40,  cpu: %
Too busy for benchmarking: 07:51:18 up 53 min,  3 users,  load average: 7.14, 6.75, 6.40,  cpu: %

Также есть два других предупреждения. Первое связано с тем, что скрипт не тестировался на еще не выпущенной Debian 12 «Bookworm». Второе вызвано тем, что вывод dmesg обрезан и не начинается с 00:00. Перезагрузка не производилась, так как полный цикл загрузки до момента появления приглашения командной строки занимает около 8 минут. Отключим проверку средней загрузки процессора и перезапустим скрипт, чтобы посмотреть, как далеко он пройдет:

root@starfive:~# ./sbc-bench.sh -c
WARNING: This tool is meant to run only on Debian Stretch, Buster, Bullseye or Ubuntu Bionic, Focal, Jammy, Kinetic.

When executed on Debian GNU/Linux bookworm/sid results are partially meaningless.
Press [ctrl]-[c] to stop or [enter] to continue.
WARNING: dmesg output does not contain early boot messages which
help in identifying hardware details.

It is recommended to reboot now and then execute the benchmarks.
Press [ctrl]-[c] to stop or [enter] to continue.

sbc-bench v0.9.17

Installing needed tools: apt -f -qq -y install sysstat git curl lshw mbw p7zip...No 7-zip binary found and could not be installed. Aborting
root@starfive:~#

Пакет 7-zip отсутствует в репозитории Debian RISCV64, и для работы на плате VisionFive 2 его пришлось бы собирать из исходного кода. На данный момент запуск SBC Bench без пропуска некоторых тестов невозможен. Вернемся к этому вопросу через несколько месяцев.

Заключение

На текущем этапе StarFive VisionFive 2 следует рассматривать как плату для разработки на RISC-V, и она не подходит для интеграции в проекты/продукты до дальнейшего прогресса в разработке программного обеспечения. Поскольку Linux для RISC-V все еще довольно нов, особенно с точки зрения видео/графики, это ожидаемо. Уже работают такие функции, как Gigabit Ethernet, GPIO, аудиоразъем и USB, но другие, такие как HDMI и производительность хранилища, требуют значительной доработки. Также необходимо улучшить стабильность системы — SSH-соединение несколько раз разрывалось, и не удавалось переподключиться, а последовательная консоль не работала, что требовало жесткой перезагрузки. Однако на форуме наблюдается активность, и компания работает над включением поддержки в основную ветку ядра Linux.

Благодарим StarFive за предоставленную плату. Разработчики, желающие помочь с программным обеспечением и/или тестированием, могут приобрести рассмотренную здесь плату VisionFive 2 за $70.40 плюс доставка (и, возможно, налоги). Также плата предлагается на Amazon за $112 с Wi-Fi.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments