Rust porté sur ARM et RISC-V Raspberry Pi RP2350
Un certain nombre de périphériques du dernier Raspberry Pi RP2350 ont été portés au langage Rust, tandis que le travail se poursuit pour un portage complet.
Jonathan Pallant, de Ferrous Systems, a bénéficié d’un accès anticipé à la nouvelle puce RP2350, montée sur un Raspberry Pi Pico 2 de pré-production, afin d’étudier la prise en charge du langage Rust.
Selon M. Pallant, les principaux défis posés par ce travail concernaient l’état très « bêta » de la ROM, de la fiche technique et du Pico SDK, mais la puce démarre avec un bloc de définition d’image de base dans les modes ARM Secure et RISC-V. Pallant a également mis en œuvre les périphériques SPI, UART et I2C et les GPIO en Rust, ainsi que le moteur DMA, la lecture de la mémoire OTP avec et sans ECC et l’appel des routines ROM.
Les domaines qui nécessitent encore un peu d’attention incluent l’ajout du support de l’Arm Debug Interface v6 à probe-rs, le très populaire outil de flash/logging basé sur Rust. Il supporte le RP2040, et une large gamme d’autres microcontrôleurs, mais malheureusement l’ARM Debug Interface du RP2350 est trop récente pour probe-rs et il ne sait pas comment parler aux cœurs à l’intérieur de la puce.
Il écrit également des pilotes pour les nouveaux périphériques, comme le transmetteur à grande vitesse (HSTX), le gestionnaire d’énergie (POWMAN) et le nouvel encodeur TMDS du SIO. Il modifie aussi les bibliothèques de support Rust pour RISC-V, afin que les applications RISC-V puissent déclarer des gestionnaires d’interruption exactement comme le font les applications Arm Cortex-M. Cela permettrait de compiler des exemples de programmes pour le mode RISC-V ou ARM sans modifier le code source.
Il écrit également le support Rust pour le nouveau support de mémoire PSRAM qui fournirait à un RP2350 jusqu’à 16MB de RAM externe, ainsi que l’implémentation du démarrage sécurisé, et le support pour les partitions flash et toutes les nouvelles choses charmantes que nous avons dans la ROM du RP2350.
Groupe de travail sur les dispositifs embarqués de Rust;