2010-12-28 15 views
1

Wir entwickeln ein Embedded-System, das über PCIe mit einem Linux-PC-Host verbunden ist. Gerade jetzt, in der Implementierungs- und Debug-Phase, muss ich oft das Gerät ausschalten und einschalten oder verschiedene Boards ausprobieren. Dies verursacht ein Problem mit dem Linux (Ubuntu oder Debian) auf dem Intel PC.Suchen und Aktivieren eines PCIe-Geräts, das nach dem Booten von Linux angeschlossen ist

Normalerweise wird der PC gebootet, wenn ich das zu testende Gerät einsetzen muss. Wie erwartet, findet das Linux das Gerät nicht und die Software-App kann nicht mit ihm sprechen. Wenn ich "lspci -v" mache, dann listet es unser Gerät nicht auf. Unsere Anwendung verwendet libpci (Programme, die mit -lpci erstellt wurden), um Zugriff auf den einzelnen BAR zu erhalten, der von unserem Gerät bereitgestellt wird, der dann über unser Kernelmodul, das eine page_remap ausführt, "mmap" ist. Unsere Problemumgehung besteht darin, den PC neu zu starten, nach dem das Gerät sichtbar und aktiviert ist.

Ich bin auf der Suche nach einer Lösung, wo ich den PC nicht so oft neu starten muss (zig Mal während eines Tages). Kann ich das Gerät nicht anschließen und Code ausführen, damit der Linux-Kernel den BAR unseres Geräts erkennt und aktiviert? Ich hatte gehofft, eine Dokumentation über die Verwendung der PCI-Support-Bibliothek und Beispiele zu finden, war aber nicht dazu in der Lage. Alle Hinweise geschätzt. Vielleicht gibt es Aufrufe wie pci_enable_device() oder pci_find_device() etc., die ich in meinem Code ausführen kann? Ich kann es nicht herausfinden. Ich kann sowohl Kernelmodule als auch Benutzercode schreiben, um dies zum Laufen zu bringen, d. H. Ich habe keine Einschränkungen, ob ich Root-Zugriff habe oder nicht.

Vielen Dank für Ihre Beratung und Zeiger, Guraaf

Antwort

0

Haben Sie versucht, das Modul neu zu laden (während das Gerät eingesteckt ist) mit:

rmmod yourmodule 
modprobe yourmodule 

und das Gerät wieder anschließen.

+0

Wir haben das versucht, aber das hat nicht geholfen. Vielleicht müssen wir Hotplug irgendwie aktivieren? Nicht sicher, wie und ob der PC-Bus überhaupt dazu in der Lage ist. Und/oder wenn der Kernel neu kompiliert werden muss, um Hotplug zu erlauben. Vielen Dank! – guraaf

+0

Vielleicht versuchen Sie so, ziehen Sie das Gerät, rmmod, stecken Sie Ihr Gerät ein, modprobe Modul. – ismail