linux驱动开发笔记7驱动模块开发流程
一、驱动模块的搭建
1、 在Drivers目录下建立自己的模块目录 2、 建立Makefile文件,见上一篇博客
3、 建立源文件,源文件矿建如下,其中这两个函数式必须实现的
#include
void myprink(int cmd); //一个模块调用的源文件调用另一个源文件需要在本本件声明一下
static __init int moduleTestInit(void) {
printk(\ myprink(100); return 0; }
static __exit void moduleTestExit(void) {
myprink(100);
printk(\}
module_init(moduleTestInit); module_exit(moduleTestExit); MODULE_LICENSE(\MODULE_AUTHOR(\MODULE_VERSION(\
MODULE_DESCRIPTION(\
二、一个驱动模块调用另一个驱动模块的函数
A模块要调用B模块的函数 则B模块必须这样定义函数 #include
void my_printk(int no) { printk(\}
EXPORT_SYMBOL(my_printk); //必须做这个符号导出才能在其它模块使用
MODULE_LICENSE(\三、模块参数
#include
static char *name = \static int array[10]; static int num = 0; static char string[20];
//module_param_named(a,age,int,S_IRUGO); //a代表参数的名字,在命令行输入时insmod test.ko a=10 .如果输入a参数则age的值为a=value的value值,若不输入参数,则age为默认的定义的值10
//module_param_named(n,name,charp,S_IRUGO);//同上
下面两个函数和上面两个函数一样 module_param(age,int,S_IRUGO); module_param(name,charp,S_IRUGO);
module_param_array(array,int,&num,S_IRUGO);/./num是输入的数组的元素个数,但不能超过定义数组的大小,输入的命令行array=1,2,3,3,
module_param_string(str,string,10,S_IRUGO); // 字符的最大长度为10,命令行输入str=tangzhi
static __init int module_init3(void) { printk(\ printk(\ printk(\ printk(\ while(num--){ printk(\ } printk(\ printk(\ return 0; }
static __exit int module_exit3(void) { printk(\}
module_init(module_init3); module_exit(module_exit3); MODULE_LICENSE(\
相关推荐: