Verwendung von PCI- oder PCIe-Geräten


22

Ist es möglich, einen Adapter zu verwenden oder sogar ein Gerät an die Raspberry Pi-Platine anzulöten, um PCI- oder PCI Express-Geräte zu unterstützen? Ich denke an kleinere Geräte wie Netzwerkkarten oder Soundkarten. Ich würde nicht denken, dass es genug Spannung geben würde, um etwas wie einen Tuner oder eine Grafikkarte zu betreiben.


PCi Express kommt nicht in Frage, da die Busgeschwindigkeit für den ARM zu hoch ist und die zu breite PCI-Schnittstelle (zu viele E / A) zwar möglich, aber nutzlos ist
Piotr Kula

Bei Engpässen würden Sie auf große Probleme stoßen, das ist nicht möglich.

Nun, die Verwendung der IO-Pins wäre wahrscheinlich immer noch schneller als USB. Und was ist mit ISA, EISA oder vielleicht VESA? Ich weiß, dass sie alt sind, aber sie haben immer noch niedrigere Taktfrequenzen und es gibt nicht viele neue. Oder wie wäre es mit einem eigenen Interface?

@ppumkin PCIe wird mit hohen Busgeschwindigkeiten ausgeführt, wenn die physische Schicht und die Geräte diese Geschwindigkeiten unterstützen. Es handelt sich jedoch tatsächlich um ein recht widerstandsfähiges Protokoll, das auch in nicht idealen Situationen mit reduzierten Geschwindigkeiten funktioniert.
AJMansfield

Antworten:


8

Ich bezweifle, dass dies möglich ist. Sie brauchen eine Art Brücke und etwas, mit dem Sie sie verbinden können.

Ich bin mir nicht sicher, warum Sie das tun müssten. NICs / Soundkarten / Tuner und mehr können an den USB-Anschluss angeschlossen werden

Es gibt auch USB-Videoadapter, wenn Sie einen zweiten Bildschirm hinzufügen möchten. Es macht nicht viel Sinn, eine leistungsstarke Grafikkarte für Spiele usw. anzuschließen. Der einzige Grund, den ich mir vorstellen kann, ist, dass Sie die GPU für die Koprozessierung verwenden


Es gibt einen überzeugenden Anwendungsfall ... die Implementierung eines Pi-basierten 802.11ac-Dualband-Routers, der den AP-Modus fehlerfrei ausführt (oder überhaupt den AP-Modus). Es gibt einige USB 802.11n-NICs, die angeblich im AP-Modus arbeiten, wenn Sie den USB-Bus vollständig auslasten. Wenn Sie den AP-Modus jedoch wirklich ordnungsgemäß ausführen möchten, benötigen Sie entweder einen PCI-e-Bus Sie können nahezu in Echtzeit auf den Chip zugreifen, oder Sie müssen die gesamte AP-bezogene Logik auf das andere Ende des USB-Busses verschieben (indem Sie die 802.11ac-Basisband-Chips selbst direkt mit einem Host-Pi verbinden).
Bitbang3r

1
Überzeugend oder nicht, Sie werden durch die E / A-Engpässe in der CPU und außerhalb der CPU eingeschränkt. Denken Sie daran, dass es sich um einen relativ alten, kostenoptimierten Chip handelt.
John La Rooy

6

Nein, es ist nicht möglich. Der Raspberry Pi basiert auf einem preisgünstigen SoC, der nur über einen USB-Bus verfügt. Es ist daher unmöglich, eine PCI- oder PCIe-Karte daran anzuschließen. Es konnte auch kein Adapter hergestellt werden.


Es gibt auch PCI-e-USB-Anschlüsse?
danger89

@ danger89 Entschuldigung, ich kann Ihre Frage nicht beantworten.
SileNT

6

Der schnellste GPIO-Puffer, der bisher adressiert werden kann, ist 5,4 MHz, aber die meisten Adressierungsbibliotheken erreichen maximal 70 kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

Die PCIe-Spezifikation arbeitet mit 100 MHz (Frequenz einstellbar bis 200 MHz). http://www.ni.com/white-paper/3767/en/

Es kann eine Möglichkeit geben, einen abwärtskompatiblen Modus für PCIe zu erzwingen und ihn auf die alte PCI-Frequenz von 33 MHz zu reduzieren, was bedeutet, dass sich die Frequenzbereiche möglicherweise mit einer umfangreichen Pufferung überschneiden. PCIe hat jedoch eine viel breitere Bitbreite als GPIO und erfordert eine enorme Menge an Software-Infrastruktur, um richtig zu adressieren, die der GPIO-Bus auf dem Pi einfach nicht hat. PCI und PCIe sind mehr als nur Schnittstellen, sie enthalten ihre eigenen (komplexen) Kommunikationsprotokolle, die Sie irgendwie emulieren müssten.

Könnte es gemacht werden? Sicher, mit der richtigen Software- / Hardware-Schnittstelle kann alles getan werden. Bibliotheken auf Kernel-Ebene können so geschrieben werden, dass sie so gut wie alles überschreiben und so gut wie alles puffern.

Sollte es gemacht werden? Nun, Sie versuchen im Wesentlichen, den schnellen Wireless / PCIe-Bus mit dem langsameren Pi zu verbinden. Das ist es, was der USB-Bus des Pi bereits leistet und recht gut macht. Außerdem funktioniert er nativ und auf vollständig unterstützte Weise.

Der Versuch, PCI / PCIe auf dem Pi zum Laufen zu bringen, würde im Grunde genommen das Rad neu erfinden, und das würde es sehr schwer machen. Es könnte eine interessante Lernübung sein, wenn Sie ein paar Monate Zeit haben und bedenken, dass Sie wahrscheinlich gegen eine Wand stoßen und sich zu keinem Zeitpunkt vorwärtsbewegen können. Klingt für mich einzigartig unbelohnt. ;-)


1
Wenn Sie fortfahren möchten , gibt es immer Folgendes : pinouts.ru/Slots/pci_express_pinout.shtml Beachten Sie, dass Ihr Hauptproblem die Taktrate und nicht die Schnittstellenbreite sein wird. Ja, einige PCIe / PCIx-Karten haben viele Pins. Nein, nicht alle, und viele brauchen keine großen Stecknadeln. Es gibt einige sehr kleine 1x-Karten da draußen. Da die Uhr mit 2,5 Gbit / s läuft, benötigen Sie eine Art Pufferschnittstelle mit viel Speicherplatz, und ich bin mir nicht sicher, ob der Prozessor des Pi in der Lage ist, so viele Daten nachzuholen, da dies nicht der Fall sein wird Laufen in Echtzeit.
Yogasodot

1

Die PCIE2RASPI-Karte kann eine PCIE-Karte (Mini oder Standard) mit einem CycloneIV GX Fpga mit den E / A-Signalen der Himbeer-E / A-Karte verbinden. Wenn Sie die Stromversorgungsstifte am Header abschneiden, können Sie sie mit einem Flachkabel an einen Himbeer-Hist anschließen. Das Fpga auf Mini-PCIe hostet einen Endpunkt, der über eine Master-Zielfunktion verfügt. Tatsächlich ermöglicht es der Himbeere, den PC-Speicher zu lesen oder zu schreiben.

Schauen Sie sich Folgendes an: http://www.geb-enterprise.com/PRODUCTS/Mini_PCIe_to_Raspberry.html http://www.geb-enterprise.com/PRODUCTS/PCIe_Standard_PC_CARD.html


1
Wenn Sie eines Ihrer Produkte vorschlagen, sollten Sie dies in Ihrer Antwort klarstellen.
Steve Robillard

1

Es kann tatsächlich möglich sein, ALLE GPIO-Pins zu verwenden, dann die Hälfte davon in eine einzelne Ausgangsleitung (PCIe x1) mit 100 MHz zu multiplexen und die Eingangsleitung in die andere Hälfte zu demultiplexen. Ich habe unter demselben Link (dem ersten) in der Antwort von yogsodoth gelesen, dass nativer C-Code über den -O3-Optimierer ungefähr 22 MHz verwalten könnte. ( Denken Sie daran, Logic Level Shifter sind ein Muss. ) Die Software wäre jedoch ein noch größeres Problem für die Benutzeroberfläche, da PCIe von Haus aus nicht unterstützt wird.


0

Vielleicht könnten die GPIO-Pins eine Verbindung zu etwas herstellen, das die PCIx adressieren kann? Es würde einen großen Hack bedeuten und die Frage ist. Wie schnell können Daten von den GPIO-Pins eingelesen werden?


1
Nicht schnell genug.
Jivings

Einverstanden - Nicht schnell genug und es muss Echtzeit sein. Linux ist keine Echtzeit.
Piotr Kula

-1

Nein, das ist nicht möglich. Gpio-Hardware ist nicht für PCI-Geschwindigkeiten ausgelegt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.