Affichage des articles dont le libellé est I-Maximite. Afficher tous les articles
Affichage des articles dont le libellé est I-Maximite. Afficher tous les articles

jeudi 2 octobre 2014

Micromite Companion : construction du système.

Dans mon billet précédent traitant du système Maximite, j'ai détaillé la genèse du projet de Geoff Graham puis les différentes reprises du sujet par d'autres contributeurs, pour terminer sur une évolution intéressante qu'est le système Micromite accompagné d'une extension très pratique se présentant sous la forme du Micromite Companion. Avec au menu, le rajout d'une sortie VGA, d'une sortie audio, d'une entrée clavier type PS/2 et d'un lecteur de carte SD pour former le système suivant :

Du site http://propellerpowered.com

Mise en situation : pour quelle raison utiliser ce système plutôt que la version Maximite d'origine qui possède aussi toutes ces interfaces? J'y vois au moins une raison intéressante, le processeur PIC32 utilisé est très petit et très facile à souder avec son boîtier en version DIP. Cet ensemble devient dès lors une base de développement autonome très pratique. Une fois le programme Basic finalisé, il peut alors être implémenté dans le processeur d'application, lui même prenant place ne serait-ce que sur une carte d'expérimentation. Le développement de petits systèmes devient alors très facile.

Deuxième raison, les fonctionnalités offertes par le 'processeur graphique' permettent la créations d'application plus conviviales moyennant la programmation du bus I2C assurant le transfert de commande depuis le 'processeur central' vers le 'processeur graphique'.

Et peut-être, ou sans doute une troisième raison : comme le 'processeur graphique' est maintenant autonome, il peut se présenter sous différentes formes et offrir des modes graphique non supportés actuellement ouvrant ainsi de multiples possibilités tout en restant très simple à utiliser.
N'oublions pas d'autre part que Microchip, le fabricant du processeur PIC32 utilisé dans ce montage, à sorti en 2013 une version à 200Mhz référencé PIC32MZ et non plus seulement MX qui, outre une fréquence de fonctionnement bien plus élevée, semble être aussi plus performant dans l'exécution de ses instructions!

Mais avant de profiter de ce Micromite Companion, il est nécessaire de le construire parce qu'il est livré sous cette forme :


Avant de vous lancer dans un tel montage, si comme moi la curiosité vous pousse à essayer ce concept, notez que même si sa construction ne pose pas de problème pour une personne avertie, je le déconseille à ceux d'entre vous n'ayant jamais tenu un fer à souder en main. L'assemblage de la carte nécessite une petite pratique notamment en ce qui concerne le soudage du connecteur de carte SD, plus d'autres approximations du développeur nécessitant quelques acrobaties.

Ne pas perdre de vue qu'il s'agit d'un produit amateur et donc largement perfectible.
Le circuit imprimé n'est pas très bien réalisé :


Toutes les pistes ne sont pas au bon format, notamment certaines véhiculant non pas des signaux mais des tensions, qui devraient être plus larges.

Les résistances sont montées debout. C'est une très mauvaise idée, d'autant plus que celles fournies sont de type carbone (des type métal eussent été plus judicieuses) équipées de pattes très fines et très faciles à plier. Se faisant, il est relativement difficile de conserver l'alignement des séries de résistances qui ont, de plus, tendance à ce coucher sur le circuit imprimé si l'on n'y fait pas attention.
En agrandissant légèrement la taille du circuit et en agençant les composants de façon plus étudiée, il aurait été tout à fait possible de les implanter à l'horizontal.

Les résistances présentes face au connecteur du clavier doivent être implantées corps côté connecteur (comme conseillé pour celles face au connecteur VGA alors que ce dernier est en plastique) et non pas l'inverse comme présenté sur le circuit imprimé. En ce qui me concerne je les ai montées comme présenté sur le circuit alors que des commentaires d'amateurs ayant déjà réalisé ce montage conseillaient de faire l'inverse. Peu importe, je les ai placées correctement, les pattes ne touchent pas le connecteur métallique.

Le connecteur VGA possède un écartement des lignes de contact trop grand par rapport a celui fourni dans le kit. Heureusement, en forçant 'légèrement' il finit par se loger correctement.

Enfin, j'ai ôté à la scie à métaux les deux ergots présents sur la plaque d'expérimentation qui, même si l'auteur de ce système assure l'inverse, ne rentre pas facilement entre les rangées de connecteurs dédiés à cette plaque d'essais.

Malgré ces petit détails il est relativement aisé d'arriver au résultat final en suivant la procédure de montage, pour finalement obtenir ceci :



Quelques remarques utiles pour la première mise en service :
  • Les deux processeurs sont fournis déjà programmés.
  • La carte SD doit être formatée en FAT16 et être d'une capacité de 2Go max.
  • Les fichiers nécessaires au 'boot' de l'appareil, ainsi que divers exemples sont hébergés sur DropBox. Je considère que l'emploi de ce service est une vraie bêtise. Il n'a pas été étudié pour ce genre d'utilisation. Ne soyez donc pas surpris de constater des lenteurs de navigation ni même des erreurs à la demande de téléchargement. Si tel est le cas, réitérez votre demande.
Tous ces préparatifs pour en arriver à :



Je le rappel, ce projet est un projet amateur. J'ai donc constaté quelques petits problèmes suite aux premiers tests.

Tout d'abord une broche du 'processeur graphique' est laissée en l'air. Il s'agit de la patte 10 notée BOEn du P8X32A (le 'processeur graphique' de type 'Propeller' du fabriquant Parallax).
 

Ceci à pour effet de redémarrer le P8X32A si l'on passe la main à proximité de cette patte. C'est plutôt gênant mais très facile à corriger en la connectant à la masse. En ce qui me concerne, j'ai effectué une connection directement sous le dessous du circuit imprimé à l'aide d'un bout de patte de résistance avec la patte 9 voisine notée VSS du processeur P8X32A comme vous pouvez le voir au centre le l'image :

Petite modification facile à réaliser.
Enfin, il semblerait que le 'processeur graphique' ne soit pas en mesure de soutenir la vitesse d'affichage des chaînes de caractères en provenance du processeur Micromite. En effet, ce simple programme devant afficher en continu un chiffre qui s'incrémente

BEGIN:
A = A + 1
PRINT A
GOTO BEGIN

génère des sauts d'incrément à l'écran ainsi qu'une aberration d'affichage à une fréquence régulière. D'après ce qu'il me semble avoir constaté, le buffer de réception du 'processeur graphique' déborde régulièrement et laisse donc passer un certain nombre de caractères. Ce problème sera donc à prendre en compte lors de l'affichage d'un grand nombre d'informations à l'écran, à moins qu'une prochaine version de firmware ne corrige ce problème.

Et puis il sera possible de regretter que ce système ne prenne en compte que le clavier anglais, même si l'on peut se douter que commencer à en gérer une multitude ne soit pas trivial.

LE MATCH

Le meilleur pour la fin : afin de me faire une idée plus précise de la 'puissance' de ce système, j'ai programmé un petit test qui consiste tout simplement à incrémenter une variable de 000 000 à 100 000 sans en afficher la valeur et à comparer le temps d'exécution avec le même programme exécuté sur mon antique TRS-80 PC-2. J'obtiens les résultats suivant :

Temps d'exécution de la boucle.

  • 3 000 secondes pour le PC-2.
  • 23 secondes pour le système Micromite Companion.
Soit un rapport de 130. Impressionnant, non? J'imagine mieux maintenant ce qu'il est possible de créer avec ce Micromite par rapport à ce que j'ai pu faire avec mon PC-2 qui était en sont temps, considéré comme une très bonne machine.


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!