linux驱动开发笔记7驱动模块开发流程.doc

linux驱动开发笔记7驱动模块开发流程.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux驱动开发笔记7驱动模块开发流程

linux驱动开发笔记7驱动模块开发流程 一、驱动模块的搭建 在Drivers目录下建立自己的模块目录 建立Makefile文件,见上一篇博客 建立源文件,源文件矿建如下,其中这两个函数式必须实现的 #includelinux/init.h #includelinux/module.h void myprink(int cmd); //一个模块调用的源文件调用另一个源文件需要在本本件声明一下 static __init int moduleTestInit(void) { printk(\r\nmoduleTestInit....\r\n); myprink(100); return 0; } static __exit void moduleTestExit(void) { myprink(100); printk(\r\nmoduleTestExit....\r\n); } module_init(moduleTestInit); module_exit(moduleTestExit); MODULE_LICENSE(GPL); MODULE_AUTHOR(tangzhi); MODULE_VERSION(1.0); MODULE_DESCRIPTION(this is test for module); 二、一个驱动模块调用另一个驱动模块的函数 A模块要调用B模块的函数 则B模块必须这样定义函数 #include linux/init.h #include linux/module.h void my_printk(int no) { printk(my_printk %d\n, no); } EXPORT_SYMBOL(my_printk); //必须做这个符号导出才能在其它模块使用 MODULE_LICENSE(GPL); 三、模块参数 #include linux/init.h #include linux/module.h static int age = 10; static char *name = zhangsan; 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(module init!!!\r\n); printk(a = %d!!!\r\n,age); printk(n = %s!!!\r\n,name); printk(array num = %d!!!\r\n,num); while(num--){ printk( %d ,array[num]); } printk(\r\n); printk(str = %s\r\n,string); return 0; } static __exit int module_exit3(void) { printk(module exit!!!\r\n); } module_init(module_init3); module_exit(module_exit3); MODULE_LICENSE(GPL);

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档