Développement de drivers
Qu’est-ce qu’un driver ?
Un driver est un logiciel qui contrôle un composant matériel spécifique. Il permet à ce matériel de fonctionner dans le cadre d’un système informatique. D’un côté, le driver interagit avec l’interface matérielle fournie par le composant. De l’autre, il présente une abstraction du périphérique au système d’exploitation ou aux logiciels applicatifs. Cela permet aux applications d’exploiter le matériel de manière bien plus simple que si elles devaient interagir directement avec celui-ci.
Les principaux défis du developpement de drivers

Implémentation
Les drivers sont étroitement liés non seulement au matériel spécifique qu’ils contrôlent, mais aussi au système d’exploitation et à l’architecture du système informatique avec lesquels ils doivent fonctionner. Cela signifie qu’un haut niveau de connaissance est nécessaire pour développer un driver de qualité.

Robustesse
Étant donné que les drivers accèdent à des couches matérielles très basses, ils fonctionnent souvent avec un niveau de privilège élevé au sein du système d’exploitation. Cela impose une grande responsabilité au développeur, qui doit garantir une robustesse maximale du logiciel.

Cohérence et intégrite des données
Selon le système d’exploitation utilisé, les drivers doivent souvent gérer à la fois des requêtes issues du code applicatif et des événements matériels externes, généralement signalés par des interruptions traitées ensuite par le système d’exploitation et transmises au driver concerné.
Éléments clés à prendre en compte pour le développement de drivers
Connaissance du matériel
Il est essentiel de disposer de toutes les spécifications du matériel que le driver devra contrôler. Ces informations sont généralement fournies par le fabricant sous forme de datasheet. Une bonne connaissance générale de l’architecture et du matériel est également indispensable.
Concepts OS
Les drivers fonctionnent généralement en étroite collaboration avec le système d’exploitation. Les développeurs de drivers doivent avoir une connaissance approfondie des concepts liés aux systèmes d’exploitation, y compris celui qui est visé, ainsi que des frameworks de développement de drivers qu’il propose.
Outils de débuggage
En raison du niveau de privilège élevé dans lequel les drivers s’exécutent, leur débuggage peut s’avérer particulièrement complexe lorsque les choses ne fonctionnent pas comme prévu. Il est donc crucial de posséder de solides compétences en débuggage. Certains systèmes d’exploitation proposent des outils pour aider dans cette tâche, mais savoir improviser reste indispensable.
SUCCESS STORY
Optimisation des couches applicatives et des drivers pour les équipements médicaux de Firstkind
Firstkind a fait appel à Witekio pour résoudre un problème sur une application qui multiplexait quatre canaux UART sur un seul bus CAN, et inversement. L’application manquait de fiabilité et subissait des dépassements de mémoire tampon (buffer overrun), même sous de faibles charges de données. Elle n’était pas robuste. La solution a consisté à modifier les couches applicatives et les drivers pour améliorer leur efficacité, en utilisant le DMA et une gestion des interruptions plus optimisée. Résultat : le système peut désormais fonctionner en continu sous de fortes charges de données, sans aucune erreur.
Nous développons des drivers depuis des décennies
Witekio dispose de plusieurs ingénieurs logiciels hautement qualifiés, capables de travailler sur le développement de drivers pour différents systèmes d’exploitation (OS).
Notre expertise en logiciel embarqué

Votre partenaire de confiance en logiciel embarqué, applications et connectivité
4 Pays
4 pays
certifies ISO 27001
certifies ISO 27001
