2010-12-28 4 views
1

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

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

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

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

ответ

0

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

rmmod yourmodule 
modprobe yourmodule 

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

+0

Мы действительно пробовали это, но это не помогло. Возможно, нам нужно как-то включить hotplug? Не знаете, как и если компьютерная шина даже способна на это. И/или если ядро ​​необходимо перекомпилировать для включения hotplug. Благодаря! – guraaf

+0

Возможно, попробуйте вот так, отключите устройство от устройства, rmmod, подключите ваше устройство, модуль modprobe. – ismail

Смежные вопросы