2017-07-20 1 views
-1

Dans le pilote de périphérique pci, j'essaie de lire le registre PCI_COMMAND en utilisant ioread32 dans la plate-forme MIPS mais une erreur de bus de données est générée. J'ai vérifié le paramètre valide avant de passer dans ioread32. Toute aide à ce sujet? L'utilisation de pci_bus_read_config_word dans ce cas empêche-t-elle une erreur de bus de données?Quelle est la différence ioread32 et la fonction de wrapper pci_bus_read_config_word? Lequel est le plus sûr à utiliser dans le pilote de périphérique pci?

Répondre

0

Il dépend de votre plate-forme sur le type de prise en charge pour l'accès à l'espace de configuration. Il existe deux types d'accès -

1 - Mécanisme de configuration PCI hérité - Utilise l'adresse de port IO pour accéder à l'espace de configuration du point de terminaison. Vous pouvez utiliser ioread32() pour cela.
2 - Mécanisme de configuration PCI amélioré - Utilise des E/S mappées en mémoire. Vous pouvez utiliser des opérations de pointeur simples pour lire ceci.

Puisqu'il est difficile de trouver le support du mécanisme d'accès, il est préférable d'utiliser pci API (qui dans ce cas est pci_bus_read_config_word) que d'utiliser ioread32().

pci _ *() API prendra en charge la méthode d'accès valide pour cette plate-forme.