裝置
驅動程式的載入過程如下
圖所示:
1. 當在oal
中的oeminit
執行時,需要啟動乙太網除錯、串列埠除錯等除錯服務;
2. oal可能需要配置和列舉乙個匯流排,如
pci匯流排,以便操作乙個用於除錯的裝置;
3. oal負責將這個資源資訊放到乙個登錄檔鍵,並使驅動程式可訪問它。然後,
device.exe
被載入和啟動,它載入資源管理器以從登錄檔讀取乙個可用的資源列表。
4. device.exe從
[hkey_local_machine/drivers/rootkey]
載入登錄檔列舉器,登錄檔列舉器開始掃瞄登錄檔過程,以獲得由
rootkey
下的子鍵載入的更多匯流排和裝置。登錄檔列舉器被用於替代乙個
isa匯流排驅動。所有
isa資源都必須通過登錄檔來分配,
regenum.dll(busenum.dll)
也能被列舉
isa裝置的登錄檔。
5. drivers的乙個子鍵可以是
pci,通常,在
pci鍵下列出的
dll是
pci匯流排驅動
pcibus.dll
,它由登錄檔列舉器載入。
pci匯流排驅動的登錄檔入口是包括
pci匯流排可用的資源。通常設定
[hkey_local_machine/drivers/rootkey/order]
是為了在最後載入
pci匯流排驅動。這是為了在配置靈活的
pci裝置資源之前先分配固定的資源,
pci裝置驅動程式的登錄檔入口列在
pci鍵之下,它代表駐留在
pci匯流排上的裝置。
驅動程式的載入方式
linux裝置驅動程式有兩種載入方式。第一種是直接編譯進linux核心,在linux啟動時載入 第二種是採用核心模組方式,利用模組可動態載入。如果希望將新驅動程式編譯進核心,需要修改核心 和編譯選項。下面以字元型裝置為例,說明如何在linux 2.6核心中新增乙個新的裝置驅動程式。如果驅動程式 原始...
驅動程式開機自動載入
將驅動程式編譯進核心的方法比較多,既可以進行靜態編譯,也可以動態載入。所以的靜態編譯,也就是在直接將驅動程式原始碼放入核心原始碼,在編譯核心原始碼時,就已經將驅動程式編譯進了核心。但是,我們也經常會遇到需要動態載入核心驅動。在編譯生成了驅動程式後,使用insmod命令載入即可,例如 insmod k...
USB驅動程式的載入 二
應用程式 usb client driver 層一 usbd.dll 層二 ohci.dll 層三 wince的usb驅動分為三層,如上圖所示.從上到下,姑且將其稱為層一,層二,層三。層一通過gc usbfuncs來呼叫層二所提供的功能,而層二通過gc hcdfuncs來呼叫層三實現的功能,而應用程...