Usando dispositivos PCI ou PCIe

22

É possível usar algum tipo de adaptador ou mesmo soldar um dispositivo na placa Raspberry Pi para suportar dispositivos PCI ou PCI Express? Estou pensando em dispositivos menores, como placas de rede ou placas de som. Eu não acho que haveria tensão suficiente para executar algo como um sintonizador ou placa gráfica.

Kyle Macey
fonte
PCI Express é fora de questão como a velocidade do barramento é demais para o ARM a alça mais seu muito grande (muitos I / O) PCI migh ser possível, mas não há nenhum uso
Piotr Kula
Você enfrentaria grandes problemas com gargalos, isso não pode ser feito.
Bem, o uso dos pinos IO provavelmente ainda seria mais rápido que o USB. E quanto a usar ISA, EISA ou talvez VESA? Eu sei que eles são antigos, mas ainda têm frequências de clock mais baixas e não existem muitas novas. Ou, que tal criar sua própria interface?
O @ppumkin PCIe funcionará em altas velocidades de barramento quando a camada física e os dispositivos suportarem essas velocidades, mas na verdade é um protocolo bastante resistente e ainda funcionará em situações razoavelmente não ideais a velocidades reduzidas.
precisa saber é o seguinte

Respostas:

8

Duvido que isso seja possível. Você precisaria de algum tipo de ponte e algo para conectá-lo.

Não sei por que você precisaria, placas de som / placas de som / sintonizadores e muito mais podem se conectar ao dispositivo USB.

Também existem adaptadores de vídeo USB, se você quiser adicionar uma segunda tela. Não faz muito sentido tentar conectar uma placa gráfica de alta potência para jogos, etc. A única razão pela qual consigo pensar é se você estava usando a GPU para coprocessamento

John La Rooy
fonte
Há um caso de uso convincente ... a implementação de um roteador de banda dupla 802.11ac baseado em Pi que executa perfeitamente o modo AP (ou, nesse caso, o modo AP). Há algumas placas de rede USB 802.11n que, segundo rumores, funcionam semi-no modo AP, se você saturar completamente o barramento USB, mas, por uma questão prática, se você quiser realmente executar o modo AP corretamente, precisará de um barramento PCI-e para fornecer acesso quase em tempo real ao chip, ou você precisará mover toda a lógica relacionada ao AP para a outra extremidade do barramento USB (conectando os chips de banda de base 802.11ac diretamente a um Pi host).
Bitbang3r
1
Atraente ou não, você está limitado pelos gargalos de E / S dentro e fora da CPU. Lembre-se de que é um chip bastante antigo e com custo otimizado.
John La Rooy
6

Não, não é possível. O Raspberry Pi é baseado no SoC de braço de baixo orçamento que possui apenas barramento usb, por isso é impossível conectar uma placa PCI ou PCIe a ele. Nem um adaptador pode ser feito.

SileNT
fonte
Também são chamados conectores PCI-e USB only?
precisa saber é o seguinte
@ danger89 Desculpe, não consigo tirar sua dúvida.
SileNT 02/02
6

O mais rápido que o buffer GPIO pode ser endereçado até agora é de 5,4 MHz, mas a maioria das bibliotecas de endereçamento atinge cerca de 70kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

A especificação do PCIe é executada em 100 MHz (frequência ajustável até 200 MHz). http://www.ni.com/white-paper/3767/en/

Pode haver uma maneira de forçar um modo compatível com versões anteriores no PCIe e reduzi-lo à antiga frequência PCI a 33MHz, o que significa que pode haver alguma sobreposição nas faixas de frequência com buffer extensivo. No entanto, o PCIe tem uma largura de bit muito maior que o GPIO e requer uma quantidade enorme de infraestrutura de software para resolver adequadamente, o que o barramento GPIO no Pi simplesmente não possui. O PCI e o PCIe são mais do que apenas interfaces, eles incluem seus próprios protocolos de comunicação intermediários (complexos), que você teria que imitar de alguma forma.

Isso poderia ser feito? Certamente, com a interface de software / hardware adequada, tudo pode ser feito. As bibliotecas no nível do kernel podem ser escritas para substituir praticamente qualquer coisa e armazenar em buffer praticamente qualquer coisa.

Isso deveria ser feito? Bem, o que você está basicamente tentando fazer é conectar o barramento wireless / PCIe rápido com o Pi mais lento. É o que o barramento USB do Pi já faz e faz muito bem, além de fazê-lo de forma nativa e totalmente suportada.

Tentar fazer com que o PCI / PCIe funcione no Pi seria essencialmente reinventar a roda, e seria muito difícil. Pode ser um exercício de aprendizado interessante, se você tiver alguns meses de sobra - tendo em mente que é provável que você bata em uma parede e não consiga avançar a qualquer momento. Parece singularmente sem recompensa para mim. ;-)

yogsodoth
fonte
1
Se você decidir continuar, sempre haverá o seguinte: pinouts.ru/Slots/pci_express_pinout.shtml Observe que seu principal problema será a velocidade do relógio, não a largura da interface. Sim, algumas placas PCIe / PCIx possuem muitos pinos. Não, nem todos precisam, e muitos não precisam de grandes pinagens. Existem alguns cartões 1x muito pequenos por aí. Como o relógio funciona a 2,5 Gbps, você precisa de algum tipo de interface de buffer com muito armazenamento, e não tenho certeza de que o processador do Pi seja capaz de reproduzir muitos dados, já que você não será executando em tempo real.
Yogodod
1

A placa PCIE2RASPI pode unir uma placa PCIE (mini ou padrão) com um CycloneIV GX Fpga aos sinais IO da placa Raspberry I / O. Cortando os pinos de energia no cabeçalho, ele pode ser encaixado por um cabo plano a um histórico de framboesa. O Fpga no mini PCIe hospeda um ponto final que possui capacidade de destino principal, de fato, torna o Raspberry capaz de ler ou gravar a memória do PC.

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

Luciano Gabbani
fonte
1
Ao sugerir um de seus produtos, você deve deixar isso claro em sua resposta.
Steve Robillard
1

Na verdade, pode ser possível utilizando TODOS os pinos do GPIO, multiplexando metade deles em uma única linha de saída (PCIe x1) a 100 MHz e desmultiplexando a linha de entrada na outra metade. Li no mesmo link (o primeiro) indicado na resposta do yogsodoth que o código C nativo podia gerenciar cerca de 22MHz através do otimizador -O3. (Lembre-se de que os shifters de nível lógico são obrigatórios. ) O software seria ainda mais difícil de interface, pois o PCIe não é suportado nativamente ...

Josh2003
fonte
0

Talvez os pinos do GPIO possam se conectar a algo que possa endereçar o PCIx? Isso significaria um grande hack e a questão é. Com que rapidez os dados podem ser lidos pelos pinos do GPIO.

Hellonearthis
fonte
1
Não é rápido o suficiente.
Jivings
Concordado - Não é rápido o suficiente e precisa ser em tempo real. Linux não é em tempo real.
Piotr Kula
-1

Não, isso não é possível. O hardware Gpio não foi projetado para funcionar em velocidades PCI.

user8226
fonte