rshell
Note
Bien que potentiellement très pratique, je trouve que RShell ne simplifie pas la vie tant que çà comparativement à l'utilitaire pyboard.py qui fournit également quelques fonctions de gestion de fichiers.
C'est quoi ?
Rshell est une solution de Shell (gestion de fichiers) intgérant également une fonction de terminal RPEL (en mode raw ou non) pour micropython. Il permet de travailler sur le système de fichier de la carte, et de faire l'interpréteur également. Son rôle premier est clairement la gestion des fichiers, etc. Mais il permet de lancer le mode interpréteur RPEL.
Pour comprendre
Pour dire les choses simplement, RShell est comme un shell, une ligne de commande, qui fait le "pont" entre votre ordinateur principal et la carte Micropython. C'est un peu comme si la carte Micropython devenait un volume du système et on pouvait manipuler de façon transparente les fichiers sur le système et sur la carte Micropython, le tout via simplement la communication série "over USB".
RShell fonctionne comme une ligne de commande depuis votre ordinateur mais permet d'interagir avec un microcontroleur MicroPython par l'intermédiaire d'une communicaion série.
RShell utilise le mode raw-REPL de Micropython pour envoyer des commandes vers une carte micro python et ainsi modifier son système de fichier.
Cela permet:
- d'obtenir des informations sur le système de fichier
- de transférer des fichiers vers ou depuis la carte
- d'établir une session REPL.
Warning
RShell est typiquement le genre d'outil qui donne concrètement à Micropython un statut de Micro-OS, un statut de "micro système d'exploitation", mais sans toute la lourdeur d'un système complet tel que Gnu/Linux.
Note
RShell est écrit en Python.
Dans quel cas RShell est intéressant ?
RShell est intéressant pour pouvoir accéder au système de fichier de la carte Micropython lorsque celle-ci n'est pas accessible comme un volume "normal" sur le système. Ce qui est le cas notamment de la Pico Pi.
Avec la Pyboard, RShell semble moins essentiel en ce sens que l'on peut accéder au système de fichier directement comme un volume USB. Et aussi avec Pyboard.
RShell versus Pyboard.py ?
L'utilitaire pyboard.py fournit quelques fonctions de type shell également qui permettent de gérer le système de fichiers de la carte Micropython. Mais à priori RShell est plus complet.
Installation
S'installe avec l'installateur Python :
sudo pip3 installl rshell
Si on ne dispose pas de l'installateur pip3, on l'installera avec :
sudo apt-get install python3-pip
Lancement
Dans la mesure ou RShell va surtout servir à manipuler des fichiers sur la carte Micropython, je vous conseille de lancer RShell dans le répertoire où sont placés les codes pour la carte Micropython sur votre poste principal.
On lance RShell en ligne de commande avec :
rshell -p /dev/ttyACM0
L'option -p permet de définir le port utilisé.
On obtient alors la réponse suivante :
Using buffer-size of 32
Connecting to /dev/ttyACM3 (buffer-size 32)...
Trying to connect to REPL connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /test.py/ /test/
Setting time ... Feb 27, 2021 15:26:28
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 1970
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
Suivi de l'invite de Rshell de la forme :
/home/user>
ATTENTION, c'est une invite type "shell" (opérations sur les fichiers) et pas type interpréteur Micropython, mode interpréteur REPL qui est par contre activable au sein de la session RShell.
Premiers pas
Note
Dans RShell, on est par défaut sur le système courant, et plus exactement dans le répertoire dans lequel on a lancé RShell. Pour indiquer que l'on veut réaliser une opération sur la carte Micropython, on devra préciser le chemin sous la forme /pyboard (cas du pico) ou /flash ou /sd etc. selon les cas.
Lister la ou les cartes connectées
boards
Ce qui donne quelque chose de la forme :
pyboard @ /dev/ttyACM3 connected Epoch: 1970 Dirs: /test.py /test /pyboard/test.py /pyboard/test
Lister le contenu de la carte
Pour le pi pico, le chemin de la carte est /pyboard
et on listera le contenu avec :
ls /pyboard
ce qui donne par exemple :
test/ test.py
On a ici un répertoire et un fichier test.py
Note
Si on ne précise rien, une commande s'applique par défaut dans le répertoire courant, c'est à dire celui où est exécuté RShell, et si vous avez suivi mon conseil, ici, le répertoire de vos codes Micropython sur l'ordinateur.
Faîtes attention avec les ordres d'effacement !
Attention donc, si vous n'indiquez pas le chemin de la carte, alors la commande est exécutée SUR VOTRE ORDINATEUR ! Donc si vous faîtes une demande d'effacement de fichier, il le sera sur votre ordinateur.
FAITES BIEN ATTENTION DU COUP !!
Utiliser le mode REPL
Pour basculer en mode REPL, on utilisera la commande repl
selon :
Pour sortir un mode interpréteur repl, faire CTRL+X
Un petit plus de rshell en mode repl : on peut remonter simplement à la molette dans l'historique du terminal. Ce que ne permet pas screen
par exemple.
Sortir du RShell
Pour sortir de RShell, faire CTRL+D
Liens utiles
-
https://www.programmez.com/actualites/python-rshell-lautre-repl-30746
-
https://wiki.mchobby.be/index.php?title=MicroPython-Hack-RShell (Très complet et qui me sert de base ici)