設備驅動開發3-驅動模塊的加載與卸載


 1、Linux驅動的兩種運行方式

1.將驅動編譯進Linux內核中,當內核啟動就會自動運行驅動程序;2.將驅動編譯成模塊(.ko文件),在內核啟動以后使用“insmod”命令加載驅動模塊。

2、注冊模塊加載和卸載函數

module_init(xxx_init);    //注冊模塊加載函數. xxx_init:需要注冊的具體函數
module_exit(xxx_exit);  //注冊模塊卸載函數. xxx_exit:需要注冊的具體函數

  當使用“insmod”命令加載驅動的時候,xxx_init會被調用;當使用“rmmod”命令加載驅動的時候,xxx_exit會被調用

3、添加LICENSE和作者信息

MODULE_LICENSE("GPL");  //LICENSE采用GPL協議
MODULE_AUTHOR("mk");   //添加作者信息

4、示例

/*************************************************************
* @brief  //TODO:驅動入口函數
*************************************************************/
 static int __init led_init(void)
 {
     //驅動入口函數具體內容
     return 0;
 }

 /*************************************************************
 * @brief  //TODO:驅動出口函數
 *************************************************************/
static void __exit led_exit(void)
{
    //驅動出口函數具體內容
}

module_init(led_init);
module_init(led_exit);

MODULE_LICENSE("GPL");  //LICENSE采用GPL協議
MODULE_AUTHOR("mk");   //添加作者信息

5、驅動模塊加載和卸載命令

  加載驅動模塊的通常流程:

1.將.ko文件拷貝進/lib/module/4.1.15/kernel/driver/...目錄下

  根據具體用途區別分為net、ide、scsi、usb、video、parport、md、block、ata等

2. 運行depmod -a,更新模塊依賴,主要是更新module.dep文件

3. 運行modprobe加載內核模塊

4.驅動記載成功以后會在/dev目錄下創建相應的節點文件xxx,輸入命令ls/dev/xxx -l可以查看節點信息。

4.1 insmod

insmod drv.ko //加載drv.ko模塊

  insmod不能解決模塊的依賴關系

4.2 modprobe

  modprobe會分析模塊的依賴關系,默認去/lib/modules/4.1.15目錄中查找模塊,然后會將所有的依賴模塊都加載到內核中。一般自己制作的根文件系統中不會有這個目錄,需要自己創建。

4.3 rmmod

  卸載驅動模塊

4.4 modprobe -r

  卸載驅動模塊所依賴的其他模塊

4.5 lsmod

  列出內核已載入模塊的狀態

 


免責聲明!

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



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