日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

驱动程序的加载方式

發(fā)布時間:2024/9/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 驱动程序的加载方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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文件中添加如下語句:

  • config?INFRARED_REMOTE ?
  • ????tristate?"INFRARED?Driver?for?REMOTE" ?
  • ????depends?on?ARCH_S3C64XX?||?ARCH_S3C2410 ?
  • ????default?y ?
  • ????help ?
  • 在該目錄下的Makefile中添加如下語句:
  • Obj-$(CONFIG_INFRARED_REMOTE)+=?infrared_s3c2410.o?
  • 進(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ū)動程序
    采用可加載模塊方式可以讓驅(qū)動程序的運(yùn)行更加靈活,也更利于調(diào)試。可加載模塊是用于擴(kuò)展Linux系統(tǒng)功能的。使用模塊的優(yōu)點(diǎn)是可以按照需要進(jìn)行加載,而且不需要重新編譯內(nèi)核。這種方式控制了內(nèi)核的大小,而模塊一旦被插入內(nèi)核,它就和內(nèi)核其他部分一樣,可以訪問內(nèi)核的地址空間、函數(shù)和數(shù)據(jù)??杉虞d模塊通常以.ko為擴(kuò)展名。在圖1-3中選項(xiàng)前如果為<M>,表示編譯成可加載模塊。在使用make modules命令編譯內(nèi)核時,所有配置為<M>的項(xiàng)都將被編譯。make modules結(jié)束后可以使用下面的命令安裝內(nèi)核中的可加載模塊文件到一個指定的目錄:
  • make?modules_install?INSTALL_MOD_PATH=/home/usr/modules?
  • 如果使用make命令編譯內(nèi)核相當(dāng)于執(zhí)行make zImage和make modules兩個命令

    總結(jié)

    以上是生活随笔為你收集整理的驱动程序的加载方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。