【嵌入式Linux驱动程序-基础篇】 - 驱动模块组成

2019-07-12 15:15发布

       驱动模块主要包含头文件、模块参数(可选)、模块功能函数(可选)、模块加载卸载函数以及模块许可声明等。这些模块组成具体作用如下:       1 头文件        驱动程序与内核联系十分密切,因此其所需的大多函数声明以及宏定义均来自内核,需要根据实际使用需求从内核中加入所需的头文件。驱动模块中有个必须的头文件如下: #include  // 包含了加载模块需要用到的符号和函数定义 #include  // 包含了加载函数和卸载函数的宏定义       2 模块参数        模块参数非必选的,模块参数是模块在被加载时可传递参数值,这些参数对应内部的全局变量。       3 模块加载和卸载函数       通过insmod或modprobe命令加载内核模块时,模块的加载函数会自动被内核调用,完成模块的相关初始化工作。       通过rmmod命令卸载某模块时,模块的卸载函数会自动被内核执行,完成与模块装载函数相反的功能。       4 模块许可声明       模块许可声明描述内核模块的许可权限,如果一个模块没有任何许可,模块被加载时,将会收到内核内污染(kernel tainted)的警告。内核可以识别的许可权限有如下: MODULE_LICENSE("GPL"); // 任意版本的GNU公共许可权 MODULE_LICENSE("GPL v2"); // GPL版本2许可权 MODULE_LICENSE("GPL and additional rights"); // GPL及其附加许可权 MODULE_LICENSE("Dual BSD/GPL"); // BSD/GPL双重许可权 MODULE_LICENSE("Dual MPL/GPL"); // MPL/GPL双重许可权 MODULE_LICENSE("Proprietary"); // 专有许可权