samedi 20 septembre 2014

Neo computers : les Mites sont à l'œuvre!

Depuis quelques années, la 'révolution' Arduino est en marche... Vous en avez certainement entendu parlé tellement il est impossible d'y échapper. Dans le 'petit' monde de l'embarqué, ces systèmes sont devenus incontournables. A ce point que même de grands fondeurs de composants comme Intel, Texas Instruments, ST et bien d'autres, proposent diverses cartes de développement basées sur le même principe qui a fait le succès de la famille. A l'origine les cartes Arduino étaient, et le sont toujours pour la majorité, équipées de processeurs de type AVR du constructeur Atmel.

L'incontournable UNO, origine : du site officiel Arduino
Les cartes Arduino ou compatibles sont proposées à prix très bas en général inférieur à une centaine d'Euros, même équipées d'un puissant processeur ARM, et sont accompagnées d'un outil logiciel de développement gratuit qu'il suffit de télécharger. Ce logiciel produit du code binaire directement exécutable par le processeur à partir d'un langage 'C' 'simplifié' ou une grande partie des fonctionnalités disponibles est 'cachée' dans diverses librairies fournies. La puissance de ces petits systèmes est assez conséquente, même lorsque la carte est équipée d'un petit processeur AVR puisqu'ils exécutent du code non interprété, à la différence d'autres langages comme le Basic.

Ces systèmes souffrent tout de même d'un petit manque à mon sens, et ajoutent une contrainte que je trouve assez gênante. Tout d'abord, ils ne fournissent aucune possibilité native d'affichage. J'entends par la un affichage sur un écran standard de type VGA, même s'il est toujours possible d'y connecter des afficheurs LCD. De ce fait, certaines applications sont difficilement envisageables.

D'autre part, le principe 'Arduino' implique de disposer d'un ordinateur 'standard' sur lequel sera installée l'application de développement et de téléversement du code dans le processeur. Un PC sous Windows/Linux, ou un Macintosh est donc obligatoire.

Mise en situation : Sans obligatoirement aller chercher des cartes embarquées fonctionnant sous Linux, il existe depuis quelques temps (2011) un petit système autonome, programmable en Basic, et capable d'afficher des textes et des graphiques nativement sur un écran VGA : les 'trucs-mites'.

De quoi s'agit-il? A l'origine il s'agit d'un projet de Geoff Graham qui eût l'idée de porter le basic Microsoft MBASIC sur un processeur très puissant de la famille PIC32 de Microchip. L'idée fut publiée dans la revue Silicon Chip de mars à avril 2011 sous le titre "The Maximite", et se présente sous la forme d'une carte autonome comportant l'intégralité des fonctionnalités du système : la Maximite

Image provenant du site de Geoff Graham.
Et de base, le système est assez séduisant. Bien que reposant sur un interpréteur Basic qui, comme son nom l'indique interprète chaque ligne de texte du programme, la vitesse d'exécution de l'interpréteur associé à la rapidité du processeur de type RISC fonctionnant à 50Mhz, confère au système une rapidité d'exécution tout à fait surprenante. A titre indicatif, au début des années 80, je faisais mes premières armes avec un système de ce type doté d'un processeur de type CICS fonctionnant à moins d'un MHz :

Et revoici mon TRS80-PC2!
La comparaison n'a même plus de sens tellement il devient absurde de confronter un processeur de type Z80 avec un PIC32! Et pourtant, il m'est arrivé d'utiliser ce PC2 au travers de son connecteur d'entrées/sorties disponible sur le côté gauche de l'appareil pour commander un processus industriel assez complexe de gestion de moteurs de remplissage d'un château d'eau!

De base, le système Maximite offre la visualisation sur un moniteur VGA, dispose d'un éditeur en ligne pour le Basic intégré, d'un connecteur pour carte SD, d'une prise pour un clavier type PS/2, d'un port USB, et de différents signaux d'entrées/sorties, le tout très facilement accessible par le biais de commandes en Basic que Geoff Graham a eu la très bonne idée d'ajouter au langage d'origine.

En terme de performances et de flexibilité, le Maximite n'a plus rien à voir avec le PC2. Les capacités mémoires sont à l'avenant. Maximite dispose de 128K de RAM, le PC2 n'en disposait que de 1,8K!
Si l'on compare ces caractéristiques à ce que fût le PC d'origine, le contraste est tout aussi saisissant. Un processeur 16 bits (le PIC32 est un 32 bits) fonctionnant à moins de 5Mhz (4,77MHz), 64K de ram pour les premières versions, un lecteur de disquette poussif de 180K et un affichage monochrome non graphique!

Quelques exemples de produits compatibles Maximite de ce que j’appellerais 'la première vague', développés soit par Geoff Graham lui-même, ou disponibles chez d'autres éditeurs de cartes électroniques :

Le Maximite d'origine en sortie VGA monochrome :
http://archive.siliconchip.com.au/cms/A_112362/article.html

Le Maximite color :
Image provenant du site de Geoff Graham.
Un peu de la même façon que des cartes Arduino compatibles éditées par d'autres entités que les concepteurs originaux se sont vues affublées du terme 'duino' dans le titre, des 'quelques-choses-Mites' sont aussi apparues, éditées par Geoff Graham lui-même, ou par d'autres :

la Mini-maximite de Geoff Graham :
Image provenant du site de Geoff Graham.
La TFT-Maximite de Segor Electronics :

Image provenant du site de Segor Electronics.

La UBW32 de Brian Schmalz, qui ne comporte pas de 'mite' dans le titre :

Image provenant du site de Geoff Graham.
La CGMMSTICK1 - Maximite de CircuitGizmos : 


http://www.circuitgizmos.com.

La CGCOLORMAX2 - Color Maximite de CircuitGizmos :

http://www.circuitgizmos.com.
La DUINOMITE-MINI d'Olimex :

www.olimex.com.

La DUINOMITE-MEGA, toujours d'Olimex :

www.olimex.com.

Jusqu'à la Maximite BBX de Chuck Hellebuyck qui a récemment fait l'objet d'une campage de crowdfunding sur kickstarter :


Mais au fait, pourquoi s'intéresser à ce système simple programmable en langage Basic?

Outre les côtés très intéressants de la rapidité d'exécution des programmes et de la versatilité de la machine, ce système présente tout de l'ordinateur autonome et intuitif tels que le furent en leur temps les micros-ordinateurs de la fin des années 70 démocratisés par les fameux ZX80 et  ZX81, avant que tout ce microcosme bouillonnant d'idées et de ressources ne soit remis en cause par le très médiocre IBM PC (avis personnel qui est toujours le mien presque 30 ans plus tard).

Mais, pour être complet, cette base Maximite se doit d'évoluer vers une architecture générale plus complète. A mon sens, le coup de départ de la 'seconde vague' vient d'être donné par Bryan Cockfield par la création du 'Micromite Companion', le MMC :


http://propellerpowered.com
Quelle différence par rapport à la Maximite d'origine?

Sur ce système, le processeur principal n'est plus un circuit équipé d'une grande quantité de pattes d'entrées/sorties mais un processeur plus simple en terme d'interfaces extérieurs qui ne joue plus le rôle QUE de processeur central : le Micromite, toujours développé par Geoff Graham.

Dans le système Maximite  d'origine, c'est le processeur central qui gère l'interface vidéo. Cela ne pose pas vraiment de problème de ressources au processeur car elle à été développée pour effectuer sa fonction dans son coin en interférant le moins possible avec le cœur Basic du système.

Le circuit Micromite, lui, ne gère absolument pas la vidéo. Il ne peut être programmé que par l'intermédiaire de son interface série dédiée à la console. Or il existe plusieurs projets de réalisation d'un terminal type VT100 autonome, en mesure d'afficher les informations sur un écran VGA standard, dont celui de Geoff Graham lui-même : VT100. Son projet utilise toujours un PIC32 pour réaliser la fonction.

http://geoffg.net/terminal.html
Cependant il existe un autre type de processeur puissant et capable d'afficher sans problèmes, caractères et graphiques sur un écran VGA, le processeur Propeller de Parallax. Un bon exemple de ce type de réalisation est le terminal de Vince Briel de Brielcomputers, le PocketTerm :

Brielcomputer.
C'est justement ce type de processeur Propeller qui a été utilisé dans le projet MMC cité plus haut. Ce circuit joue dans ce cas, le rôle de co-processeur graphique avec des possibilités tout à fait étonnantes :



Il devient donc possible de considérer, avec cette nouvelle mouture de Micromite accompagné d'un co-processeur vidéo, que le système vient d'entrée dans une nouvelle phase d'améliorations substantielles, propres à procurer pour un coût réduit tant en terme d'achat de matériel que de temps de développement, des possibilités importantes dans divers domaines.

Pour l'instant, la définition vidéo peut paraître encore faible, mais d'une part la voie de l'amélioration est tracées, et d'autre part des systèmes bien plus complexes à programmer existent depuis longtemps pour afficher quantités d'informations statiques et dynamiques à l'écran.

Mais ce système Micromite offre aujourd'hui une alternative intéressante dans la réalisation rapide et efficace de certaines applications qui réclameraient à contrario de très gros investissements financiers en développement sur d'autres plates-formes.

La prochaine voie d'amélioration devrait sans conteste se focaliser sur la connectivité du système. Pour l'instant, seule une connection de type série est possible. Pour rendre Micromite visible depuis le net, une interface réseau semble être inévitable, qui décuplerait totalement les champs d'applications de ce petit ordinateur.

Perspectives :  Obtenir et tester ce système. Puis le déployer dans une véritable application... Et puis espérer qu'une communauté active naisse autour de ce projet, un peu de la même façon que ce qui s'est passé pour l'Arduino!

Aucun commentaire:

Enregistrer un commentaire