Tag : avr

Premiers pas en développement noyau

Je voulais me mettre au développement noyau, mais je ne savais pas par où commencer, alors un sage m’a dit: « pour apprendre rien de tel que de le faire: vous achetez un petit périphérique USB et vous en écrivez le driver. »
Ma réponse a été: « effectivement, je n’y avais pas pensé, en général on utilise la libusb pour ce genre de choses. »

Un périphérique USB

Et voila que quelques jours après, sans avoir trouvé de périphérique sympa je me suis dit, mais pourquoi pas le faire aussi ?
Comme je vous l’ai déjà raconté, j’ai déjà bricolé un périphérique USB: l’USBtinyISP, donc je suis allé rechercher le code original de usbtiny et je me suis monté un petit prototype avec 4 LED et 2 boutons:

Photo de mon prototype

Bon plutôt que d’utiliser un ATtiny, j’ai pris un ATmega8 histoire d’avoir un peu de place pour y ajouter du code plus tard 😉 (l’ATtiny2313 est déjà super plein pour l’USBtinyISP).

Et voila le schéma (en image, les sources gschem sont sous git dans le répertoire sch):

Le schéma

Une fois le montage prêt, quelques lignes de code basées sur l’exemple de tinyusb et hop un firmware pour l’ATmega (à la racine du projet).

Qu’il a fallut tester, hop la première méthode évoquée plus haut, quelques lignes de code avec libusb, disponible dans le répertoire test, m’ont permis de parfaire le firmware 😉

Voila, tout marche, on va pouvoir entrer dans le vif du sujet.

Le gestionnaire de périphérique Linux

En fait j’ai tout simplement suivi et adapté les tutoriels suivants:

En regardant la version de usbled.c présente dans les sources de Linux afin de mettre à jour les derniers détails.

Cela donne un driver qui ajoute les pseudo-fichiers leds et keys dans le répertoire du périphérique déjà créé dans /sys/bus/usb/ par le noyau Linux.

Voila ! Vous je sais pas mais moi j’ai appris plein de choses ! 😉

Tout le code est disponible sous GPL2 et GPL2+ sur mon gitweb: jvdg_usbgadget.git

Pour le nom un peu égocentrique, c’était surtout pour éviter tout risque de conflit, comme de toutes façons ceci n’a pas vocation à être intégré dans Linux (le périphérique utilise un ID USB réservé aux prototypes, donc inutilisable en grande série…)

CPU review: PicoBlaze, LatticeMico32 and ARV clones

The study items are listed on the Open Source CPUs post, especially the category description.

PicoBlase

However wikipedia marked it as open source, it’s not what I call open source hardware! Ok you will have the source code, but you have to register and accept a licence explicitly restrict you to use it only on Xilinx chips to access the download page. Not to count the warning against some possible patented content in each file…
Definitely non-free !

LatticeMico32

I could not find the licence text from the lattice web site. It’s possible to download some LatticeMico32 demo code, but it does not include the license text.

First time I’ve read about LatticeMico32 was in a French GNU/Linux magazine, an article presenting the Milkymist project. So I headed here and there archive contain the licence text from Lattice.
The most important part from our point of view the Appendix C: “Lattice Semiconductor Corporation Open Source License Agreement”.

Note sure about the section 6 ‘export control’, but I guess it’s just repeating something from the US laws (any legal experts reading me?). To me, it looks like a particular case of GPL2 point 7 or 8: the intent is to protect the license not to prevent the use. I mean if it’s illegal, then there is no way a license text will make it become legal !

But overall it looks fairly open to me.

So let’s look at this CPU !

It’s a 32Bits RISC (instruction and data) with no MMU and optional caches. That makes it fit the embedded CPU category.

The lm32 architecture seams to be integrated in binutils and gcc, so no need for extra patch, just build it.

To stay on the Milkymist project, lets consider Navré. This one was created for Building a free OHCI host controller for USB.

So It’s GPL, it’s very new, it’s very small, it perfectly fits the tiny micro-controller category. Let’s wish it good luck.

On the AVR cloning idea, I don’t know Atmel’s opinion on this… If we end up building Arduino clones using open source AVR clones they might argue, but I think for now at least in term of cost and process, we are far from it. (Is there any opens source flash process to build our chips ?)

While we are at it, let’s look a few other AVR clones.

pAVR

Targeted to be a superset of all AVR at its origin, the project has stopped. It has some bugs open and this has not evolved since 2005.

AVR core

This is a clone of AT mega 103. Unfortunately I could not find any licence in the archive… So it can not be considered open source hardware 🙁

AVRtinyX61core

This is a Atmel AVR ATtiny261/461/861 compatible core. LGPL and not updated since Nov 10th, 2008.

Reduced AVR Core for CPLD

AVR core in single verilog file… There is not much info, the project was recently created on opencores and the homepage (from the source header) is in Russian…

Ok that’s all for today 😉

As usual the summary table is there: Open Cpu Study Summary.

ça fait un bail…

Bon, en fait je lis plus que je n’écris depuis que j’ai syndiqué Planet Debian dans mon aggrégateur de flux, gregarious.

J’ai aussi fait quelques changement sur le thème, mis a jours wordpress sans gros soucis. Merci à wordpress et debian.

Pour finir, ce blog est sous titré « electronics » et je n’ai jamais parlé d’électronique jusqu’ici. En revanche j’ai pratiqué. 😉

J’ai cherché des soft pour tracé des schéma et garder un trace de mon travail, dans un premier temps pour moi, puis pour les publier sur ce blog quand il seront prèt.
Un projet qui m’a semblé intéressant: Fritzing mais il semble trop instable, Je ne veux pas dire qu’il plante mais que le format de fichier n’est pas figé. Ce qui signifie que des projets enregistré avec la version d’aujourd’hui ne s’ouvriront peut être plus avec la version de demain.

Donc je me suis tourné vers les outils du gEDA project. À commencer par gschem pour tracer les schéma électronique puis je me suis mis à PCB pour préparer mes cartes.
Je ne fait pas de vrai PCBs, je préfère utiliser des cartes à prototype et y souder pleins de petits fils, mais utiliser PCD avec une grille à 100mil (1mil c’est 1/1000 de pouces soit 0,0254mm) facilite grandement le placement des composants.

J’ai commencer à bricoler avec des micro-contrôleurs AVR de Atmel en utilisant avr-gcc et avr-libc. J’ai commencer par me faire un programmateur d’avrpar usb, l’USBtinyISP. Je publierais les fichiers gschem et PCB un des ces quatres. (ou plus vite si vous me le demandez).

J’allais oublié, J’ai retrouvé un vieux liens sur le Chip Directory. C’est une collection de ficher decrivant le brochage de beaucoup de vieux circuits tels les séries TTL 74xx et les séries MOS 40xx.