我正在尋找一個內核模式調用,我可以從驅動程序,用戶空間實用程序或系統調用中調用內核模式調用,它會要求內核查看PCI總線並完全重新運行其初始化或初始化一個特定的設備。具體來說,我需要內核識別引導後添加到總線的設備,然後配置其地址空間,中斷和其他配置參數,最後啓用設備,以便我可以爲它加載驅動程序(除非這一切作爲驅動程序負載的一部分發生)。有沒有辦法讓Linux內核重新運行它的PCI初始化代碼?
我卡上的2.4.x系列的內核對於這一點,和我目前正在與2.4.20工作,但將轉移到2.4.37,如果它很重要。發行版是一個精簡版的Red Hat 7.3,運行在RAM磁盤上,但是我可以添加任何需要的工具來完成這個工作(只要它們與2.4系列兼容)。
如果一些背景將有助於澄清我想要做的事:從冷啓動,在Linux下一次我用GPIO編程的FPGA。部分FPGA一經編程就實現了一個簡單的PCI設備。目前,在對FPGA進行編程之後,我重新啓動系統,Linux在啓動後識別設備併爲其加載驅動程序。
而不是需要重新啓動,我想簡單地要求內核在啓動過程中執行任何操作以查找PCI設備(我將內核配置爲自行查找PCI設備,而不是詢問BIOS的信息,所以BIOS不需要知道這個設備(我希望))。
我相信Linux能夠在設備編程之後但在重新啓動之前看到該設備,因爲scanpci
將在編程後顯示設備,lspci -H 1
也會顯示。我只需要一種方法將其設置爲/proc/pci
,並已配置並啓用。
您應該前往「姐妹」網站:http://serverfault.com/並在那裏詢問。這是與編碼相關的問題,你的確切問題似乎更多的是與系統管理員有關,所以他們可能能夠幫助你更快/更好。 – Stan 2009-12-02 23:48:41