Risc-V : découverte sous MaixPy (MicroPython pour Risc-V)
Bonjour à tous,
La technologie Risc-V fait beaucoup parler d'elle avec, par exemple, le Kendryte K210 et des prototypes de projets parfois très impressionnants (intelligence artificielle, reconnaissance faciales, d'objets, etc).
J'ai aussi entendu parlé de MaixPy, une version de MicroPython pour Risc-V sur laquelle Damien Georges (créateur de MicroPython) a participé.
Je me suis donc penché un peu sur le carte de développement MaxDuino AI incluant un TFT 2.4" couleur et une caméra.
Bien supportant l'environnement Arduino et Plateforme IO, c'est surtout MaixPy (donc MicroPython) qui m'intéressait... d'autant qu'il est pré-chargé sur la plateforme de développement!
La carte MaxDuino
Commençons par le début... la carte de développement elle même.
Le MaxDuino est une carte basée sur le processeur Sipeed M1. Sous le couvercle métallique marqué d'un grand S nous retrouvons le fameux K210 de Kendryte, un module double coeur RISC-V orienté Intelligence Artificielle (IA) et accompagné des éléments nécessaires à son bon fonctionnement (comme régulateur, Flash, etc).
La carte de développement Maixduino AI est une carte au facteur de forme Arduino UNO équipé d'un module Sipeed M1 AI (Artificial Intelligence)
et d'un module ESP32 pour assurer la connectivité WiFi et Bluetooth ainsi que le support Analogique pour la carte MaixDuino. Cet ESP32 est préchargé avec un firmware spécialisé qu'il ne sera pas nécessaire de modifier.
La carte MaixDuino propose également les éléments suivants:
- Connecteur DVP: Le "Digital Video Port" port vidéo numérique est une interface parallèle branché directement sur le microcontrôleur. Celui-ci est conçu pour y brancher une camera.
- Connecteur LCD: qui est une interface SPI permettant de connecter un afficheur LCD. Le MaixDuino est livré avec un LCD de 2.4" exploitant le contrôleur ST7789 (voir les spécifications ici). Ce LCD propose une résolution de 320x240 pixels en 262K couleurs.
- Microphone: microphone MEMS intégré à la carte (MSM261S4030H0)
- Sortie Audio: avec le DAC TM8211 qui est composant I2S (protocole série destinée aux sorties audios).
- Amplificateur Audio: le NS4150 assure une amplification audio de 3W.
- Port USB-C: port USB 2.0 pour alimentation e programmation de la carte.
- Conn. Arduino UNO: entrées/sortie numériques, PWM, I2C, UART, 6x entrées analogiques et lignes d'alimentations.
Sipeed M1 et son Kendryte K210
Le Sipeed M1 est un processeur Kendryte K210 64 bits cadencé à 400 Mhz (ajustable en fréquence) et disposant de 8 Mo de SRAM et 16 Mo de mémoire Flash. Un montre de puissance dans le domaine des microcontrôleurs.
Le K210 dispose également d'un FPU double-précision (unité de calcul en virgule flottante) supportant les opérations de multiplication, de division et racine carrée. Il dispose également d'un accélérateur de transformation de fourrier (FFT).
Le coeur Kendryte K210 est équipé d'un réseau neuronal matériel (un accélérateur KPU), une unité de traitement vocal (APU), un programmable IO array permettant d'associer des fonctions matérielles aux broches du K210 (FPIOA/IOMUX).
L'unité de traitement IA du K210 peut effectuer des opérations tels que calcul de convolution, normalisation par lots, activation et pooling. En même temps, il est capable d'effectuer un pré-traitement d'une source vocale (la direction) et prise en charge d'une sortie audio.
Attention: deux ports séries
Cela est déroutant si on n'est pas au courant... mais le MaixDuino ouvre DEUX ports Usb-Série lorsqu'il est connecté à l'ordinateur.
Ces deux canaux UARTs sont ouverts par le composant CH522 et permet ainsi à l'ordinateur d'atteindre les deux microcontrôleurs présent sur la carte!
- Le premier canal permet d'atteindre l'ESP32 qui est déjà préprogrammé (et ne devrait donc pas nécessité le téléversement d'un firmware).
- Le second canal permet d'atteindre le processeur Sipeed M1 (K210) pour y téléverser le programme utilisateur.
A noter que le canal USB-Série vers le K210 est utilisé pour programmer la carte MaixDuino avec Arduino IDE/Plateform IO/MicroPython MaixPy.
MaixPy : MicroPython préchargé
MaixPy est une version de MicroPython développé pour pour les cartes Maix's (c'est donc un MicroPython pour Risv-V et plus précisément K210).
En tant qu'amateur MicroPython, cela est du premier intérêt pour moi.
La carte est préchargée avec MaixPy, connectez simplement un terminal sur le port USB-Série du processeur Sipeed et commencez à saisir des commandes en Python sur la ligne de commande REPL.
Vous pouvez également utiliser vos outils favoris pour téléverser des fichiers sur la carte MicroPython.
Note: Rappelez-vous de sélectionner le bon port USB-Série exposé par le processeur Sipeed M1.
>>> [MAIXPY]Pll0:freq:832000000 [MAIXPY]Pll1:freq:398666666 [MAIXPY]Pll2:freq:45066666 [MAIXPY]cpu:freq:416000000 [MAIXPY]kpu:freq:398666666 [MAIXPY]Flash:0xc8:0x17 open second core... gc heap=0x8016d4e0-0x801ed4e0 [MaixPy] init end __ __ _____ __ __ _____ __ __ | \/ | /\ |_ _| \ \ / / | __ \ \ \ / / | \ / | / \ | | \ V / | |__) | \ \_/ / | |\/| | / /\ \ | | > < | ___/ \ / | | | | / ____ \ _| |_ / . \ | | | | |_| |_| /_/ \_\ |_____| /_/ \_\ |_| |_| Official Site : https://www.sipeed.com Wiki : https://maixpy.sipeed.com MicroPython 9f3862f on 2019-07-19; Sipeed_M1 with kendryte-k210 Type "help()" for more information.
Il s'agit d'une implémentation standard de MicroPython, la commande help() et help('modules') sont disponibles et permettent d'obtenir de précieuses informations sur l'environnement MicroPython.
>>> help(); Welcome to MicroPython on the Sipeed Maix! For generic online docs please visit https://maixpy.sipeed.com Official website : http://www.sipeed.com Control commands: CTRL-A -- on a blank line, enter raw REPL mode CTRL-B -- on a blank line, enter normal REPL mode CTRL-C -- interrupt a running program CTRL-D -- on a blank line, do a soft reset of the board CTRL-E -- on a blank line, enter paste mode For further help on a specific object, type help(obj) For a list of available modules, type help('modules') >>> help('modules') KPU hashlib random uheapq Maix heapq re uio __main__ image sensor ujson _boot json socket uos _webrepl lcd struct urandom audio machine sys ure binascii math time usocket board math touchscreen ustruct builtins micropython ubinascii utime cmath modules ucollections utimeq collections nes ucryptolib uzlib errno network uctypes video fpioa_manager os uerrno zlib gc pye_mp uhashlib Plus any modules on the filesystem >>>
Le module machine permet d'accéder au fonctionnalités standards de module. A rappeler que ce module n'est pas une implémentation complète... étant donné les spécificités du K210, certaines fonctionnalités sont implémentées dans d'autres modules.
Le module fpioa_manager prend en charge la gestion de la matrice de multiplexage (association des fonctions matérielles avec les broches du K210).
Cette implémentation intègre également l'éditeur pye de Robert-HH fonctionnant directement dans l'environnement MicroPython de la carte (voir le module pye_mp).
Pour le reste, quelques modules spécifiques à la plateforme mériteraient quelques investigations: lcd, sensor, image, nes, audio, touchscreen, video.
Avis personnel
Je dois avouer avoir été très impressionné par l'implémentation MaixPy! La plateforme est stable et une fois que l'on sait qu'il faut sélectionner le bon port série... l'interaction avec MicroPython devient un vrai jeu d'enfant (comme sur une Pyboard)!
j'ai malheureusement beaucoup de projets sur le feu, ce qui m'empêche de poursuivre plus loin les explorations. Ceci dit, j'y reviendrais avec plaisir.
Plus d'information
Il y a encore tellement a dire à propos de cette carte... tellement de ressources à partager.. suivez simplement le lien vers la fiche produit
Écrire un commentaire