驱动程序的加载方式
Linux設(shè)備驅(qū)動程序有兩種加載方式。第一種是直接編譯進(jìn)Linux內(nèi)核,在Linux啟動時加載;第二種是采用內(nèi)核模塊方式,利用模塊可動態(tài)加載。
如果希望將新驅(qū)動程序編譯進(jìn)內(nèi)核,需要修改內(nèi)核代碼和編譯選項(xiàng)。下面以字符型設(shè)備為例,說明如何在Linux 2.6內(nèi)核中添加一個新的設(shè)備驅(qū)動程序。如果驅(qū)動程序代碼源文件為infrared_s3c2410.c,將infrared_s3c2410.c復(fù)制到內(nèi)核代碼的/drivers/char目錄,并在該目錄下的Kconfig文件中添加如下語句:
在該目錄下的Makefile中添加如下語句:
進(jìn)入Linux 2.6內(nèi)核源代碼目錄,執(zhí)行make menuconfig命令后,單擊【device drivers】→【character devices】,進(jìn)入如圖1-3所示的內(nèi)核配置窗口。
在內(nèi)核配置窗口中可以使用上下鍵、空格鍵和回車鍵來進(jìn)行選擇、移動和取消選擇。內(nèi)核配置窗口中以< >開頭的行表示內(nèi)核模塊的配置,以[ ]開頭的行表示內(nèi)核功能的配置。選項(xiàng)前如果為<*>,表示相應(yīng)的模塊將被編譯進(jìn)內(nèi)核。如果選項(xiàng)前是< >則表示不編譯進(jìn)內(nèi)核。這里在【INFRARED Driver for REMOTE】行前面配置為<*>,則infrared_ s3c2410.o將被編譯進(jìn)內(nèi)核。在使用make zImage命令編譯內(nèi)核時所有配置為<*>的項(xiàng)都將被包含在內(nèi)核映像中。
| ? |
| 圖1-3? 在內(nèi)核中增加新驅(qū)動程序 |
如果使用make命令編譯內(nèi)核相當(dāng)于執(zhí)行make zImage和make modules兩個命令
總結(jié)
- 上一篇: Linux设备驱动程序概念
- 下一篇: 编写可加载模块