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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

驱动程序的加载方式

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

Linux設備驅動程序有兩種加載方式。第一種是直接編譯進Linux內核,在Linux啟動時加載;第二種是采用內核模塊方式,利用模塊可動態加載。

如果希望將新驅動程序編譯進內核,需要修改內核代碼和編譯選項。下面以字符型設備為例,說明如何在Linux 2.6內核中添加一個新的設備驅動程序。如果驅動程序代碼源文件為infrared_s3c2410.c,將infrared_s3c2410.c復制到內核代碼的/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?
  • 進入Linux 2.6內核源代碼目錄,執行make menuconfig命令后,單擊【device drivers】→【character devices】,進入如圖1-3所示的內核配置窗口。

    在內核配置窗口中可以使用上下鍵、空格鍵和回車鍵來進行選擇、移動和取消選擇。內核配置窗口中以< >開頭的行表示內核模塊的配置,以[ ]開頭的行表示內核功能的配置。選項前如果為<*>,表示相應的模塊將被編譯進內核。如果選項前是< >則表示不編譯進內核。這里在【INFRARED Driver for REMOTE】行前面配置為<*>,則infrared_ s3c2410.o將被編譯進內核。在使用make zImage命令編譯內核時所有配置為<*>的項都將被包含在內核映像中。

    ?
    圖1-3? 在內核中增加新驅動程序
    采用可加載模塊方式可以讓驅動程序的運行更加靈活,也更利于調試。可加載模塊是用于擴展Linux系統功能的。使用模塊的優點是可以按照需要進行加載,而且不需要重新編譯內核。這種方式控制了內核的大小,而模塊一旦被插入內核,它就和內核其他部分一樣,可以訪問內核的地址空間、函數和數據。可加載模塊通常以.ko為擴展名。在圖1-3中選項前如果為<M>,表示編譯成可加載模塊。在使用make modules命令編譯內核時,所有配置為<M>的項都將被編譯。make modules結束后可以使用下面的命令安裝內核中的可加載模塊文件到一個指定的目錄:
  • make?modules_install?INSTALL_MOD_PATH=/home/usr/modules?
  • 如果使用make命令編譯內核相當于執行make zImage和make modules兩個命令

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。