资源描述:
《linux驱动开发笔记7驱动模块开发流程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案linux驱动开发笔记7驱动模块开发流程一、驱动模块的搭建1、在Drivers目录下建立自己的模块目录2、建立Makefile文件,见上一篇博客3、建立源文件,源文件矿建如下,其中这两个函数式必须实现的#include#includevoidmyprink(intcmd);//一个模块调用的源文件调用另一个源文件需要在本本件声明一下static__initintmoduleTestInit(void){printk("rmoduleTestInit....r");myprink(100);return0;}s
2、tatic__exitvoidmoduleTestExit(void){myprink(100);printk("rmoduleTestExit....r");}module_init(moduleTestInit);module_exit(moduleTestExit);MODULE_LICENSE("GPL");MODULE_AUTHOR("tangzhi");MODULE_VERSION("1.0");MODULE_DESCRIPTION("thisistestformodule");二、一个驱动模块调用另一个驱动模块的函数A模块要调用B模块的函数则B模块必须这样定义函数#
3、include#includevoidmy_printk(intno){printk("my_printk%d",no);}EXPORT_SYMBOL(my_printk);//必须做这个符号导出才能在其它模块使用精彩文档实用标准文案MODULE_LICENSE("GPL");三、模块参数#include#includestaticintage=10;staticchar*name="zhangsan";staticintarray[10];staticintnum=0
4、;staticcharstring[20];//module_param_named(a,age,int,S_IRUGO);//a代表参数的名字,在命令行输入时insmodtest.koa=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,i
5、nt,&num,S_IRUGO);/./num是输入的数组的元素个数,但不能超过定义数组的大小,输入的命令行array=1,2,3,3,module_param_string(str,string,10,S_IRUGO);//字符的最大长度为10,命令行输入str=tangzhistatic__initintmodule_init3(void){printk("moduleinit!!!r");printk("a=%d!!!r",age);printk("n=%s!!!r",name);printk("arraynum=%d!!!r",num);while(num--
6、){printk("%d",array[num]);}printk("r");printk("str=%sr",string);return0;}static__exitintmodule_exit3(void){printk("moduleexit!!!r");}精彩文档实用标准文案module_init(module_init3);module_exit(module_exit3);MODULE_LICENSE("GPL");精彩文档