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

Premier circuit linux, avec kicad

Nous allons essayer de réaliser un premier circuit sur lequel linux pourra booter, condition indispensable à la réalisation de notre calculatrice libre.

Nous avons tout d’abord décidé d’utiliser comme logiciel de conception électronique Kicad. Car c’est le logiciel libre le plus performant et le plus utilisé pour réaliser cette tache. Il est de plus dans une phase de développement rapide, car le CERN investit du temps pour son développement, et a proposé notamment une fonctionnalité push and shove des plus prometteuses.

Concernant la conception de notre circuit, nous avons décidé d’utiliser le processeur imx233, car il parait simple à utiliser, il est facile à se procurer,  il existe un package lqfp facile à souder et de nombreux designs de références existent pour ce processeur :

Malheureusement, il n’existe aucun circuit routé et libre d’imx233 utilisant kicad. Ceux de Olimex sont libres mais utilisent Eagle, un logiciel non-libre, ce qui va à l’encontre des principes de ce projet. Il existe par contre une librairie Kicad pour le imx233 réalisée par Opendous. Nous les remercions beaucoup pour cela car ça nous a été très utile.

La première étape a été de réaliser la partie schémas électroniques avec kicad (eeschemas) . Nous relions la ram au processeur grâce à des liens symboliques (sur le schémas, ce sont les rectangles en forme de flèches rouge).

firstCircuitschem1firstCircuitschem2

La partie comptant tous les condensateurs de découplage a été mise dans une autre feuille afin de rendre le schéma principal plus lisible.

Une fois la partie schéma électronique réalisée, on passe à l’association des empruntes.

Nous avons décidé de router ce circuit en deux couches. Cela ne semblait pas être un problème pour le fonctionnement du circuit et cela paraissait plus simple dans un premier temps. N’étant pas électroniciens, c’était la première fois que l’on routait un circuit deux couches. Le routage a été long et un peu compliqué mais nous avons fini par réussir.firstProtoCircuit

Nous avons envoyé le circuit a la production, et l’avons reçu en quatre exemplaires.

Concernant la réalisation du circuit, nous avons eu au début du mal à le souder de manière fiable à la main, puis nous avons trouvé des techniques permettant de le souder facilement chez nous, ne nécessitant pas de matériel spécialisé. Nous écrirons un article à ce sujet dans le futur.

Une fois soudé, nous avons tenté d’alimenter le circuit et de voir ce qui arrivait sur le port UART grâce à un convertisseur usb-uart de type umft230xb. Dans un premier temps sans avoir inséré de carte SD dans le circuit.

Tout d’abord rien ne se passait, ou plutôt il n’y avait sur l’UART que des symboles bizarres. Nous nous sommes rendu compte que nous avions oublié dans les schémas un condensateur de 100nF sur VDDXTAL, qui est donc très important et sans quoi le imx ne fonctionnera pas.

Une fois cela réalisé, nous avons réessayé, toujours sans carte SD insérée. Nous avons alors obtenu sur l’UART  » 0x8020a014 « .

01-circuit

Ensuite nous avons eu du mal à formater la carte SD comme il le fallait afin qu’elle soit reconnue comme bootable par la imx 233. En effet, avec un formatage en MBR tel que celui proposé par Olimex nous obtenions l’erreur  » 0x8020A007 « .

Nous avons trouvé des scripts afin de formater la carte SD correctement. Ces scripts sont disponibles sur la liste de diffusion d’opendous. Afin de formater correctement une carte SD, il convient d’exécuter les scripts dans cet ordre:

perl ./write_bootstream.pl u-boot.sb /dev/mmbclk0
perl ./bootstream_make_bootable.pl u-boot.sb /dev/mmbclk0

Finalement après avoir réussi à formater la carte SD correctement, nous obtenions « HTLC » puis le circuit rebootait avec u-boot.

Nous avons à ce point demandé de l’aide sur le forum de freescale

https://community.freescale.com/thread/320520

Nous somme finalement arrivé à la conclusion, grâce aux personnes qui nous ont aidé sur ce thread, qu’il nous fallait refaire un circuit avec un meilleur routage si nous souhaitions espérer qu’il puisse booter.

Télécharger les sources du circuit non-fonctionel: firstProto.tar

Une calculatrice libre, réalisée avec des logiciels libres, utilisant des logiciels libres, et dont le materiel est publié en open-hardware.