dimanche 22 décembre 2013

xmos startKIT

Au mois d'octobre via un lien sur le site hackaday.com j'ai découvert l'existence d'une compagnie localisée à Bristol (G.B.) et ses MCU xcore. Le lien faisait référence à ceci. A ce moment j'ai jeté un coup d'œil et j'ai lu la documentation de présentation des xcore. Je me suis dit alors que puisque la carte startKIT était offerte gratuitement je pouvais bien m'inscrire pour en avoir une.

Il y a quelques jours j'ai trouvé le startKIT dans ma boite à lettres. gracieuseté de XMOS, jeune compagnie fondée en 2005. Le marché des microcontrôleurs est déjà saturé d'offres et occupé par de gros joueurs. Quel sont les chances d'une startup de réussir dans ce domaine? Mais XMOS a maintenant plus de 8 ans et ils sont encore là. D'après leur site la croissance des ventes est de 30% semestre après semestre et ils ont trouvé des investisseurs prêt à y mettre 14 millions supplémentaire.

De tout évidence le produit a rencontré un besoin. Mais les géants du domaine ont surement remarqué son existence et je ne serais pas surpris de voir Microchip mettre en marché avant la fin de 2014 un produit en mesure de concurrencer les xcores. Il y a déjà des rumeurs à propos de PIC32 fonctionnant à 400Mhz et multi-cores. Après le multithread et multi-core sur les CPU d'usage général on l'a maintenant sur les MCU.

Qu'est-ce qui distingue les xcores?

Il sont multi-thread et muli-core (32 bits). La compagnie XMOS parle plutôt de multi-core logique et de tuile (tile). Les cores logiques ne sont pas des cores complets comme ceux du propeller de Parallax. Sure une tuile il peut y avoir jusqu'à 8 core logique mais il n'y a qu'une seule Unité Arithmétique et Logique (UAL). Un seul thread est en exécution à un moment donné. Un core logique n'est en fait qu'un ensemble de registres de sorte qu'il n'est pas nécessaire de sauvegarder les états en passant d'un thread à l'autre. Il n'y a donc pas de délais de commutation lorsque l'exécution passe d'un core logique à l'autre. Conceptuellement c'est très semblable à ce que Intel appelle le multi-thread sur ses CPU.

J'ai parlé de tuile (tile). Celle-ci est en fait un core complet, UAL, céduleur, mémoire RAM, minuterie, commutateur xCONNECT, accès aux périphériques, etc. Les xcores les plus puissants on jusqu'à 4 tuiles avec 8 cores logique chacune pour un total de 32 threads indépendants. Ces MCU ont une performance de 400 à 1000 MIPS/tuile dépendant des modèles.

Ce n'est pas la seule particularité des xcores. En autre les périphériques simples comme les UART, SPI, I2C et PWM sont définis en software. Au niveau hardware il n'y a que des sérialiseur et désérialiseur. Avec un MCU qui fonctionne à 500Mhz définir ces périphériques en software ne pose aucun problème. Pour les fonctions analogiques il y a un bloc ADC sur certains modèles. Le développeur n'a cependant pas à se tracasser avec la programmation de ces périphériques puisque XMOS les fournis gratuitement sous le nom générique xSOFTip.

xCONNECT

le xCONNECT est une autre particularité des MCU xcore. Il s'agit de lien de communication commutés entre tuiles, core et MCU. Il est donc possible de créer un réseau de MCU. Imaginez la puissance de calcul d'une carte avec 64 MCU xcore reliés en réseau. Les liens xCONNECT peuvent fonctionner en mode lent en utilisant 2 fils ou en mode rapide en utilisant 5 fils. Et je le rappelle il s'agit d'un réseau commuté. Chaque tuile possède un commutateur qui redirige les paquets au besoin à l'interne vers les cores et les autres tuiles mais aussi vers l'externe. Si vous avez envie de vous fabriquer une machine pour générer des bitcoins un réseau de xcore serait une solution intéressante.

startKIT

Pour en revenir au startKIT il s'agit d'une carte de 90mm X 50mm, avec un MCU XS1-A8A-64-FB96. Ce MCU possède une seule tuile avec 8 core logiques et un bloc convertisseur Analogique/numérique 10bits. La tuile contient 64Ko de RAM. Cette RAM contient programme et données. Il n'y a pas de mémoire flash sur ces MCU, les programmes sont enregistrés dans une mémoire flash externe avec interface SPI. Celle qui est sur la carte a une capacité de 256Ko et contient un programme démo préinstallé. Il y a un bootloader en ROM qui au démarrage du MCU charge en RAM le programme à partir de la flash SPI externe.

On retrouve sur la carte 11 LEDs dont 9 forment une grille 3x3. Un bouton momentané et 2 zone tactiles à 4 segments chacune, slide X et slide Y.

Au niveau de la connectique il y a un connecteur micro-USB qui sert à alimenter la carte, la programmer et la déboguer. Sur le côté opposé un il y a connecteur de type PCIe qui est utilisé avec des cartes vendu par XMOS. A côté du connecteur USB il y a 2 rangés de trous (J3) pour installer un connecteur compatible avec le Rasberry Pi. Il y a d'autres rangés de trous pour installer d'autre connecteurs J2 pour les entrées ADC, J8 pour les interfaces xCONNECT, J7 pour les GPIO et J6 pour les alimentations.

xTIMEcomposer studio

L'environnement de développement xTime composer studio est disponible gratuitement à condition de s'enregistrer. Il est basé sur Eclipse et fonctionne sous Windows, Mac et Linux.

A ce moment ci je n'ai encore rien programmé pour cette carte, j'en suis encore à lire la documentation et à me familiariser avec l'IDE. Je me demande encore ce que je vais faire avec une carte aussi puissante.

Aucun commentaire:

Publier un commentaire