Utilisation de périphériques PCI ou PCIe

22

Est-il possible d'utiliser une sorte d'adaptateur, ou même de souder un périphérique à la carte Raspberry Pi pour prendre en charge les périphériques PCI ou PCI express? Je pense à des appareils plus petits tels que des cartes réseau ou des cartes son. Je ne pense pas qu'il y aurait suffisamment de tension pour faire fonctionner quelque chose comme un tuner ou une carte graphique.

Kyle Macey
la source
PCi express est hors de question car la vitesse du bus est trop importante pour que l'ARM puisse le gérer et son PCI trop large (trop d'E / S) pourrait être possible mais cela ne sert à rien
Piotr Kula
Vous rencontriez d'énormes problèmes avec les goulots d'étranglement, cela ne peut pas être fait.
Eh bien, l'utilisation des broches IO serait probablement encore plus rapide que l'USB. Et qu'en est-il de l'utilisation d'ISA, d'EISA ou peut-être de VESA? Je sais qu'ils sont vieux, mais ils ont toujours des fréquences d'horloge plus basses, et il n'y en a pas beaucoup de nouvelles. Ou que diriez-vous de créer votre propre interface?
@ppumkin PCIe fonctionnera à des vitesses de bus élevées lorsque la couche physique et les périphériques prennent en charge ces vitesses, mais il s'agit en fait d'un protocole assez résistant et fonctionnera toujours dans des situations assez non idéales à des vitesses réduites.
AJMansfield

Réponses:

8

Je doute que cela soit possible. Vous auriez besoin d'une sorte de pont et de quelque chose pour le connecter.

Je ne sais pas pourquoi vous en auriez besoin, les cartes réseau / cartes son / tuners et plus peuvent se brancher sur l'USB

Il existe également des adaptateurs vidéo USB si vous souhaitez ajouter un deuxième écran. Il ne sert à rien d'essayer de brancher une carte graphique haute puissance pour les jeux, etc. La seule raison pour laquelle je peux penser est que si vous utilisiez le GPU pour le coprocessing

John La Rooy
la source
Il existe un cas d'utilisation convaincant ... l'implémentation d'un routeur bi-bande 802.11ac basé sur Pi qui fait parfaitement le mode AP (ou d'ailleurs, le mode AP du tout). Il y a quelques NIC USB 802.11n qui fonctionneraient en mode AP si vous saturiez complètement le bus USB, mais en pratique, si vous voulez vraiment faire le mode AP correctement, vous avez besoin d'un bus PCI-e pour vous donner un accès en temps quasi réel à la puce, ou vous devrez déplacer toute la logique liée à AP à l'autre extrémité du bus USB (en connectant les puces de bande de base 802.11ac elles-mêmes directement à un Pi hôte).
Bitbang3r
1
Obligatoire ou non, vous êtes limité par les goulots d'étranglement d'E / S dans et hors du CPU. N'oubliez pas qu'il s'agit d'une puce assez ancienne et à coût optimisé.
John La Rooy
6

Non, ce n'est pas possible. Le Raspberry Pi est basé sur un SoC à petit budget qui ne dispose que d'un bus USB, il est donc impossible d'y attacher une carte PCI ou PCIe. Aucun adaptateur n'a pu être fabriqué.

Silencieux
la source
Il existe également des connecteurs PCI-e USB uniquement?
danger89
@ danger89 Désolé, je ne peux pas obtenir votre question.
SileNT
6

Le plus rapide que le tampon GPIO peut être adressé jusqu'à présent est de 5,4 MHz, mais la plupart des bibliothèques d'adressage dépassent environ 70 kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

La spécification PCIe fonctionne à 100 MHz (fréquence réglable jusqu'à 200 MHz). http://www.ni.com/white-paper/3767/en/

Il peut y avoir un moyen de forcer un mode rétrocompatible sur PCIe et de le réduire à l'ancienne fréquence PCI à 33 MHz, ce qui signifie qu'il pourrait y avoir un chevauchement dans les plages de fréquences avec une mise en mémoire tampon étendue. Cependant, PCIe a une largeur de bit beaucoup plus large que GPIO, et nécessite une quantité massive d'infrastructure logicielle pour répondre correctement, ce que le bus GPIO sur le Pi n'a tout simplement pas. PCI et PCIe sont plus que de simples interfaces, elles incluent leurs propres protocoles de communication intermédiaires (complexes), que vous devrez émuler d'une manière ou d'une autre.

Cela pourrait-il être fait? Bien sûr, avec une interface logicielle / matérielle appropriée, tout peut être fait. Les bibliothèques au niveau du noyau peuvent être écrites pour remplacer à peu près n'importe quoi et mettre en mémoire tampon à peu près n'importe quoi.

Faut-il le faire? Eh bien, ce que vous essayez essentiellement de faire est d'interfacer le bus sans fil / PCIe rapide avec le Pi plus lent. C'est ce que le bus USB du Pi fait déjà, et fonctionne assez bien, en plus de le faire de manière native et entièrement prise en charge.

Essayer de faire fonctionner PCI / PCIe sur le Pi reviendrait essentiellement à réinventer la roue, et ce serait très difficile. Cela pourrait être un exercice d'apprentissage intéressant, si vous avez quelques mois à perdre - sachant que vous risquez de heurter un mur et de ne pas pouvoir avancer à tout moment. Cela me semble singulièrement ingrat. ;-)

yogsodoth
la source
1
Si vous décidez de continuer, il y a toujours ceci: pinouts.ru/Slots/pci_express_pinout.shtml Notez que votre problème principal va être la vitesse d'horloge, pas la largeur de l'interface. Oui, certaines cartes PCIe / PCIx ont beaucoup de broches. Non, pas tous, et beaucoup n'ont pas besoin de brochages énormes. Il existe de très petites cartes 1x. Étant donné que l'horloge fonctionne à 2,5 Gbit / s, vous avez besoin d'une sorte d'interface de mise en mémoire tampon avec beaucoup de stockage, et je ne suis pas sûr que le processeur du Pi soit capable de rattraper autant de données, étant donné que vous n'allez pas être en cours d'exécution en temps réel.
yogsodoth
1

La carte PCIE2RASPI peut joindre une carte PCIE (mini ou standard) avec un CycloneIV GX Fpga aux signaux d'E / S de la carte d'E / S Raspberry. Coupant les broches d'alimentation sur l'en-tête, il peut être fixé par un câble plat à un hist Raspberry. Le Fpga sur mini PCIe héberge un point de terminaison ayant une capacité de cible principale, en fait, il permet au Raspberry de lire ou d'écrire la mémoire du PC.

Regardez: http://www.geb-enterprise.com/PRODUCTS/Mini_PCIe_to_Raspberry.html http://www.geb-enterprise.com/PRODUCTS/PCIe_Standard_PC_CARD.html

Luciano Gabbani
la source
1
Lorsque vous proposez l'un de vos produits, vous devez le préciser dans votre réponse.
Steve Robillard
1

Cela peut en fait être possible en utilisant TOUTES les broches GPIO, puis en multiplexant la moitié d'entre elles en une seule ligne de sortie (PCIe x1) à 100 MHz et en démultiplexant la ligne d'entrée dans l'autre moitié. J'ai lu sur le même lien (le premier) indiqué dans la réponse de yogsodoth que le code C natif pouvait gérer environ 22 MHz via l'optimiseur -O3. (N'oubliez pas, les décaleurs de niveau logique sont un must. ) Le logiciel serait encore plus pénible à interfacer, car PCIe n'est pas pris en charge nativement ...

Josh2003
la source
0

Peut-être que les broches GPIO pourraient se connecter à quelque chose qui peut adresser le PCIx? Cela signifierait un gros piratage et la question est. À quelle vitesse les données peuvent-elles être lues à partir des broches GPIO.

Hellonearthis
la source
1
Pas assez rapide.
Jivings
D'accord - pas assez rapide et cela DOIT être en temps réel. Linux n'est pas en temps réel.
Piotr Kula
-1

Non, ce n'est pas possible. Le matériel Gpio n'est pas conçu pour fonctionner à des vitesses PCI.

user8226
la source