Bien que je comprenne chacun (ou peut-être pas), je suis loin de comprendre les différences pratiques entre les deux.
Si je comprends bien, un BSP est un ensemble de pilotes et de paramètres de configuration qui permet à une image du noyau de démarrer une carte (qui en fait partie) . Le pilote de périphérique individuel, fonctionne sur un composant spécifique (HW), d'un côté avec le noyau et de l'autre côté avec le périphérique lui-même.
En regardant le noyau Linux, il m'est difficile de savoir où commence le rôle BSP et où se termine le rôle de pilote de périphérique. Plus précisément, je suis habitué à voir un BSP par carte par image. Toutefois, le noyau Linux générique peut être chargé sur n’importe quelle famille d’architecture possédant la même image (il est clair que, pour différentes familles, il existe différentes images: x86, AMD64, etc ...), où les pilotes spécifiques de carte et de périphérique sont chargés au besoin à partir de initrd.
Existe-t-il un BSP pour les distributions communes du noyau Linux? Ou le BSP est-il pertinent uniquement pour les cartes de cas particulier?
Ce comportement est-il similaire sur d'autres noyaux? VxWorks?
Et le dernier, est-il courant de fusionner différents BSP/s afin de générer une seule image qui conviendra à différentes cartes?
Je vois la relation entre les BSP et les pilotes de périphériques comme "has-a". Les packages de support de carte incluent les pilotes de périphérique.
Les différences entre les BSP et les noyaux ne sont pas faciles à distinguer. Un noyau traduit les instructions en matériel. Les noyaux sont souvent écrits en familles particulières de matériel , donc ils ne sont pas aussi portables ou génériques qu'ils le paraissent. Cela revient à différentes permutations du code pour chaque famille d'architecture.
Le BSP agit comme une sorte d'inverse: il fournit les outils et les instructions nécessaires pour utiliser le matériel spécifique de cette carte. Dans des situations spécifiques et contrôlées, le noyau pourrait effectuer ce travail. Mais le BSP permet à n’importe quelle pile noyau/système d’exploitation/application compatible d’utiliser cette carte, en suivant ses instructions de configuration }.
Si vous avez juste besoin d'accéder à des cycles de calcul et à de la mémoire, peut-être à quelques protocoles (USB, Ethernet, quelques types de vidéo), un noyau prenant en charge une architecture étendue est fantastique, et il fut un temps où l'étendue de cette abstraction matérielle était inestimablement appréciée. . Mais maintenant, considérons que la carte peut avoir une suite de capteurs (accéléromètre, magnétomètre, gyroscope, lumière, proximité, pression atmosphérique, etc.), en téléphonie, il peut y avoir plusieurs processeurs, plusieurs GPU, etc. . Un noyau peut être écrit pour fournir VGA/DVI/HDMI/DisplayPort, ainsi que plusieurs permutations de combinaisons processeur/GPU, si/quand quelqu'un utilise ces packages matériels particuliers, mais il n'est pas pratique d'écrire un support pour tous les contextes théoriques, par rapport à l'utilisation d'un BSP conçu pour un tableau spécifique. Et même alors, ce serait pour un noyau; le conseil est capable de supporter Linux, Windows, Android, Symbian, peu importe.
C'est pourquoi des efforts comme Yocto _ existent pour découpler davantage le noyau et le matériel. BSP rend les ensembles matériels extensibles au-delà d'une pile noyau/os/app ou deux, tandis que les noyaux rendent une pile os/app particulière portable sur plusieurs architectures matérielles.
D'après mon expérience, BSP a une portée beaucoup plus grande. cela inclut le chargeur de démarrage, les rootfs, le noyau et les pilotes, etc., ce qui signifie qu'un BSP permet à votre carte de s'initialiser. Les pilotes font fonctionner les appareils et ne sont qu’une partie de BSP.
Drivers n'est pas égal à BSP.
Aujourd'hui, les choses sont modulaires pour augmenter la capacité de réutilisation, le développement logiciel pour les systèmes embarqués se décompose normalement en trois couches.
Board Support Package (pilote de périphérique) est une couche logicielle qui change avec chaque carte en conservant les deux autres couches logicielles.
L'ensemble de support de la carte inclut tout ce qui est nécessaire pour utiliser la carte par une application. Ceux-ci incluent des pilotes de périphérique pour les périphériques de la carte et un logiciel utilitaire pour les programmeurs d'applications. Un environnement de fenêtrage est également disponible sur des panneaux multimédia. Les ingénieurs système peuvent en outre ajouter des extensions à la carte. Certaines applications nécessitent de ré-implémenter une partie du bsp pour des améliorations. Ici, bsp joue le rôle d'une implémentation de référence ou un point de départ pour de telles exigences.
La confusion réside dans le modèle d'entreprise. La carte de référence ou de développement n’est pas un produit final/grand public, comme un appareil mobile. Il joue un rôle important dans la conception et le développement d’un produit tel que l’iPhone ou le Samsung Galaxy.
Un bsp générique manquera d'optimisation dans la plupart des cas, vous ne pouvez donc vous attendre qu'à un bsp générique pour le modèle pour débutant ou à une optimisation laissée. Dans le cas des panneaux bon marché, le bsp est assez générique car le producteur investira moins dans ce produit.
Ne insistez pas beaucoup sur les termes noyau et espace utilisateur, car il existe également des micro-noyaux. Ici les pilotes font partie de l'espace utilisateur! Encore une fois, pensez à une carte basse consommation qui ne contient qu'un seul élément de code sans noyau. Cela revient donc à un logiciel qui aide le conseil à faire son travail.