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.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /