Linux網(wǎng)卡驅(qū)動程序編寫
模塊可以動態(tài)地加載、卸載。在2.0.xx版本里,還有kerneld自動加載模塊,但是2.2.xx中已經(jīng)取消了kerneld。手工加載使用insmod命令,卸載用rmmod命令,看內(nèi)核中的模塊用lsmod命令。
編譯驅(qū)動程序用gcc,主要命令行參數(shù)-DKERNEL-DMODULE。并且作為模塊加載的驅(qū)動程序,只編譯成obj形式(加-c參數(shù))。編譯好的目標文件放在/lib/modules/2.x.xx/misc下,在啟動文件里用insmod加載。
四.進一步的閱讀
Linux程序設計資料可以從網(wǎng)上獲得。這就是開放源代碼的好處。并且沒有什么“未公開的秘密”。我編寫驅(qū)動程序時參閱的主要資料包括:
Linux內(nèi)核源代碼
byollyinBBS水木清華站
可以選擇一個模板作為開始,內(nèi)核源代碼里有一個網(wǎng)絡驅(qū)動程序的模板,
drivers/net/skeleton.c。里面包含了驅(qū)動程序的基本內(nèi)容。但這個模板是以以太網(wǎng)設備為對象的,以太網(wǎng)的處理在Linux系統(tǒng)里有特殊“待遇”,所以如果不是以太網(wǎng)設備,有些細節(jié)上要注意,主要在初始化程序里。
最后,多參照別人寫的程序,聽聽其他開發(fā)者的經(jīng)驗之談大概是最有效的幫助了。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論