Premier boot avec carte Olinuxino et simulateur Ti

Afin de réaliser les premiers tests, nous avons acheté une carte olimex, une oliunxino imx233 micro. Elle utilise le même processeur que celui que nous prévoyons d’utiliser. Nous pourrons donc l’utiliser pour réaliser des tests de fonctionnement de l’écran, du clavier, ainsi que de la partie logicielle (simulateur Ti, distribution linux, drivers…).

Nous avons pu réaliser un premier test de boot avec cette carte, un écran, notre clavier et notre émulateur Ti.

Sur cette vidéo, l’émulateur Ti est particulièrement lent. Je pense que nous allons trouver la solution à cela.

Simulateur libre Ti

A part l’électronique on aime aussi coder !

tiEmuCode

Afin de ne pas déstabiliser les utilisateurs de calculatrices Texas Instruments, nous avons décidé de coder un petit simulateur libre de l’interface d’une Ti-82 stat, avec la bibliothèque SDL. Ce simulateur pourra ainsi s’afficher directement dans le framebuffer linux. Il ne nécessite pas de rom ti propriétaire, et n’émule pas l’architecture z80, car nous avons recordé nous même de zéro le système de zéro afin qu’il fonctionne sur notre architecture et qu’il soit libre (il ne contient aucun travail propriété de Texas Instrument). N’hésitez pas à télécharger le code sur la page Téléchargements.

Au jour d’aujourd’hui, l’état du projet permet de réaliser les calculs les plus courants, d’afficher une courbe, ainsi que d’exécuter certains jeux en ti-basic, y compris des jeux développés par d’autres pour la calculatrice Ti-82, au format .82p ou .83p.

Nous continuerons à développer ce simulateur afin qu’il finisse par avoir toutes les fonctionnalités d’une vraie calculatrice Texas Instruments.

Vous pouvez télécharger les sources sur github:

https://github.com/LibreCalc/ti
tiEmu

 

Réalisation d’une image système pour ARM : U-boot / Linux / Debian

Aujourd’hui, nous allons travailler sur la partie système de notre calculatrice. L’objectif est de pouvoir lancer nos propres logiciels et de proposer suffisamment de souplesse pour que l’utilisateur puisse lui aussi adapter le système à ses besoins.

Depuis le début du projet, nous souhaitions utiliser un noyau Linux. C’est certainement le noyau libre le plus répandu. En choisissant Linux, nous sommes certains de trouver de la documentation et de l’aide en cas de besoin, en particulier lorsqu’il faudra mettre les mains dans le code pour supporter nos propres périphériques ! C’est aussi certainement le noyau qui supporte le plus de fonctionnalités, et le plus de matériels. De plus, le design de notre board est fortement inspiré de celui d’une Olinuxino Micro, qui utilise un SoC iMX.233.  Ce SoC semble bien supporté par Linux, nous espérons donc une mise en place sans surprise du noyau Linux sur notre board.

C’est donc décidé pour le noyau. Nous pourrions ensuite choisir de lancer directement notre émulateur de TI-83, ou un autre logiciel, directement après le boot du noyau Linux. Mais au contraire, l’intérêt de notre matériel est de fournir un système standard, sur lequel l’utilisateur pourra se sentir à l’aise et en terrain connu. Quoi de mieux alors, pour la distribution logiciels, que Debian ? :-) N’importe quel logiciel ou presque, à portée de apt-get !

Il reste une composante importante du système à déterminer, le bootloader. En effet, le mécanisme de boot du SoC ne permet pas d’amorcer directement sur le noyau Linux. Il faut un composant logiciel intermédiaire, légé, qui chargera le noyau Linux en RAM puis l’exécutera. Le bootloader offre aussi de la souplesse pendant la phase de boot : pouvoir charger le noyau depuis le réseau, depuis une clé usb, sur une partition en FAT32 ou en ext4… Ces fonctionnalités peuvent être utiles !

Notre choix se porte sur U-Boot. En effet, U-Boot est également très répandu, en particulier sur le matériel embarqué, plutôt bien documenté et supporte notre board de référence, la Olinuxino Micro.

En résumé, notre système est constitué de trois composantes :

  • U-Boot, le bootloader. Charge le noyau Linux en RAM et l’exécute.
  • Le noyau Linux. Supporte les périphériques présents sur la board.
  • Debian, la distribution logiciels.

Continuer la lecture

Réalisation du clavier

Premier proto clavier

Le clavier est un élément important. Notre calculatrice est avant tout un ordinateur embarqué, il lui faut donc un clavier complet pour ne pas limiter l’usage qu’on pourrait en faire. Pour la disposition des touches, l’idéal serait de reprendre le layout d’un clavier Azerty, type IBM PC, et de retirer les touches qui ne sont pas indispensables. Par contre, ce layout n’est pas adapté à l’utilisation « calculatrice ». Dans ce mode, il faudrait que les touches numériques et les touches correspondant à des fonctions mathématiques soient facilement accessibles. On réalisera cela avec un layout supplémentaire sur le clavier, et ce layout sera activé au moyen d’une touche spéciale.

Passons maintenant à la technique ! Pour réaliser notre clavier, il nous faut :

  • De quoi capter les frappes de l’utilisateur
  • De quoi transmettre ces signaux au microprocesseur de la board
  • Depuis l’OS, savoir associer une frappe à un caractère, et savoir gérer les touches spéciales (CTRL, SHIFT, MAJ…)

Continuer la lecture

Premières réalisations clavier, module noyau et cross-compilation

clavier_raspberry

On s’intéresse aujourd’hui à la réalisation d’un clavier physique fonctionnel sous Linux. Ce projet doit nous servir de référence pour le développement des futurs claviers de notre calculatrice. Comme d’habitude, nous allons aller au plus simple, des conseils seront donnés en fin d’article pour le lecteur qui souhaiterait aller plus loin et perfectionner le clavier présenté ici.

Pour tester notre clavier, nous allons utiliser une Raspberry Pi. Le clavier sera branché sur des GPIO, l’objectif sera d’écrire dans un terminal avec notre clavier !

Continuer la lecture