Utilizzo di dispositivi PCI o PCIe


22

È possibile utilizzare una sorta di adattatore o persino saldare un dispositivo sulla scheda Raspberry Pi per supportare i dispositivi PCI o PCI express? Sto pensando a dispositivi più piccoli come schede NIC o schede audio. Non penserei che ci sarebbe abbastanza tensione per far funzionare qualcosa come un sintonizzatore o una scheda grafica.


PCi express è fuori discussione in quanto la velocità del bus è troppo elevata per essere gestita da ARM oltre che la sua PCI troppo ampia (troppi I / O) potrebbe essere possibile ma non serve a nulla
Piotr Kula,

Incontrerai enormi problemi con il collo di bottiglia, non è possibile farlo.

Bene, l'uso dei pin IO sarebbe probabilmente ancora più veloce dell'USB. E che dire dell'utilizzo di ISA, EISA o forse VESA? So che sono vecchi, ma hanno ancora frequenze di clock più basse e non ne esistono molte nuove. Oppure, che ne dici di creare la tua interfaccia?

@ppumkin PCIe funzionerà a velocità bus elevate quando il livello fisico e i dispositivi supportano tali velocità, ma in realtà è un protocollo abbastanza resiliente e continuerà a funzionare in situazioni abbastanza non ideali a velocità ridotta.
AJMansfield,

Risposte:


8

Dubito che sia possibile. Avresti bisogno di una sorta di bridge e qualcosa per connetterlo.

Non sono sicuro del motivo per cui è necessario, schede di rete / schede audio / sintonizzatori e altro ancora possono essere collegati all'USB

Ci sono anche adattatori video USB se vuoi aggiungere una seconda schermata. Non ha molto senso cercare di collegare una scheda grafica ad alta potenza per giochi ecc. L'unico motivo che mi viene in mente è se stavi usando la GPU per il coprocessing


Esiste un caso d'uso avvincente ... implementazione di un router dual-band 802.11ac basato su Pi che esegue in modo impeccabile la modalità AP (o, del resto, fa la modalità AP). Ci sono alcune NIC USB 802.11n che si dice che funzionino in semi-modalità in modalità AP se si satura completamente il bus USB, ma, in pratica, se si desidera davvero eseguire correttamente la modalità AP, è necessario un bus PCI-e per darti accesso quasi in tempo reale al chip, o dovrai spostare tutta la logica relativa all'AP sull'altra estremità del bus USB (collegando i chip in banda base 802.11ac direttamente a un host Pi).
Bitbang3r

1
Interessante o no, si è limitati dai colli di bottiglia di I / O dentro e fuori dalla CPU. Ricorda che è un chip piuttosto vecchio, ottimizzato in termini di costi.
John La Rooy,

6

No, non è possibile. Il Raspberry Pi si basa su SoC con braccio a basso budget che ha solo bus USB, quindi è impossibile collegarlo a una scheda PCI o PCIe. Né un adattatore potrebbe essere realizzato.


Esistono anche connettori PCI-e USB only?
danger89,

@ danger89 Siamo spiacenti, non riesco a ottenere la tua domanda.
SileNT

6

Il più veloce che il buffer GPIO può essere indirizzato finora è 5,4 MHz, ma la maggior parte delle librerie di indirizzamento raggiunge un massimo di circa 70 kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

Le specifiche PCIe funzionano a 100 MHz (frequenza regolabile fino a 200 MHz). http://www.ni.com/white-paper/3767/en/

Potrebbe esserci un modo per forzare una modalità compatibile con le versioni precedenti su PCIe e ridurla alla vecchia frequenza PCI a 33 MHz, il che significa che potrebbe esserci una sovrapposizione nelle gamme di frequenze con un ampio buffering. Tuttavia, PCIe ha una larghezza di bit molto più ampia rispetto a GPIO e richiede un'enorme quantità di infrastruttura software per affrontare correttamente, che il bus GPIO sul Pi semplicemente non ha. PCI e PCIe sono più che semplici interfacce, includono i loro protocolli di comunicazione intermedia (complessi), che dovresti emulare in qualche modo.

Potrebbe essere fatto? Certo, con un'interfaccia software / hardware adeguata tutto può essere fatto. Le librerie a livello di kernel possono essere scritte per sovrascrivere qualsiasi cosa e bufferizzare praticamente qualsiasi cosa.

Dovrebbe essere fatto? Bene, quello che stai essenzialmente cercando di fare è interfacciare il bus wireless / PCIe veloce con il Pi più lento. Questo è ciò che fa già il bus USB del Pi e lo fa abbastanza bene, inoltre lo fa in modo nativo e in modo pienamente supportato.

Cercare di far funzionare PCI / PCIe sul Pi essenzialmente reinventerebbe la ruota, e lo farebbe molto duramente. Potrebbe essere un esercizio di apprendimento interessante, se hai qualche mese da dedicare, tenendo presente che è probabile che colpirai un muro e non sarai in grado di andare avanti in qualsiasi momento. Mi sembra singolarmente poco gratificante. ;-)


1
Se decidi di procedere, c'è sempre questo: pinouts.ru/Slots/pci_express_pinout.shtml Nota che il tuo problema principale sarà la velocità di clock, non la larghezza dell'interfaccia. Sì, alcune schede PCIe / PCIx hanno molti pin. No, non tutti lo fanno e molti non hanno bisogno di enormi piedinature. Ci sono alcune carte 1x molto piccole là fuori. Poiché l'orologio funziona a 2,5 Gbps, hai bisogno di una sorta di interfaccia di buffering con un sacco di spazio di archiviazione, e non sono sicuro che il processore Pi sia in grado di recuperare dati su così tanti dati, dato che non lo sarai in esecuzione in tempo reale.
Yogsodoth,

1

La scheda PCIE2RASPI può unire una scheda PCIE (mini o standard) con una CycloneIV GX Fpga ai segnali IO della scheda I / O Raspberry. Tagliando i pin di alimentazione sull'intestazione, può essere montato da un cavo piatto su un hist Raspberry. L'Fpga su mini PCIe ospita un end point con capacità di master target, di fatto rende il Raspberry in grado di leggere o scrivere la memoria del PC.

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


1
Quando stai suggerendo uno dei tuoi prodotti, dovresti chiarirlo nella tua risposta.
Steve Robillard,

1

In realtà potrebbe essere possibile utilizzando TUTTI i pin GPIO, quindi multiplexandone la metà in una singola linea di uscita (PCIe x1) a 100 MHz e demultiplando la linea di ingresso nell'altra metà. Ho letto allo stesso link (il primo) dichiarato nella risposta di yogsodoth che il codice C nativo poteva gestire circa 22MHz tramite l'ottimizzatore -O3. (Ricorda, i cambi di livello logici sono un must. ) Il software sarebbe un dolore ancora più grande nel collo da interfacciare, tuttavia, poiché PCIe non è supportato in modo nativo ...


0

Forse i pin GPIO potrebbero connettersi a qualcosa che può indirizzare il PCIx? Significherebbe un grande trucco e la domanda è. Con quale velocità è possibile leggere i dati dai pin GPIO.


1
Non abbastanza veloce.
Jivings,

D'accordo - Non abbastanza veloce e DEVE essere in tempo reale. Linux non è in tempo reale.
Piotr Kula,

-1

No, non è possibile. L'hardware Gpio non è progettato per funzionare a velocità PCI.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.