Korzystanie z urządzeń PCI lub PCIe

22

Czy można użyć jakiegoś adaptera, a nawet przylutować urządzenie do płyty Raspberry Pi w celu obsługi urządzeń PCI lub PCI express? Myślę o mniejszych urządzeniach, takich jak karty sieciowe lub karty dźwiękowe. Nie sądzę, by napięcie było wystarczające do uruchomienia czegoś takiego jak tuner lub karta graficzna.

Kyle Macey
źródło
PCi express nie wchodzi w rachubę, ponieważ szybkość magistrali jest zbyt duża, aby ARM mógł ją obsłużyć, a jej zbyt szerokie (zbyt wiele wejść / wyjść) PCI może być możliwe, ale nie ma sensu
Piotr Kula
Miałbyś ogromne problemy z wąskim gardłem, nie da się tego zrobić.
Cóż, użycie pinów IO prawdopodobnie nadal byłoby szybsze niż USB. A co z używaniem ISA, EISA, a może VESA? Wiem, że są stare, ale nadal mają niższe częstotliwości zegara i nie istnieje wiele nowych. A co z tworzeniem własnego interfejsu?
@ppumkin PCIe będzie działał z dużymi prędkościami magistrali, gdy warstwa fizyczna i urządzenia obsługują te prędkości, ale w rzeczywistości jest to dość odporny protokół i nadal będzie działał w dość nie idealnych sytuacjach przy zmniejszonych prędkościach.
AJMansfield,

Odpowiedzi:

8

Wątpię, żeby to było możliwe. Potrzebny byłby jakiś most i coś do połączenia.

Nie jestem pewien, dlaczego to konieczne, karty sieciowe / karty dźwiękowe / tunery i wiele innych można podłączyć do USB

Istnieją również adaptery wideo USB, jeśli chcesz dodać drugi ekran. Nie ma sensu podłączać karty graficznej o dużej mocy do gier itp. Jedynym powodem, dla którego mogę wymyślić, jest użycie procesora graficznego do koprocesowania

John La Rooy
źródło
Jest jeden przekonujący przypadek użycia ... implementacja dwuzakresowego routera 802.11ac opartego na Pi, który bezbłędnie działa w trybie AP (lub w tym przypadku w ogóle działa w trybie AP). Istnieje kilka kart sieciowych USB 802.11n, o których mówi się, że działają częściowo w trybie AP, jeśli całkowicie nasycisz magistralę USB, ale ze względów praktycznych, jeśli chcesz naprawdę poprawnie pracować w trybie AP, albo potrzebujesz magistrali PCI-e aby zapewnić ci dostęp do układu niemal w czasie rzeczywistym, albo będziesz musiał przenieść całą logikę związaną z AP na drugi koniec magistrali USB (podłączając same układy pasma podstawowego 802.11ac bezpośrednio do hosta Pi).
Bitbang3r,
1
Przekonujące czy nie, jesteś ograniczony przez wąskie gardła we / wy wchodzące i wychodzące z procesora. Pamiętaj, że jest to dość stary, zoptymalizowany pod względem kosztów układ.
John La Rooy,
6

Nie, to niemożliwe. Raspberry Pi jest oparty na niskim budżecie SoC, który ma tylko magistralę USB, więc nie można do niego podłączyć karty PCI lub PCIe. Nie można wykonać adaptera.

Cichy
źródło
Istnieją również złącza PCI-e tylko USB?
niebezpieczne89
@ niebezpieczeństwo89 Przepraszamy, nie mogę dostać twojego pytania.
SileNT
6

Najszybszy do tej pory adresowany bufor GPIO to 5,4 MHz, ale większość bibliotek adresujących osiąga maksymalny poziom około 70 kHz: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

Specyfikacja PCIe działa z częstotliwością 100 MHz (częstotliwość regulowana do 200 MHz). http://www.ni.com/white-paper/3767/en/

Może być sposób na wymuszenie trybu kompatybilności wstecznej na PCIe i zredukowanie go do starej częstotliwości PCI przy 33 MHz, co oznacza, że ​​zakresy częstotliwości mogą się nakładać z dużym buforowaniem. Jednak PCIe ma znacznie szerszą szerokość bitów niż GPIO i wymaga ogromnej ilości infrastruktury oprogramowania do poprawnego adresowania, czego po prostu nie ma na szynie GPIO na Pi. PCI i PCIe to więcej niż interfejsy, zawierają one własne (złożone) pośrednie protokoły komunikacyjne, które trzeba by jakoś naśladować.

Czy można to zrobić? Jasne, przy odpowiednim interfejsie oprogramowania / sprzętu wszystko można zrobić. Biblioteki na poziomie jądra można napisać, aby zastąpić prawie wszystko i buforować prawie wszystko.

Czy należy to zrobić? Cóż, w zasadzie próbujesz zrobić to połączenie szybkiej magistrali bezprzewodowej / PCIe z wolniejszym Pi. Tak właśnie działa szyna USB Pi i ma się całkiem dobrze, a ponadto robi to w sposób natywny iw pełni obsługiwany.

Próba uruchomienia PCI / PCIe na Pi w gruncie rzeczy wymyśliłaby na nowo koło i bardzo ciężko by to zrobiła. To może być ciekawe ćwiczenie edukacyjne, jeśli masz kilka miesięcy do stracenia - pamiętaj, że prawdopodobnie uderzysz o ścianę i nie będziesz w stanie iść do przodu w dowolnym momencie. Wydaje mi się to wyjątkowo nieciekawe. ;-)

jogurt
źródło
1
Jeśli zdecydujesz się kontynuować, zawsze jest to: pinouts.ru/Slots/pci_express_pinout.shtml Pamiętaj, że twoim głównym problemem będzie szybkość zegara, a nie szerokość interfejsu. Tak, niektóre karty PCIe / PCIx mają wiele styków. Nie, nie wszyscy, a wielu nie potrzebuje dużych pinoutów. Istnieje kilka bardzo małych kart 1x. Ponieważ zegar działa z prędkością 2,5 Gb / s, potrzebujesz pewnego rodzaju interfejsu buforującego z dużą ilością pamięci, i nie jestem pewien, czy procesor Pi jest w stanie odtworzyć tyle danych, biorąc pod uwagę, że nie będziesz działa w czasie rzeczywistym.
yogsodoth,
1

Karta PCIE2RASPI może łączyć się z płytką PCIE (mini lub standard) za pomocą CycloneIV GX Fpga z sygnałami we / wy płyty Raspberry I / O. Obcięcie pinów zasilających w nagłówku można przymocować płaskim kablem do hali Raspberry. Fpga na mini PCIe hostuje punkt końcowy, który ma zdolność głównego celu, de facto sprawia, że ​​Raspberry jest w stanie odczytać lub zapisać pamięć komputera.

Spójrz na: http://www.geb-enterprise.com/PRODUCTS/Mini_PCIe_to_Raspberry.html http://www.geb-enterprise.com/PRODUCTS/PCIe_Standard_PC_CARD.html

Luciano Gabbani
źródło
1
Kiedy sugerujesz jeden ze swoich produktów, powinieneś to jasno zaznaczyć w swojej odpowiedzi.
Steve Robillard,
1

W rzeczywistości może to być możliwe przy użyciu WSZYSTKICH pinów GPIO, a następnie zwielokrotnienia połowy z nich do pojedynczej linii wyjściowej (PCIe x1) przy 100 MHz i demultipleksowania linii wejściowej do drugiej połowy. Czytam pod tym samym linkiem (pierwszym) podanym w odpowiedzi yogsodoth, że natywny kod C może zarządzać około 22 MHz za pomocą optymalizatora -O3. (Pamiętaj tylko, że zmiany poziomu logicznego są koniecznością. ) Oprogramowanie byłoby jeszcze większym utrudnieniem w interfejsach, ponieważ PCIe nie jest natywnie obsługiwane ...

Josh2003
źródło
0

Może piny GPIO mogłyby połączyć się z czymś, co może rozwiązać problem z PCIx? Oznaczałoby to duży hack i pytanie brzmi. Jak szybko można odczytać dane ze styków GPIO.

Hellonearthis
źródło
1
Nie wystarczająco szybko.
Jivings,
Uzgodnione - Nie dość szybko i MUSI być w czasie rzeczywistym. Linux nie działa w czasie rzeczywistym.
Piotr Kula,
-1

Nie, to nie jest możliwe. Sprzęt GPIO nie jest zaprojektowany do pracy z szybkościami PCI.

użytkownik8226
źródło