Linux設備驅動動態插入內核與直接集成到內核方式的利弊分析


引子:公司做了一款基於Linux的以太網接口板,目前由我來進行維護,該板主CPU采用PowerPC,運行Linux系統,外接兩塊DPRAM,DPRAM是用字符設備驅動程序的方式寫的,直接集成在了內核源代碼中,通過和內核一塊編譯來進行燒錄,接手該板的相關程序后,我和同事探討了一下DPRAM的驅動為什么采用集成到內核隨內核整體編譯而沒有采用單獨編譯動態加載的方式的問題,今天自己又簡單的總結了一下,於是有了此篇BOLG。

正文:

  在Linux環境開發設備驅動程序,要使驅動能共正常工作,主要有兩種方式,

  第一種是集成到內核,隨內核一起編譯。即將開發完的設備驅動程序文件(C、H文件)直接放在Linux內核源代碼的相關目錄下(比如開發的網絡設備驅動程序,可以放在/net目錄下),在編譯內核的時候直接隨內核一塊編譯。

  第二種是單獨編譯,動態插入內核。即將開發完成的設備驅動程序文件(C、H文件)直接用gcc工具(或交叉工具鏈)進行編譯,然后通過insmod(插入內核)或者(rmmod)從內核卸載的方式進行使用或刪除,在做最后的產品時,一般會通過寫一個腳本文件,使得系統在上電的時候能夠自動的insmod相關驅動程序。

  好了,介紹完了Linux設備驅動程序常見的兩種開發、加載方式,下面對這兩種方式進行一下對比,還是采用表格的形式吧,更加直觀明了。

方式 優點 缺點
集成到內核

1、直接隨內核一塊編譯,過程相對簡單,可以通過Linux的menuconfig進行配置。

2、不需要寫初始化腳本。

3、對於開發完成的比較穩定的設備驅動程序,可以隨內核編譯成一個內核文件,便於量產時的燒錄。

1、對Linux內核進行了一定的修改,使得系統的不穩定性增加。

2、每次設備驅動程序發生改變后都要重新編譯內核,效率較低,不適合開發、調試階段。

動態插入到內核

1、設備驅動程序可以動態的插入、卸載,一旦驅動程序出現問題,方便了驅動程序的調試。

2、沒有改變內核的配置文件,對系統的穩定性影響較小。

1、需要對設備驅動程序進行單獨編譯,還要寫系統上電的初始化腳本,工作量較大。

2、在實際的生產過程中,除了要燒錄Linux內核文件外,還要單獨燒錄設備驅動程序文件,工序復雜,不適合量產。

 

  以上就是我自己對這兩種方式的一點總結,初學設備驅動程序,有不對的地方還望各位大牛指正,多謝:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM