Comment démarrer avec les microcontrôleurs basés sur RISC-V

Par Jacob Beningo

Avec la contribution de Rédacteurs nord-américains de DigiKey

Les concepteurs sont constamment sous pression pour innover, tout en gardant leur propriété intellectuelle (IP) secrète et en réduisant la consommation énergétique et les coûts. Cela a rendu l'architecture de jeu d'instructions (ISA) matérielle open-source RISC-V intéressante pour les concepteurs de processeurs dédiés aux applications mobiles. Maintenant que RISC-V est une option pour les microcontrôleurs, les concepteurs de systèmes embarqués et de dispositifs grand public ont besoin d'une rampe d'accès rapide pour démarrer leurs propres conceptions RISC-V.

L'une de ces rampes d'accès est la carte de développement FE310 LoFive-R1 de GroupGets LLC. Avant de présenter la carte LoFive-R1, cet article explique l'architecture RISC-V et les raisons pour lesquelles un développeur peut envisager de l'utiliser. Il décrit ensuite la carte LoFive-R1 et montre comment commencer à développer des applications, avec notamment quelques conseils et astuces.

Présentation de RISC-V

RISC-V est un projet d'architecture de jeu d'instructions matérielle open-source qui a commencé à l'université de Californie à Berkeley en 2010. Plusieurs raisons sont à l'origine de la création de l'architecture RISC-V, notamment les suivantes :

  • Répondre au besoin d'une architecture de jeu d'instructions (ISA) open-source qui pourrait être utilisée dans un cadre scolaire dans les projets universitaires et par les étudiants
  • Un moyen de partager l'expertise de conception dans le développement d'architectures ISA
  • Un moyen d'éviter de payer des redevances aux fabricants de puces en place et de réduire ainsi les coûts
  • Protéger les détails de conception d'une architecture (propriété intellectuelle d'une société) afin de rester commercialement viable

Du point de vue d'un concepteur, RISC-V est une architecture simplifiée conçue pour un fonctionnement rapide et basse consommation. Cela rend les puces basées sur RISC-V adaptées aux applications commerciales, pas seulement pour les universités. En effet, la Fondation RISC-V a suscité suffisamment d'intérêt pour atteindre environ 325 membres, incluant des sociétés telles que Si-Five, Google, Microchip Technology, NVIDIA et Qualcomm.

Bien que de nombreuses sociétés contribuent au développement de l'architecture RISC-V, pour le développeur moyen, la meilleure façon de se familiariser avec RISC-V est de trouver une carte de développement basée sur un processeur RISC-V.

La carte de développement LoFive FE310

L'une de ces cartes de développement est la carte de développement LoFive-R1 de GroupGets LLC (Figure 1).

Image de la carte de développement LoFive-R1 de GroupGetsFigure 1 : La carte de développement LoFive-R1 inclut un processeur RISC-V ainsi que tous les circuits de prise en charge nécessaires pour faire de la carte de développement un module de processeur pouvant être directement soudé à une carte porteuse. (Source de l'image : GroupGets LLC)

Tout d'abord, la carte LoFive-R1 inclut un processeur RISC-V qui peut fonctionner jusqu'à 320 MHz. Le processeur inclut 8 ko de mémoire programmable une seule fois (OTP), 8 ko de mémoire ROM masque, 16 ko de cache d'instructions et 16 ko de mémoire SRAM. Le processeur est également doté de trois contrôleurs de modulation de largeur d'impulsion (PWM) indépendants ainsi que d'interfaces SPI, I2C, UART, et même d'une interface Flash QSPI.

Ensuite, la carte de développement peut être soudée à des embases, ou en raison des bords crénelés, elle peut être directement soudée sur une carte porteuse et utilisée comme module de processeur. Cela peut considérablement aider un développeur à concevoir du matériel personnalisé sans avoir à passer par la logistique d'approvisionnement du processeur.

Puis la carte de développement inclut une mémoire Flash QSPI intégrée fournie via un module Flash IS25LP128 d'Integrated Silicon Solution Inc (ISSI). L'IS25LP128 est un module Flash de 128 Mbits, 16 Mo qui peut fonctionner à des vitesses de bus SPI jusqu'à 133 MHz lorsqu'il est utilisé en mode entrées/sorties quadruples (Figure 2). Le module Flash SPI peut être utilisé pour le stockage afin de garantir un espace d'application suffisant ou pour stocker des données d'exécution telles que les journaux d'application.

Schéma du module Flash SPI 128 Mbits d'ISSIFigure 2 : La carte de développement LoFive-R1 inclut un module Flash SPI 128 Mbits d'ISSI utilisé pour le stockage des applications. (Source de l'image : ISSI)

La carte de développement fonctionne également sur une alimentation de 5 V, convertie en 3,3 V par un régulateur linéaire SPX3819M5 de MaxLinear. Le régulateur est fourni en boîtier SOT23-5, mais fournit jusqu'à 500 mA. La carte de développement consomme très peu de courant et peut donc prendre en charge des capteurs et des dispositifs supplémentaires sans avoir à ajouter de circuits d'alimentation supplémentaires.

Schéma du régulateur linéaire 3,3 V SPX3819 de MaxLinearFigure 3 : Le régulateur linéaire 3,3 V SPX3819 sur la carte de développement LoFive-R1 fournit jusqu'à 500 mA. Cela est suffisant pour les circuits embarqués ainsi que pour certains dispositifs externes, tels que les capteurs. (Source de l'image : MaxLinear)

Enfin, tous les détails de conception de la carte de développement, tels que les schémas et la nomenclature, sont disponibles sur github. Ces informations permettent au développeur de comprendre plus facilement le fonctionnement de la carte et peuvent également être utilisées comme guide de conception pour des projets de développement personnalisés.

Configuration de la chaîne d'outils RISC-V et programmation de la carte de développement

Un développeur pourra constater qu'il existe plusieurs chaînes d'outils disponibles pour RISC-V selon la carte de développement choisie. Il est important de réaliser que le kit de développement logiciel (SDK) pour RISC-V est disponible pour Windows, macOS et Linux. Cet article vous explique comment configurer la carte de développement pour Linux.

Tout d'abord, dans un terminal, consultez le kit SDK LoFive Freedom-E de git à l'aide de la commande suivante :

git clone --recursive https://github.com/mwelling/freedom-e-sdk.git

Ensuite, accédez au répertoire créé par le kit SDK en utilisant :

cd freedom-e-sdk

Deux kits SDK différents sont disponibles pour la carte de développement. Le premier est appelé « SDK hérité », car il s'agit d'une ancienne version. Utilisez le kit SDK le plus récent. Celui-ci dispose d'une chaîne d'outils et inclut OpenOCD pour le débogage. Le kit SDK peut être extrait à l'aide des commandes suivantes :

git checkout lofive-r1

git submodule sync

git submodule update –init –recursive

La programmation de la carte de développement peut se faire de plusieurs manières. Tout d'abord, il existe des signaux JTAG standard sur le processeur qui sont disponibles via les connecteurs d'extension LoFive-R1. Un développeur peut utiliser n'importe quel programmateur prenant en charge JTAG, par exemple J-Link de SEGGER. Si aucun programmateur n'est disponible, un développeur peut également utiliser un convertisseur USB-série à faible coût, comme le FT2232H-56Q Mini MDL de FTDI (Figure 4). Le FT2232H-56Q Mini MDL est un module qui héberge toutes les connexions et les dérivations requises pour l'interface avec la carte de développement LoFive-R1. Le kit SDK utilise les E/S à usage général disponibles sur le FT2232H-56Q pour créer les connexions JTAG nécessaires à la programmation du microcontrôleur.

Image du module série FT2232H-56Q MINI MDL de FTDIFigure 4 : Le FT2232H-56Q MINI MDL est un module série à faible coût qui peut être directement interfacé à un ordinateur via USB, puis à l'UART embarqué de la carte de développement LoFive-R1. (Source de l'image : FTDI)

Neuf connexions différentes doivent être établies entre la carte de développement LoFive-R1 et le module FT2232H-56Q (Tableau 1).

Broche de carte de développement LoFive-R1 Broche de module FT2232H-56Q
+5 VIN VBS
Terre GND
TRSTN AD5
TCK AD0
TDO AD2
TMS AD3
TDI AD1
UART0.TX BD1
UART0.RX BD0

Tableau 1 : Tableau simple pouvant être utilisé pour établir un pont entre les connexions de la carte de développement LoFive-R1 et le module FT2232H-56Q. (Source du tableau : DigiKey Electronics)

Ces connexions peuvent être résumées comme suit :

  • Alimentation et terre
  • Signaux JTAG
  • Signaux UART

Les connexions pourraient être réalisées directement ou en utilisant un montage d'essai comme le PB-83M de Global Specialties (Figure 5). Ces montages d'essai sont dotés de fiches bananes pour deux sources de tension et de terre pour simplifier le prototypage.

Image du montage d'essai PB-83M de Global Specialties avec fiches bananes

Figure 5 : Le PB-83M fournit des fiches bananes pour deux sources de tension et la terre pour faciliter le prototypage. (Source de l'image : Global Specialties)

Lors de la première utilisation de la carte LoFive-R1, il est conseillé d'installer un chargeur d'amorçage embarqué. Le chargeur d'amorçage est installé une seule fois et peut être utilisé pour faciliter d'autres mises à niveau. Le chargeur d'amorçage peut être créé à partir du kit SDK en exécutant la commande suivante :

make PROGRAM=lofive-boot TARGET=lofive-r1-bootloader upload

L'application « hello world » peut ensuite être chargée sur la carte de développement à l'aide de la commande suivante :

make PROGRAM=sifive-welcome TARGET=lofive-r1 upload

À ce stade, un développeur aura programmé sa première application RISC-V et les possibilités à partir de là sont illimitées.

Conseils et astuces pour travailler avec RISC-V

Démarrer avec les processeurs RISC-V est un peu différent des écosystèmes de microcontrôleurs standard. Voici quelques « conseils et astuces » :

  • Après avoir extrait le kit SDK LoFive-R1, prenez le temps de consulter le fichier README.md dans le répertoire principal. Il contient des informations utiles sur les emplacements où trouver la documentation du kit SDK, les packs de support de carte et d'autres informations pratiques.
  • Si une sonde de débogage professionnelle telle que le modèle SEGGER J-Link est disponible, utilisez-la pour programmer des applications sur le processeur RISC-V. J-Link prend en charge l'architecture RISC-V depuis 2017.
  • Pour les développeurs qui préfèrent utiliser un environnement de développement intégré (IDE) plutôt que des outils de ligne de commande, envisagez d'utiliser l'environnement de développement Freedom Studio pour RISC-V qui est un IDE basé sur Eclipse.

Les développeurs qui suivent ces « conseils et astuces » constateront qu'ils économisent pas mal de temps et d'efforts lorsqu'ils utilisent l'architecture RISC-V pour la première fois.

Conclusion

RISC-V est une architecture intéressante qui peut convenir aux développeurs qui cherchent à utiliser une architecture matérielle open-source. Il existe actuellement des cartes de développement pour les processeurs RISC-V et, comme indiqué dans cet article, la configuration des chaînes d'outils n'est pas beaucoup plus difficile que pour tout autre microcontrôleur standard.

N'oubliez pas que même si l'architecture RISC-V est intrigante, elle ne présente pas l'écosystème riche dont de nombreuses plateformes de microcontrôleurs existantes bénéficient. C'est pourquoi les développeurs qui choisissent de suivre le chemin RISC-V peuvent constater qu'ils ont moins de choix et de ressources à exploiter. Ce compromis peut en valoir la peine, selon l'application finale et les préférences et ressources du développeur.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey