Linux sur la calculatrice Nspire

Depuis de nombreuses années, beaucoup d’enthousiastes s’affairent autour des calculatrices de Texas Instruments, car elles permettent des formes évoluées de programmation en C et en assembleur (c’est avec ces calculatrices que j’ai débuté la programmation dans ces langages, pendant mes années de prépa…). De nombreux jeux et programmes utilitaires ont été développés, malgré les nombreuses restrictions mises en place par Texas.

Plus récemment, Texas Instruments a cessé de développer sa gamme de TI-89 et TI-92+ pour sortir un nouveau modèle, bien plus puissant que l’ancien: la gamme des TI-Nspire. Cette calculatrice est restée longtemps hors d’accès de la communauté des développeurs indépendant, jusqu’à ce que le voile se lève peu à peu, aboutissant au projet Ndless, qui permet d’écrire des programmes en C et assembleur sur cette calculatrice.

TI-68k TI-Nspire
Apparence  TI-89v200 ti-nspire
CPU  68000 @ 16 MHz  ARM926 @ 90 MHz
Mémoire RAM  256 kB  32 MB
Mémoire Flash  2/4 MB  32 MB

Table: Comparaison des générations de calculatrices TI programmables

 

Avec ces capacités nettement plus évoluées, des projets de plus grande envergure ont pu alors voir le jour, tels que des centaines de jeux et utilitaires de grande qualité, mais également un émulateur de Game Boy, sublimé par la version couleur de la NSpire, et plus récemment: Linux.

C’est effectivement Linux qui a pu être porté par “tangrs” en Novembre 2012, un des développeurs les plus actifs de la communauté NSpire.

Aujourd’hui, j’apprends que nspire-linux va supporter l’architecture “device tree” qui vise à créer un Linux universel pour tous les ARM (de la manière à ce qui existe aujourd’hui dans le monde du PC), et que le prochain but est l’intégration officielle de la version nspire dans le Linux “Standard” (mainline).

Mes plus grandes félicitations à tous ces développeurs passionnés et acharnés. Pour les avoir suivi, je sais que la route a été longue.

Publication de SDCC 3.3.0 et gputils 1.2.0

Une nouvelle version de SDCC, le compilateur C pour PIC18, Z80, MCS51 et dérivés vient d’être publiée. Elle corrige de nombreux bugs et génère du code encore meilleur.

Pour les PIC18, il est conseillé d’utiliser simultanément les outils PIC libres gputils en version 1.2.0 qui a été publié il y a quelques jours.

Ensemble, ces deux logiciels permettent de développer facilement en C pour PIC18, même si le code généré est loin d’être optimal.

Utilisez les liens de l’article pour télécharger ces deux nouveaux logiciels, disponibles pour windows 32 et 64 bits, ainsi que pour Linux et mac.

 

La Stellaris Launchpad se transforme en Tiva-C Series Launchpad

De retour sur le site de Texas Instruments après quelques mois sur d’autres projets, je découvre quelques news du mois d’Avril.

Les processeurs LM4F de la Stellaris Launchpad ont disparu, ils ont été remplacés par une nouvelle ligne de composants nommés Tiva-C Series. Leurs caractéristiques sont identiques, ce sont des Cortex-M4F à 80 MHz avec un max de 256k de flash et 32k de RAM, et quasiment les mêmes périphériques.

Par contre, bonne nouvelle, les processeurs eux mêmes seront bientôt disponibles à l’unité, et des cartes de développement à bas coût compatibles avec les Stellaris Launchpad Tiva-C à 12 dollars sont disponibles!

Un petit doute m’a inquiété, les logiciels que j’ai commencé à développer, et les codes disponibles pour la Stellaris Launchpad seront ils encore utilisables? La réponse est Oui, et la réponse m’est arrivée directement du compte twitter officiel de Texas Instruments:

No change required.
No changes required.

Alors OK, je n’ai aucune intention d’utiliser leurs “machinWare” dont on ne maîtrise pas grand chose, mais c’est déja une bonne nouvelle: les logiciels compilés pour la Stellaris Launchpad (LM4F) fonctionneront pour la Tiva Launchpad (TM4C)

Donc pas de souci, vous pouvez acheter la nouvelle Tiva Launchpad sans regret, les logiciels resteront compatibles.

Quelle est la meilleure toolchain pour ARM embarqué?

Sur le web, on trouve plusieurs toolchains ARM, qui peuvent être toutes utilisées pour programmer des cartes embarquées. Voici les principales:

  • YAGARTO (yet another arm toolchain)
  • buildroot
  • CodeSourcery (Sourcery CodeBench)
  • linaro (toolchain “officielle”)
  • GNUARM
  • WinARM

Toutes ces toolchains sont subtilement différentes:

  • CodeSourcery ne supporte pas les FPU (floating point unit) des Cortex-M4, et n’offre aucun support pour les utilisateurs de la version gratuite depuis le rachat de cette société par Mentor Graphics
  • WinARM et GNUARM sont préhistoriques, peu maintenues, etc
  • buildroot est prévue pour être utilisée dans l’environnement du même nom, et n’est pas toujours facile à obtenir séparément
  • C’est très pénible de compiler soi même une toolchain GCC complète

linaro est produite principalement pour les plate formes Android et Linux, et elle supporte les Cortex M4 (STM32, Stellaris etc). Son grand avantage est d’être supportée directement par la société ARM elle même, mais elle met 3 ou 4 fois plus de temps que les autres à compiler un programme. Pour un petit programme, cela peut sembler peu important, mais dès qu’on touche un projet plus volumineux, cela peut devenir pénible. De plus, elle inclut par défaut le support des exceptions C++, ce qui est totalement inutile sur les plate formes embarquées à mémoire réduite.

Pour regrouper le meilleur de ces mondes, Freddie Chopin, un expert en logiciel embarqué ARM très actif dans le monde open source /logiciel libre , a décidé de compiler et de distribuer sa propre toolchain, basée sur les paquets de la toolchain “officielle” linaro, mais en utilisant les options de constructions de CodeSourcery. Le résultat est doté de ces caractéristiques:

  • Plus rapide que Linaro,
  • Elle est compilée avec le compilateur le plus récent pour windows, mingw-w64 (et avec gcc sous linux)
  • Les paquets de base (le compilateur, newlib, gdb et binutils) proviennent directement des projets officiels, et utilisent les révisions les plus récentes,
  • Les autres composants (librairies requises pour la compilation de la toolchain, comme gmp, mpfr, mpc) sont les plus récentes versions stables (sauf si la documentation recommandait une version spécifique),
  • Les exceptions C++ ne sont pas activées (bien qu’une version avec les exceptions soit en préparation),
  • Toutes les librairies cibles sont fournies non strippées, donc avec toutes leurs infos de débogage (ce qui est pratique pour approfondir le débogage de ses propres programmes),
  • la librairie newlib est compilée avec l’option reent-small pour économiser de l’espace de pile.

Ces options sont très intéressantes pour l’efficacité des programmes ARM embarqués.

Cette toolchain est appellée “bleeding edge toolchain”, et elle est téléchargeable pour windows 32 et 64 bits, et pour linux 64 bits, sur le site sourceforge.

Je recommande son utilisation pour tous les projets ARM embarqués.

Des parties de cet article sont basées sur la traduction de cet article original (en anglais).