URL: https://linuxfr.org/news/premiers-pas-avec-la-carte-visionfive-2 Title: Premiers pas avec la carte Visionfive 2 Authors: Arkem BAud, palm123, Ysabeau đ§¶ et Yves Bourguignon Date: 2023ćčŽ05æ14æ„T14:06:20+02:00 License: CC By-SA Tags: risc-v, libreoffice, starfivetech, visionfive2, debian, freebsd et arte Score: 63 Depuis plusieurs annĂ©es dĂ©jĂ , diverses cartes permettent de tester lâarchitecture [RISC-V](https://fr.wikipedia.org/wiki/RISC-V). Jâai longuement hĂ©sitĂ© Ă sauter le pas jusquâĂ lâarrivĂ©e de la Visionfive2 et de la Star64, toute deux conçues Ă partir du mĂȘme [SOC](https://fr.wikipedia.org/wiki/Syst%C3%A8me_sur_une_puce). AprĂšs quelques expĂ©rimentations, voici mes premiĂšres impressions... ---- [VisionFive 2](https://www.starfivetech.com/en/site/boards) [RISC-V International](https://riscv.org/) [RVspace](https://rvspace.org/en/home) [Journal sur la Star64](https://linuxfr.org/users/bortzmeyer/journaux/une-nouvelle-carte-a-processeur-risc-v-la-star64) ---- Choix de la carte =========== Câest un choix personnel, mais quâil sâagisse dâARM ou de RISC-V, je passe mon chemin sâil nây a pas au minimum une interface Ethernet et un support de stockage performant NVME ou SATA, ou au moins un connecteur PCIe, qui soient directement gĂ©rĂ©s par le SOC plutĂŽt que par un bus USB intermĂ©diaire. Ăa fait dĂ©jĂ un trĂšs gros tri, car ces cartes ne sont pas les plus nombreuses. La premiĂšre carte RISC-V qui mâintĂ©ressait Ă©tait la [Hifive Unmatched](https://www.sifive.com/boards/hifive-unmatched). Son format et ses fonctionnalitĂ©s Ă©taient tentantes, mais, bien quâassez onĂ©reuse, elle Ă©tait constamment en rupture de stock avec plusieurs mois dâattente. La sociĂ©tĂ© SiFive a finalement dĂ©cidĂ© de cesser sa production, et de prĂ©parer sa succession, la [Hifive Pro P550](https://www.sifive.com/boards/hifive-pro-p550) en partenariat avec Intel, qui produira le SOC nommĂ© [Horse Creek](https://community.intel.com/t5/Blogs/Tech-Innovation/open-intel/What-s-in-store-for-the-latest-RISC-V-development-board/post/1448348). Les deux autres, la [Star64](https://wiki.pine64.org/wiki/STAR64) et la [VisionFive2](https://www.starfivetech.com/en/site/boards), sont presque identiques car basĂ©es sur le mĂȘme SOC [JH7110](https://www.starfivetech.com/en/site/soc). Elles disposent toutes deux dâun processeur 64 bits Ă quatre cĆurs [U74](https://www.sifive.com/cores/u74) et dâun processeur 32 bits [E24](https://www.sifive.com/cores/e24) utilisĂ© comme coprocesseur pour effectuer des tĂąches basse consommation, de deux interfaces Gigabit, dâun GPU capable de rendus OpenGL et Vulkan, de ports USB 2.0 et 3.0, dâun connecteur GPIO 40 broches, est sont proposĂ©es en trois versions qui diffĂšrent par la quantitĂ© de RAM : 2, 4, ou 8 Go. La seule diffĂ©rence entre les deux cartes Ă©tant la prĂ©sence dâun connecteur PCIe sur la Star64, tandis que la VisionFive2 est Ă©quipĂ©e dâun connecteur M.2 pour NVME. Le support de ce SOC trĂšs rĂ©cent Ă©tant encore expĂ©rimental, jâai choisi la VisionFive2 car je tenais Ă y ajouter rapidement un SSD. DâaprĂšs les benchmarks prĂ©sentĂ©s sur [Bits of networks](https://blog.bitsofnetworks.org/benchmarking-risc-v-visionfive-2-vs-the-world.html), si les performances de cette carte sont nettement supĂ©rieures Ă celles de la Hifive Unmatched et de la premiĂšre VisionFive, elles sont au niveau dâun RaspberryPi 3B en puissance brute CPU, mais trĂšs en dessous sâil y a beaucoup dâaccĂšs Ă la RAM. Concernant la consommation, il y a aussi une amĂ©lioration par rapport aux cartes RISC-V plus anciennes. Ă pleine charge, on est lĂ aussi au niveau du RaspberryPi 3B, mais la diffĂ©rence entre une charge Ă 100 % et lâĂ©tat idle est moins marquĂ©e que sur les SOC ARM. Les pilotes et la gestion dâĂ©nergie sont bien moins matures que sur ARM, cela dit, il est sans doute encore trop tĂŽt pour tirer de rĂ©elles conclusions. Dans tous les cas, la diffĂ©rence avec le RaspberryPi 4 montre quâil reste du chemin avant de concurrencer les machines ARM, pour sâen tenir Ă des choses comparables. La carte est plutĂŽt [bien documentĂ©e](https://doc-en.rvspace.org/Doc_Center/visionfive_2.html), et [le SOC aussi](https://doc-en.rvspace.org/Doc_Center/jh7110.html). La prise en charge de [U-Boot](https://fr.wikipedia.org/wiki/Das_U-Boot) semble trĂšs bonne, ainsi que celle du noyau Linux. Il est intĂ©ressant de noter Ă ce sujet que la fondation [RISC-V International](https://riscv.org/) travaille depuis fin 2018 en [collaboration avec la fondation Linux](https://riscv.org/about/history/#international). Outre la distribution [Debian](https://rvspace.org/en/project/VisionFive2_Debian_Wiki_202303_Release), [Armbian](https://www.armbian.com/visionfive2/), [Fedora](https://forum.rvspace.org/t/fedora-37-on-the-visionfive-2-unofficial-build/2108), [Arch](https://forum.rvspace.org/t/arch-linux-image-for-visionfive-2/1459), [Ubuntu](https://wiki.ubuntu.com/RISC-V/StarFive%20VisionFive%202) et [FreeBSD](https://forum.rvspace.org/t/freebsd-support/1313) entre autres, sont en cours de portage sur cette carte. VĂ©rification =========== Ă la rĂ©ception, la premiĂšre pensĂ©e qui vient est de sâassurer quelle nâest pas dĂ©fectueuse, et si la quantitĂ© de RAM est correcte aussi, car elle nâest indiquĂ©e ni sur la boĂźte, ni sur la carte. Pour sâen assurer rapidement, deux mĂ©thodes sont possibles : soit utiliser un adaptateur USB â UART qui permet de suivre les Ă©tapes de dĂ©marrage du boot-loader (recommandĂ©), soit flasher un systĂšme minimal qui permette au moins de lancer quelques commandes comme free, lscpu et lsblk. Dans ce dernier cas, le plus simple est dâutiliser lâimage sdcard.img sur la [page GitHub officielle](https://github.com/starfive-tech/VisionFive2/releases). Cette image dâun systĂšme Linux trĂšs basique a lâavantage de fonctionner sans avoir Ă mettre Ă jour le firmware. Sâassurer que les dip-switches de la carte sont bien placĂ©s dans la [configuration de dĂ©marrage](https://doc-en.rvspace.org/VisionFive2/Boot_UG/VisionFive2_SDK_QSG/boot_mode_settings.html) par dĂ©faut, qui correspond au SPI. Pour lâinstant, mĂȘme pour dĂ©marrer sur une carte MicroSD, câest la configuration pour SPI qui est utilisĂ©e. AccĂšs Ă une version plus complĂšte du systĂšme =========== StarFive fournit une [image expĂ©rimentale de Debian](https://rvspace.org/en/project/VisionFive2_Debian_Wiki_202303_Release), mais il faut au minimum la version 2.11.5 du firmware parue en mars 2023 pour que la version actuelle dĂ©marre. Si comme moi, vous avez un firmware plus ancien, il faudra le mettre Ă jour de la maniĂšre suivante : 1. RĂ©cupĂ©rer les fichiers u-boot-spl.bin.normal.out et visionfive2_fw_payload.img sur la [page GitHub officielle](https://github.com/starfive-tech/VisionFive2/releases). 2. Les placer sur un serveur TFTP connectĂ© en Ethernet Ă la carte. 3. Brancher un adaptateur UART sur le GPIO de la carte : 6 GND, 8 TX, 10 RX. 4. RedĂ©marrer la carte sans MicroSD. 5. Ă lâinvite de U-Boot, lancer les commandes suivantes : ```bash setenv ipaddr 192.168.120.222;setenv serverip 192.168.120.99 sf probe tftpboot 0xa0000000 ${serverip}:u-boot-spl.bin.normal.out sf update 0xa0000000 0x0 $filesize tftpboot 0xa0000000 ${serverip}:visionfive2_fw_payload.img sf update 0xa0000000 0x100000 $filesize ``` Ceci nâest quâune copie de la mĂ©thode fournie dans la doc officielle. Bien sĂ»r, les variables « ipaddr » et « serverip » sont Ă adapter Ă vos besoins. Processus de dĂ©marrage =========== Avant dâaller plus loin, il est intĂ©ressant de se familiariser avec le processus de dĂ©marrage de ce type de carte, et de quelques caractĂ©ristiques de lâarchitecture RISC-V. Niveaux de privilĂšge sur RISC-V ----------- Ă lâexception notoire de lâarchitecture x86 avec ses 4, voire 5 « rings », les processeurs qui implĂ©mentent plusieurs niveaux de privilĂšges se contentent gĂ©nĂ©ralement dâun niveau superviseur pour le noyau et certaines parties du systĂšme, et dâun niveau utilisateur pour tout le reste. Lâarchitecture RISC-V ajoute le niveau M, pour MatĂ©riel, qui se rapproche du ring -1 des x86_64, destinĂ© Ă la gestion des VMs dont le systĂšme nĂ©cessite de tourner en ring 0. Dans le cas de RISC-V, ce niveau permet aussi lâabstraction de certains accĂšs au matĂ©riel, de maniĂšre Ă simplifier lâĂ©criture de pilotes sur des implĂ©mentations variĂ©es via une couche dĂ©diĂ©e appelĂ©e SBI pour [Supervisor Binary Interface](https://github.com/riscv-non-isa/riscv-sbi-doc/blob/master/riscv-sbi.adoc). Les niveaux de privilĂšge sont donc, dans lâordre de dĂ©marrage : M (MatĂ©riel) : PrivilĂ©giĂ© (ROM de boot, puis SBI) S (Superviseur) : PrivilĂ©giĂ© (Boot-loader, puis noyau) U (Utilisateur) : Non privilĂ©giĂ© (Le reste) DĂ©marrage de la carte ----------- 1. Le processeur dĂ©marre en mode M (MatĂ©riel) Ă lâadresse 0x2A00_0000 contenue dans une ROM interne au SOC. Sa principale fonction est de lire le SPL, la premiĂšre Ă©tape du boot-loader en SRAM, et de lâexĂ©cuter. 2. Le SPL (Secondary Program Layer, une partie de U-Boot) initialise la DRAM de maniĂšre Ă pouvoir y lire le reste du boot-loader. 3. Le binaire contenant le boot-loader complet commence par [OpenSBI](https://riscv.org/wp-content/uploads/2019/06/13.30-RISCV_OpenSBI_Deep_Dive_v5.pdf) qui fournit une couche dâabstraction de certains accĂšs au matĂ©riel. Le processeur est alors passĂ© en mode S (Superviseur), avant de passer la main Ă U-Boot. 4. [U-Boot](https://fr.wikipedia.org/wiki/Das_U-Boot) est un boot-loader multi-architectures, trĂšs utilisĂ© dans lâembarquĂ© et les cartes de dĂ©veloppement ARM et RISC-V. Il est capable dâutiliser de nombreux pĂ©riphĂ©riques de stockage et systĂšmes de fichiers, et fournit une console de commande assez complĂšte en cas de besoin. Sa fonction principale est de charger le noyau et ses dĂ©pendances en mĂ©moire avant de lui passer la main. 5. Linux est le noyau officiel, aussi bien pour RISC-V que pour U-Boot, mais celui de FreeBSD [semble aussi en bonne voie](https://forum.rvspace.org/t/freebsd-support/1313). Installation sur SSD =========== Lâ[image expĂ©rimentale de Debian](https://rvspace.org/en/project/VisionFive2_Debian_Wiki_202303_Release) est assez simple Ă installer sur SSD, mais en attendant une mise Ă jour du firmware qui permettra le dĂ©marrage sur NVME Ă partir du SPI, la partie qui sert Ă lâamorçage doit rester sur une carte SD ou eMMC. Au minimum, une partition racine doit ĂȘtre crĂ©e sur le SSD. Pour cela, gdisk et fdisk sont pleinement fonctionnels. Il ne reste quâĂ la formater et la monter, puis de recopier le contenu de lâimage Debian dedans. La carte utilisĂ©e pour lâinstallation ou une copie peut ĂȘtre utilisĂ©e pour lâamorçage. Seules les trois premiĂšres partitions sont nĂ©cessaires. La premiĂšre contient le SPL. La seconde contient le boot-loader constituĂ© du SBI, puis de U-Boot. La troisiĂšme est une partition EFI qui contient le noyau avec ses fichiers, et la configuration de dĂ©marrage de U-Boot. Pour lâinstant, elle est utilisĂ©e comme une partition /boot, et conforme au « [Generic Distro Configuration Concept](https://u-boot.readthedocs.io/en/latest/develop/distro.html) » de U-Boot, mais dâaprĂšs [Debian](https://wiki.debian.org/InstallingDebianOn/StarFive/VisionFiveV1#Boot_process_overview) lâobjectif Ă plus long terme est dâutiliser U-Boot comme un firmware pour dĂ©marrer un autre boot-loader depuis la partition EFI, ce qui. simplifierait la gestion du dĂ©marrage pour les distributions. Les trois fichiers Ă Ă©diter pour configurer le dĂ©marrage, sont /etc/fstab, bien Ă©videmment, mais aussi /etc/default/u-boot, et sur lâEFI, extlinux/extlinux.conf. Il est indiquĂ© au dĂ©but de ce fichier de ne pas lâĂ©diter directement, mais comme expliquĂ© [ici](https://jamesachambers.com/starfive-visionfive-2-debian-ssd-boot-guide/), ça se fait trĂšs bien malgrĂ© tout. Remplacer simplement toutes les occurrences de /dev/mmcblk0p4 par /dev/nvme0n1p1, ou tout autre numĂ©ro de partition que vous aurez choisi dâutiliser pour la racine du systĂšme dans ces deux derniers fichiers. AprĂšs redĂ©marrage, on se retrouve normalement sur le SSD. Il ne reste plus quâĂ ajouter les composants manquants, non disponibles sur Debian, car encore en version expĂ©rimentale chez StarFive. Ă ce sujet, la [documentation](https://rvspace.org/en/project/VisionFive2_Debian_Wiki_202303_Release) conseille de ne pas faire directement un apt-get upgrade, car les versions de mesa et linux-libc-dev sont patchĂ©es, et diffĂ©rentes de la version officielle de Debian. Pour ajouter les autres binaires modifiĂ©s par StarFive, lancer : ```bash wget https://github.com/starfive-tech/Debian/releases/download/v0.7.1-engineering-release-wayland/install_package_and_dependencies.sh chmod +x install_package_and_dependencies.sh sudo ./install_package_and_dependencies.sh ``` On obtient entre autres, des versions optimisĂ©es de LibreOffice, QT, Firefox et FFMPEG. Environnement graphique =========== Lâimage disque proposĂ©e par StarFive comprend un bureau GNOME reposant sur Wayland. Au premier lancement, jâai eu droit Ă une interface rosĂątre, mais fonctionnelle. DâaprĂšs la documentation, lancer le script /opt/disable_monitor_color.sh et redĂ©marrer permet de rĂ©soudre le problĂšme de couleurs. Jâai donc tentĂ© lâexpĂ©rience pour me retrouver avec un Ă©cran bleu clair sans aucune interface de connexion... aprĂšs un nouveau redĂ©marrage, lâinterface est redevenue rose et fonctionnelle, mais un changement de rĂ©solution mâa permis dâobtenir des couleurs normales. Ces problĂšmes Ă©tant connus, on peut sâattendre Ă ce quâils soient corrigĂ©s prochainement, dans une nouvelle version du systĂšme. DĂ©marrĂ© sur microSD, le lancement des applications graphiques est dĂ©sagrĂ©ablement lent, Ă tel point quâon se demande parfois si le programme nâa pas plantĂ©. Sur SSD par contre, lâensemble est plutĂŽt agrĂ©able Ă utiliser. Le dĂ©placement des fenĂȘtres est assez fluide, et le lancement des applications, sans ĂȘtre rapide, reste acceptable. Writer mâa paru fonctionner convenablement, et Calc aussi Ă part de lĂ©gĂšres latences en remplissant les cellules. Firefox se comporte trĂšs bien. Le dĂ©filement des pages de LinuxFr est sans accrocs, et regarder le direct dâARTE en plein Ă©cran (1920x1080) mâa fait rapidement oublier que je testais un systĂšme expĂ©rimental. Mes impressions =========== Si lâĂ©lectronique semble stable, la partie logicielle, aussi bien au niveau du firmware que des distributions, est encore trĂšs expĂ©rimentale. Il ne vaut mieux pas prĂ©voir lâutiliser en « prod » pour lâinstant, en tout cas pas sans une bonne dose de vigilance. Les performances sont perfectibles, mais elles sont suffisantes pour tester lâarchitecture RISC-V dans de bonnes conditions. Les logiciels patchĂ©s fournis par StarFive montrent quâĂ moyen terme, la carte devrait ĂȘtre utilisable en environnement graphique, mais il est encore trop tĂŽt pour comparer RISC-V Ă dâautres architectures trĂšs rĂ©pandues qui ont plus de maturitĂ©. Le fait quâun [nombre croissant de sociĂ©tĂ©s](https://riscv.org/members/), ainsi que des clients comme lâ[Union europĂ©enne](https://digital-strategy.ec.europa.eu/fr/library/recommendations-and-roadmap-european-sovereignty-open-source-hardware-software-and-risc-v) semblent sâintĂ©resser sĂ©rieusement au RISC-V est prometteur pour le dĂ©veloppement de cette architecture, en tout cas.