Использование устройств PCI или PCIe

22

Можно ли использовать какой-то адаптер или даже припаять устройство к плате Raspberry Pi для поддержки устройств PCI или PCI Express? Я думаю о небольших устройствах, таких как сетевые карты или звуковые карты. Я не думаю, что будет достаточно напряжения для запуска чего-либо, например, тюнера или видеокарты.

Кайл Мэйси
источник
PCi express не может быть и речи, так как скорость шины слишком велика для ARM, плюс ее слишком широкий (слишком много входов / выходов) PCI может быть возможен, но бесполезен
Piotr Kula
Вы могли бы столкнуться с огромными проблемами с узким местом, это не может быть сделано.
Что ж, использование выводов ввода-вывода, вероятно, все равно будет быстрее, чем USB. А как насчет использования ISA, EISA или VESA? Я знаю, что они старые, но у них все еще более низкие тактовые частоты, и не так много новых. Или как насчет создания собственного интерфейса?
@ppumkin PCIe будет работать на высоких скоростях шины, когда физический уровень и устройства поддерживают эти скорости, но на самом деле это довольно устойчивый протокол и все равно будет работать в довольно неидеальных ситуациях на пониженных скоростях.
AJMansfield

Ответы:

8

Я сомневаюсь, что это возможно. Вам понадобится какой-то мост и что-то, чтобы соединить его.

Не знаю, зачем вам это нужно, в USB можно подключить сетевые карты / звуковые карты / тюнеры и многое другое

Есть также USB видеоадаптеры, если вы хотите добавить второй экран. Нет смысла пытаться подключить мощную видеокарту для игр и т. Д. Единственная причина, о которой я могу подумать, это то, что вы использовали графический процессор для совместной обработки

Джон Ла Рой
источник
Существует один убедительный вариант использования ... реализация двухдиапазонного маршрутизатора 802.11ac на основе Pi, который безупречно работает в режиме AP (или, вообще говоря, вообще работает в режиме AP). Существует несколько сетевых адаптеров USB 802.11n, которые, по слухам, могут работать в режиме AP, если вы полностью насыщаете шину USB, но на практике, если вы действительно хотите работать в режиме AP должным образом, вам нужна шина PCI-e. чтобы предоставить вам доступ к микросхеме почти в реальном времени, или вам придется переместить всю логику, связанную с точкой доступа, на другой конец шины USB (подключив сами микросхемы 802.11ac в основной полосе непосредственно к главному Pi).
Bitbang3r
1
Принуждение или нет, вы ограничены узкими местами ввода / вывода в и из ЦП. Помните, что это довольно старый, оптимизированный по стоимости чип.
Джон Ла Рой
6

Нет, это невозможно. Raspberry Pi основан на низкобюджетной плате SoC, которая имеет только шину USB, поэтому к ней невозможно подключить карту PCI или PCIe. Ни один адаптер не может быть сделан.

бесшумный
источник
Есть так называемые разъемы PCI-e USB only?
danger89
@ danger89 Извините, я не могу получить ваш вопрос.
SileNT
6

Самый быстрый буфер GPIO, который может быть адресован на данный момент, составляет 5,4 МГц, но большинство библиотек адресации имеют максимальную частоту около 70 кГц: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

Спецификация PCIe работает на частоте 100 МГц (частота регулируется до 200 МГц). http://www.ni.com/white-paper/3767/en/

Может быть способ принудительно установить обратно совместимый режим на PCIe и уменьшить его до старой частоты PCI на 33 МГц, что может означать некоторое перекрытие в частотных диапазонах с обширной буферизацией. Тем не менее, PCIe имеет гораздо более широкую битовую ширину, чем GPIO, и для правильной адресации требуется огромный объем программной инфраструктуры, чего у шины GPIO на Pi просто нет. PCI и PCIe - это больше, чем просто интерфейсы, они включают в себя собственные (сложные) промежуточные протоколы связи, которые вам придется каким-то образом эмулировать.

Можно ли это сделать? Конечно, с надлежащим программным / аппаратным интерфейсом все может быть сделано. Библиотеки уровня ядра могут быть написаны так, чтобы переопределять что угодно и буферизовать что угодно.

Это должно быть сделано? Ну, по сути, вы пытаетесь соединить быструю шину беспроводной / PCIe с более медленным Pi. Это то, что USB-шина Pi уже делает, и делает это неплохо, плюс она делает это изначально и полностью поддерживается.

Попытка запустить PCI / PCIe на Pi будет по сути заново изобретать колесо, и это будет очень сложно. Это может быть интересным учебным упражнением, если у вас есть несколько свободных месяцев, учитывая, что, скорее всего, вы врежетесь в стену и не сможете двигаться вперед в любой момент. Звучит исключительно не выгодно для меня. ;-)

yogsodoth
источник
1
Если вы решите продолжить, всегда есть следующее: pinouts.ru/Slots/pci_express_pinout.shtml Обратите внимание, что вашей основной проблемой будет тактовая частота, а не ширина интерфейса. Да, некоторые карты PCIe / PCIx имеют много контактов. Нет, не все делают, и многим не нужны огромные распиновки. Есть несколько очень маленьких 1x карт. Поскольку тактовая частота составляет 2,5 Гбит / с, вам нужен какой-то интерфейс буферизации с большим объемом памяти, и я не уверен, что процессор Пи способен воспроизводить такое количество данных, учитывая, что вы не собираетесь работает в режиме реального времени.
Йогсодот
1

Плата PCIE2RASPI может соединять плату PCIE (мини или стандартную) с CycloneIV GX Fpga с сигналами ввода-вывода платы ввода-вывода Raspberry. Отрезая контакты питания на жатке, он может быть прикреплен плоским кабелем к Raspberry исторических. Fpga на мини-PCIe хосте является конечной точкой, обладающей возможностью главной цели, фактически она позволяет Raspberry читать или записывать память ПК.

Посмотрите на: http://www.geb-enterprise.com/PRODUCTS/Mini_PCIe_to_Raspberry.html http://www.geb-enterprise.com/PRODUCTS/PCIe_Standard_PC_CARD.html

Лучано Габбани
источник
1
Когда вы предлагаете один из ваших продуктов, вы должны четко указать это в своем ответе.
Стив Робиллард
1

На самом деле это может быть возможно путем использования ВСЕХ контактов GPIO, затем мультиплексирования половины из них в одну выходную линию (PCIe x1) на частоте 100 МГц и демультиплексирования входной линии в другую половину. Я прочитал по той же ссылке (первой), которая указана в ответе yogsodoth, что нативный код C может работать на частоте около 22 МГц с помощью оптимизатора -O3. (Просто помните, что логические переключатели уровня являются обязательными. ) Программное обеспечение будет еще более болезненным для интерфейса, поскольку PCIe изначально не поддерживается ...

Josh2003
источник
0

Может быть, контакты GPIO могут подключаться к чему-то, что может адресовать PCIx? Это будет означать большой взлом, и вопрос в том. Как быстро можно считывать данные с выводов GPIO.

Hellonearthis
источник
1
Не достаточно быстро.
Jivings
Согласовано - не достаточно быстро, и это должно быть в режиме реального времени. Linux не в реальном времени.
Петр Кула
-1

Нет, это невозможно. Аппаратное обеспечение Gpio не предназначено для работы на скоростях PCI.

user8226
источник