Une carte électronique à base de micro-processeur peut être vue comme une succession de couches, soit du bas vers le haut :
– le circuit imprimé
– les puces interconnectées
– le logiciel de chaque puce (firmware)
– le programme de bas-niveau spécifique au matériel
– le système d’exploitation adapté pour ce programme
– les machines virtuelles (VM) dédiées au système d’exploitation
– les applications dédiées au système d’exploitation
– les applications indépendantes de la carte utilisant une VM
Nos projets se déroulent habituellement dans les trois dernières couches les plus hautes, soit par compilation directe, soit par cross-compilation, soit par machine virtuelle.
Mais il est très intéressant de regarder pour une fois ce qui se passe entre le micro-processeur et le système d’exploitation : malgré tout le talent des développeurs de Windows ou de GNU/Linux, un seul système n’est pas totalement compatible quel que soit le matériel utilisé, même à l’intérieur d’une famille de processeurs (x64, x86, ARM). Il faut une couche logicielle de bas-niveau qui permet de connecter chaque périphérique de la puce (de plus en plus de processeurs sont des SoC ou "system on chip", avec une multitude de circuits embarqués dans une seule puce) et chaque périphérique ou entrée/sortie de la carte.
Dans certains cas, on peut disposer d’un système logiciel bas-niveau complet permettant de développer au plus près des firmwares matériels, c’est le Board Support Package.
Pour la Raspberry Pi, comme pour d’autres projets open source, ce sont des dizaines d’échanges entre développeurs du projet et de bénévoles extérieurs que l’on peut retrouver ainsi "mixé" en un package logiciel (presque) achevé et mis à disposition sur des plateformes de partage de source. Ainsi le BSP de la Raspberry Pi est disponible sur GitHub.
Le principe de ce BSP est de fournir des "recettes" de fabrication (ou "recipes"), pas les ingrédients que l’on retrouve dans des firmwares dédiés à chacun des périphériques, ou écrits de manière générique dans le noyau de la distribution que l’on a choisi.
En particulier, le BSP sépare chaque partie (le noyau, le réseau, la vidéo, etc.) et liste les fonctionnalités disponibles avec des options d’assemblage. S’agissant d’un SoC, le code réel se trouve dans le firmware de la puce Broadcom 2835, utilisé comme image binaire dans l’une des recettes du BSP.
On utilise ensuite des outils d’assemblage tels OpenEmbedded. L’étape suivante est d’intégrer une distribution dédiée pour l’embarqué, comme l’Ångström que l’on retrouve sur nombre de cartes ARM / OMAP utilisées dans notre domaine : Beagle Board, Gumstix, Panda board, etc.
Mais retenez bien que pour 99% des usages amateurs avec la Raspberry Pi, une distribution classique comme la Debian répondra à toutes les attentes sans aller creuser jusqu’au BSP. Cet article est là juste pour vous montrer ce qui se trouve de l’autre côté du miroir afin de satisfaire une curiosité légitime, car il est peu probable qu’on utilise ce BSP pour nos projets.
Vos commentaires
# Le 28 novembre 2012 à 21:43, par dépret En réponse à : Logiciel bas-niveau de la Raspberry Pi
boujour,
nous souhaitons programme en c sur le rasberry .
cependant nous ne savons que prendre comme logiciel.
nous somme sur le os raspbian pour le rasberry PI GPIO
cordialement
christophe dépret
# Le 29 novembre 2012 à 21:47, par Julien H. En réponse à : Logiciel bas-niveau de la Raspberry Pi
Il suffit de lire le bon article ! Tout y est expliqué : Entrées/sorties GPIO sur Raspberry Pi
Répondre à ce message