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

       驱动模块主要包含头文件、模块参数(可选)、模块功能函数(可选)、模块加载卸载函数以及模块许可声明等。这些模块组成具体作用如下:

      1 头文件

       驱动程序与内核联系十分密切,因此其所需的大多函数声明以及宏定义均来自内核,需要根据实际使用需求从内核中加入所需的头文件。驱动模块中有个必须的头文件如下:

#include <linux/module.h>  // 包含了加载模块需要用到的符号和函数定义

#include <linux/init.h>    // 包含了加载函数和卸载函数的宏定义

      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");                // 专有许可权

猜你喜欢

转载自blog.csdn.net/santapasserby/article/details/81128366
今日推荐