La prolifération des systèmes embarqués conduit à l'utilisation des SoC (System on Chip) qui peuvent intégrer de nombreux contrôleurs de bus (I²C, SPI, GPIO, réseau, etc.) sans pour autant utiliser les bus standards comme PCI ou USB. Au niveau du noyau Linux, ces périphériques intégrés utilisent le modèle « platform device/driver ». Nous allons donc expliciter ce modèle sur quelques exemples simples, dont un test adapté à la carte Raspberry Pi.
Introduction
Nous avons plusieurs fois évoqué l'écriture des pilotes de périphériques dans Open Silicium (voire même dans GNU/Linux Magazine) et ce depuis plusieurs années. Plusieurs articles récents ont été écrits pour les périphériques USB [1], PCI [2], ainsi que pour I²C ou SPI [3]. Tout cela est un échantillon assez représentatif des bus que l'on trouve dans les systèmes actuels même s’il n'est pas exhaustif.
Il existe plusieurs types de périphériques liés aux types de bus. Un périphérique USB ou PCI est dit découvrable ce qui signifie qu'il manifeste « automatiquement » sa présence dès qu'il apparaît dans le système (voir les messages du noyau à l'insertion d'un périphérique USB) et il en est de même si l'on retire le périphérique. Dans ce cas, on parle d'énumération et de hot-plugging. Ce point est lié aux capacités matérielles du bus utilisé.
D'autres bus comme I²C ou SPI (et a fortiori des GPIO) ne permettent pas la...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première