найти и включить устройство PCIe, подключенное после загрузки Linux - PullRequest
1 голос
/ 28 декабря 2010

Мы разрабатываем встраиваемую систему, подключенную к хосту ПК с Linux через PCIe.Прямо сейчас, на этапе реализации и отладки, мне часто нужно выключать и включать устройство или пробовать разные платы.Это вызывает проблему с Linux (Ubuntu или Debian), работающим на ПК Intel.

Обычно ПК загружается, когда мне нужно вставить тестируемое устройство.Как и ожидалось, Linux не находит устройство, и приложение не может с ним общаться.Если я сделаю «lspci -v», то это не перечисляет наше устройство.Наше приложение использует libpci (программы, созданные с -lpci), чтобы получить доступ к единственному BAR, предоставляемому нашим устройством, которое затем называется «mmap» через наш модуль ядра, который выполняет page_remap.Наш обходной путь - перезагрузить компьютер, после чего устройство станет видимым и включенным.

Я ищу решение, при котором мне не нужно перезагружать компьютер так часто (десятки раз в день).Не могу ли я подключить устройство, а затем запустить какой-нибудь код, чтобы ядро ​​Linux обнаружило и включило BAR нашего устройства?Я надеялся найти некоторую документацию по использованию библиотеки поддержки PCI и примеры, но не смог.Любые указатели приветствуются.Возможно, есть вызовы вроде pci_enable_device () или pci_find_device () и т. Д., Которые я могу выполнить в своем коде?Я не могу понять, хотяЯ могу написать модули ядра, а также пользовательский код, чтобы это работало, т.е. у меня нет никаких ограничений относительно того, есть ли у меня root-доступ или нет.

Большое спасибо за ваши советы и советы, Guraaf

1 Ответ

0 голосов
/ 28 декабря 2010

Вы пытались перезагрузить свой модуль (пока устройство отключено) с помощью:

rmmod yourmodule
modprobe yourmodule

И снова подключите устройство.

...