embedded équipements Écriture d'un pilote de périphérique pour Platform Bus dans les systèmes embarqués?



équipements embarqués (1)

J'ai traversé une implémentation de pilote dans Linux Kernel Source et je peux voir qu'il s'agit du pilote de la plate-forme.

drivers/net/ethernet/smsc/smsc911x.c

  static struct platform_driver smc911x_driver = {
    .probe           = smc911x_drv_probe,
    .remove  = smc911x_drv_remove,
    .suspend         = smc911x_drv_suspend,
    .resume  = smc911x_drv_resume,
    .driver  = {
            .name    = CARDNAME,
            .owner  = THIS_MODULE,
    },
};

Ci-dessus, un pilote pour le périphérique de plate-forme (contrôleur Ethernet basé sur smsc) et les périphériques de plate-forme sont des périphériques qui ne sont pas testés automatiquement lors du démarrage du système contrairement aux périphériques hérités installés sur le bus PCI.

Je suppose que cette compréhension de la mienne est OK ici?

Maintenant, quand je dis que ce sont les appareils de la plate-forme, est-ce que cela signifie que ces appareils (contrôleur Ethernet) sont assis sur le bus de la plate-forme et sur l'architecture ARM bus de la plate-forme par défaut est AMBA.

Donc, lorsque nous soudons le contrôleur Ethernet sur une carte basée sur ARM, il devrait être assis ou interfacé avec le bus AMBA?

Comment décidons-nous que le pilote que nous allons écrire est un pilote de plate-forme ou un pilote normal?


De mon expérience limitée dans le développement de pilotes de plate-forme ARM, les périphériques AMBA ont généralement des registres d'identification à la fin de leur interface de registre IO mappée en mémoire.

En règle générale, si vous regardez le manuel de référence pour votre contrôleur ethernet et le résumé du registre spécifie les registres d'identification des périphériques / composants (généralement aux décalages 0xFE0-0xFEC et 0xFF0-0xFFC), vous devez écrire un pilote de bus AMBA. Ces pilotes peuvent être identifiés automatiquement par le conducteur du bus.

Sinon, si l'interface de registre ne spécifie aucun registre d'ID aux décalages 0xFE0-0xFEC et 0xFF0-0xFFC, vous voudrez probablement juste écrire un pilote de plate-forme. Ces périphériques ne peuvent pas être identifiés automatiquement et vous devez attacher spécifiquement un pilote à l'appareil.