programación GPIO / PCIe

0

Quiero conectar una tarjeta PCIe 16x 3.0 GPU a una Raspberry pi. No me importa perder ancho de banda, solo quiero usar las capacidades principales de la GPU. Entonces, la única idea que se me ocurrió es usar los 26 pines GPIO RPi. Me preocupa la programación GPIO / PCIe, no tengo ni idea ni enfoque. ¿Es una idea loca? ¿Puede alguien ayudarme a tener una idea general de lo que debo hacer?

    
pregunta Arturo Veras

5 respuestas

1

Su mejor apuesta probablemente sería verificar si un PLX PCIe bridge se podría utilizar para este fin. / p>

Es muy probable que abandonar esta idea de usar una Raspberry Pi y, en cambio, usar algo que tenga un puerto PCIe integrado sea mucho más fácil y económico.

    
respondido por el Andreas Bombe
2

Los pines GPIO en la Raspberry Pi ni siquiera están cerca de ser lo suficientemente rápidos (tal vez un par de MHz frente a varios GHz requeridos para PCI-E). Sin embargo, puede consultar esto: enlace

Esto no usa la interfaz PCI-Express en absoluto, pero algunas GPU de Radeon tienen un 'bus de depuración' que se puede usar para escribir registros internos a baja velocidad, aparentemente a través de I2C, con la que la Raspberry Pi puede conectarse. Parece que el código fue puesto fuera de línea (probablemente NDA, o el autor original está tratando de hacer un negocio fuera de él). Si tiene un par de meses de sobra y experiencia con la piratería de controladores de Linux, probablemente pueda replicar su trabajo mirando los controladores de fuente abierta de Linux.

    
respondido por el Zuofu
1

Unos pocos sitios han probado la velocidad gpio de los Pi y una búsqueda rápida muestra velocidades del orden de cientos de KHz. No estoy seguro de la frecuencia de PCI 3 en la parte superior de mi cabeza, pero creo que cada línea de datos se ejecuta en el rango de MHz.

La baja frecuencia del GPIO junto con la sobrecarga de codificación para cada pin sería imposible golpear el Pi lo suficientemente rápido.

    
respondido por el Bageletas
0

Si quieres solucionar el problema de la manera más difícil, puedes golpear el protocolo con alguna ayuda externa.

Hay varias señales que debe tener en cuenta: señales compartidas por todas las tarjetas SM_SCL , SM_SDA , PCIE_IRQ y PCIE_CLK , así como por canal co2de% y PCIE_Rx . >

La mayoría de las líneas PCI-E son señales diferenciales que deberían derivarse externamente desde y hacia la señal de un solo extremo de su Pi. Esto incluye todas las líneas PCIE_Tx excepto IRQ. PCIE_* son SMBus que pueden ir directamente al I2C de la Pi, y todas las demás señales tendrán que ser modificadas (a pesar de la compatibilidad con hardware externo limitado).

No es necesario implementar un bus x16 completo, un bus x4 (utiliza 10 GPIOs y I2C) será suficiente, si su GPU puede funcionar a esa velocidad tan lenta.

    
respondido por el Maxthon Chan
0

Si la Raspberry Pi tiene PCIe, entonces no está expuesta en una ranura y requeriría una modificación de la placa, lo que sería casi imposible para todos excepto para unos pocos individuos muy selectos sin destruirlo. Pruebe el comando "lspci -vnnt" y vea si hay algún dispositivo presente. Si PCIe está presente, es probable que solo esté allí para el Wi-Fi integrado (al igual que cosas como el Galaxy S8).

El nuevo RockPi 4 tiene los mismos orificios de montaje y factor de forma que la Raspberry Pi. Tiene el mismo encabezado compatible con GPIO 40-pin. Tiene una ranura PCIe 2.0 x2 M.2. Puede adaptar eso a una ranura PCIe de tamaño completo. El ancho de banda será limitado, pero debería funcionar. Si estás jugando, entonces los resultados pueden ser malos. Pero para las tareas informáticas que no necesitan mucha comunicación CPU-GPU, debería funcionar muy bien.

enlace

Debe asegurarse de que la ranura tenga un conector de PSU para suministrar 75W a la ranura, y es posible que necesite conectores de PSU adicionales directamente a la tarjeta gráfica si la fuente de alimentación es insuficiente. Debe tener cuidado porque algunas ranuras crean 3.3V de otros voltajes en lugar de un conector de alimentación SATA, y si no está diseñado para una GPU, podría sobrecargarse y romperse. O bien necesita uno diseñado para una GPU, o uno que tome la alimentación directamente de la alimentación SATA (no Molex, y la alimentación SATA que se conecta al conector SFF-8643 no garantiza nada, ya que algunos cables tienen Molex en su lugar). / p>

El Hikey 960 es el mismo pero tiene un soporte incompatible con la Raspberry Pi.

Algo aquí podría ayudar: enlace

Esos pueden ir de M.2 a SFF-8639 y desde allí puede obtener un adaptador de ranura SFF-8639 a PCIe de Amazon o similar. He visto kits completos desde M.2 a PCIe pero no puedo responder por su rendimiento o confiabilidad. Además, algunos de ellos solo conectan un carril de PCIe desde la ranura M.2. Asegúrate de obtener los de 4 carriles.

    
respondido por el Karatekid430

Lea otras preguntas en las etiquetas