2010-07-29 7 views
1

Je travaille avec BSP (Board Support Package) dans VxWorks qui utilise pciAutoConfig() pour configurer le bus PCI. Lorsque j'ajoute une carte contrôleur Ethernet au bus, les routines d'affichage PCI ne montrent pas la carte. En utilisant un analyseur de bus, j'ai découvert que la carte Ethernet se compose en fait d'un pont PCI-PCI avec deux contrôleurs Ethernet derrière le pont. Il semble que le BSP ne gère pas correctement le pont PCI-PCI que contient le contrôleur Ethernet.Comment configurer un périphérique de pont PCI-PCI dans VxWorks?

Ma question est, quelle bibliothèque et configurations dois-je regarder pour configurer le pont PCI-PCI? Je pense que ces appels iront dans sysHwInit(), où les appels pciAutoConfig() existants sont. PciAutoCfgCtl() a un paramètre PCI_BRIDGE_PRE_CONFIG_FUNC_SET qui pointe vers une fonction définie par l'utilisateur pour configurer le bus.

Est-ce la seule méthode? Ou y at-il quelque chose dans les bibliothèques VxWorks qui peut le faire pour moi?

Répondre

2

Je pense que l'examen des routines d'auto-configuration PCI spécifiques à BSP est la solution.

Le pont PCI-PCI de votre carte réseau est-il correctement recensé? Est-ce que les fenêtres primaires et secondaires ont du sens? L'espace mémoire PCI global est-il suffisant pour inclure l'espace requis pour le bus secondaire sur lequel se trouvent les puces du contrôleur Ethernet? Sinon, vous devrez peut-être augmenter la valeur PCI_MEMIO32_SIZE_SET.

Si l'énumération du pont sur la carte n'est pas correcte, vous devez pouvoir configurer manuellement le pont en ajoutant du code à la routine sysPciAutoconfigPreEnumBridgeInit() du BSP.

Le BSP fournit-il une routine sysPciAutoconfigInclude() qui va énumérer les unités de contrôleur Ethernet sur la carte réseau par défaut? Si ce n'est pas le cas, vous devrez ajouter les dispositifs de contrôleur Ethernet sinon ils seront ignorés pendant le cycle d'énumération.

+0

Merci, Le BSP appelle la bibliothèque pciAutoConfig de VxWorks. Cela fonctionne bien lorsque mon code est en cours d'exécution sur le processeur dans l'emplacement système. Malheureusement pour moi, j'ai une configuration différente. Je suis en train de virer une interface de test vers un système existant. Mon processeur ne va pas dans la fente du système. L'exécution de pciAutoConfig ici bloque le système. Je suis en train de lire le livre PCI System Architecture pour espérer trouver un moyen de configurer ma topologie étrange. –

Questions connexes