Uso de dispositivos PCI o PCIe

22

¿Es posible usar algún tipo de adaptador, o incluso soldar un dispositivo a la placa Raspberry Pi para admitir dispositivos PCI o PCI express? Estoy pensando en dispositivos más pequeños como NIC o tarjetas de sonido. No creo que haya suficiente voltaje para ejecutar algo como un sintonizador o una tarjeta gráfica.

Kyle Macey
fuente
PCi express está fuera de discusión ya que la velocidad del bus es demasiado alta para que la ARM pueda manejarla, además su PCI demasiado ancho (demasiadas E / S) podría ser posible, pero no sirve de nada
Piotr Kula
Te encontrarás con grandes problemas con el cuello de botella, no se puede hacer.
Bueno, usar los pines IO probablemente aún sería más rápido que el USB. ¿Y qué hay del uso de ISA, EISA o quizás VESA? Sé que son viejos, pero todavía tienen frecuencias de reloj más bajas, y no existen muchas nuevas. O, ¿qué hay de hacer tu propia interfaz?
@ppumkin PCIe se ejecutará a altas velocidades de bus cuando la capa física y los dispositivos admitan esas velocidades, pero en realidad es un protocolo bastante resistente y seguirá funcionando en situaciones bastante no ideales a velocidades reducidas.
AJMansfield

Respuestas:

8

Dudo que esto sea posible. Necesitarías algún tipo de puente y algo para conectarlo.

No estoy seguro de por qué lo necesitaría, las NIC / tarjetas de sonido / sintonizadores y más pueden conectarse al USB

También hay adaptadores de video USB si desea agregar una segunda pantalla. No tiene mucho sentido intentar conectar una tarjeta gráfica de alta potencia para juegos, etc. La única razón por la que puedo pensar es si estaba usando la GPU para el coprocesamiento

John La Rooy
fuente
Hay un caso de uso convincente ... la implementación de un enrutador de doble banda 802.11ac basado en Pi que funciona perfectamente el modo AP (o, para el caso, el modo AP en absoluto). Hay algunos NIC USB 802.11n que se rumorea que funcionan semi en modo AP si satura completamente el bus USB, pero como cuestión práctica, si realmente desea hacer el modo AP correctamente, necesita un bus PCI-e para darle acceso casi en tiempo real al chip, o tendrá que mover toda la lógica relacionada con AP al otro extremo del bus USB (conectando los chips de banda base 802.11ac directamente a un host Pi).
Bitbang3r
1
Obligado o no, está limitado por los cuellos de botella de E / S dentro y fuera de la CPU. Recuerde que es un chip bastante antiguo y de costo optimizado.
John La Rooy
6

No, no es posible. La Raspberry Pi se basa en un SoC de brazo de bajo presupuesto que solo tiene bus usb, por lo que es imposible conectarle una tarjeta PCI o PCIe. No se pudo hacer un adaptador.

Silencio
fuente
¿También se llaman conectores PCI-e USB solo?
danger89
@ danger89 Lo siento, no puedo responder tu pregunta.
SileNT
6

El más rápido del búfer GPIO puede ser abordado hasta ahora es 5.4MHz, pero la mayoría frente a las bibliotecas a cabo como máximo alrededor de 70 kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

La especificación PCIe funciona a 100MHz (frecuencia ajustable hasta 200MHz). http://www.ni.com/white-paper/3767/en/

Puede haber una forma de forzar un modo compatible con versiones anteriores en PCIe y reducirlo a la frecuencia PCI anterior a 33MHz, lo que significa que puede haber cierta superposición en los rangos de frecuencia con un búfer extenso. Sin embargo, PCIe tiene un ancho de bits mucho más amplio que GPIO, y requiere una gran cantidad de infraestructura de software para abordar adecuadamente, que el bus GPIO en el Pi simplemente no tiene. PCI y PCIe son más que simples interfaces, incluyen sus propios protocolos de comunicaciones intermedias (complejos), que de alguna manera tendría que emular.

¿Se podría hacer? Claro, con la interfaz adecuada de software / hardware se puede hacer cualquier cosa. Las bibliotecas a nivel de núcleo se pueden escribir para anular casi cualquier cosa y almacenar en búfer casi cualquier cosa.

¿Debería hacerse? Bueno, lo que esencialmente está tratando de hacer es conectar el bus inalámbrico rápido / PCIe con el Pi más lento. Eso es lo que el bus USB de Pi ya hace, y lo hace bastante bien, además de que lo hace de forma nativa y de forma totalmente compatible.

Tratar de hacer que PCI / PCIe se ejecute en la Pi esencialmente reinventaría la rueda, y lo haría muy duro. Puede ser un ejercicio de aprendizaje interesante, si tiene unos meses de sobra, teniendo en cuenta que es probable que se golpee contra una pared y no pueda avanzar en cualquier momento. Suena singularmente poco gratificante para mí. ;-)

yogsodoth
fuente
1
Si decide continuar, siempre hay esto: pinouts.ru/Slots/pci_express_pinout.shtml Tenga en cuenta que su problema principal será la velocidad del reloj, no el ancho de la interfaz. Sí, algunas tarjetas PCIe / PCIx tienen muchos pines. No, no todos lo hacen, y muchos no necesitan grandes pinouts. Hay algunas tarjetas 1x muy pequeñas por ahí. Dado que el reloj funciona a 2.5 Gbps, necesita algún tipo de interfaz de almacenamiento en búfer con mucho almacenamiento, y no estoy seguro de que el procesador de Pi sea capaz de ponerse al día con esa cantidad de datos, dado que no va a ser corriendo en tiempo real.
yogsodoth
1

La placa PCIE2RASPI puede unirse a una placa PCIE (mini o estándar) con un CycloneIV GX Fpga a las señales IO de la placa Raspberry I / O. Cortando los pines de alimentación en el encabezado, se puede conectar mediante un cable plano a un Raspberry hist. El Fpga en mini PCIe aloja un punto final que tiene la capacidad de objetivo maestro, de hecho, hace que el Raspberry pueda leer o escribir la memoria de la PC.

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

Luciano Gabbani
fuente
1
Cuando sugiera uno de sus productos, debe dejarlo claro en su respuesta.
Steve Robillard
1

En realidad, puede ser posible utilizando TODOS los pines GPIO, luego multiplexando la mitad de ellos en una sola línea de salida (PCIe x1) a 100MHz y demultiplexando la línea de entrada en la otra mitad. Leí en el mismo enlace (el primero) en la respuesta de yogsodoth que el código C nativo podría administrar aproximadamente 22MHz a través del optimizador -O3. (Solo recuerde, los cambios de nivel lógicos son obligatorios ) . Sin embargo, el software sería un problema aún mayor en el cuello para la interfaz, ya que PCIe no es compatible de forma nativa ...

Josh2003
fuente
0

¿Quizás los pines GPIO podrían conectarse a algo que pueda abordar el PCIx? Significaría un gran truco y la pregunta es. Qué tan rápido se pueden leer los datos de los pines GPIO.

Hellonearthis
fuente
1
No suficientemente rápido.
Jivings
De acuerdo: no lo suficientemente rápido y TIENE que ser en tiempo real. Linux no es en tiempo real.
Piotr Kula
-1

No, eso no es posible. El hardware Gpio no está diseñado para funcionar a velocidades PCI.

usuario8226
fuente