Chinaunix首页 | 论坛 | 博客
  • 博客访问: 246148
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 273
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-27 23:34
个人简介

To follow the path,look to the master,follow the master.

文章分类

全部博文(35)

文章存档

2019年(1)

2018年(1)

2017年(1)

2016年(8)

2015年(24)

分类: 嵌入式

2019-01-16 09:00:51

 参照 ldd3   linux设备驱动程序
模块的理解:模块预先注册自己,初始函数的任务是以后调用模块做准备。
示例程序2个文件  hello.c、Makefile
hello.c
1 #include
  2 #include
  3 MODULE_LICENSE("Dual BSD/GPL");  /*模块遵循协议GPL /BSD*/
  4 /*加载模块时调用函数*/
  5 static int hello_init(void)
  6 {
  7     printk("hello kernel!");
  8     return 0;
  9 }
 10 static void hello_exit(void) /*卸载模块时调用函数*/
 11 {
 12     printk("goodbye kernel!");
 13 }
 14 module_init(hello_init);   /*宏装载、卸载模块*/
 15 module_exit(hello_exit);
Makefile
  1 KERNEL_DIR=/opt/linux-3.5  #模块编译依赖内核,此处是编译内核的路径
  2 all:
  3     make -C $(KERNEL_DIR) M=`pwd` modules
  4 clean:
  5     make -C $(KERNEL_DIR) M=`pwd` clean
  6 clean:
  7 obj-m+=hello.o #obj-m 代表以模块形式
  8 #当make的目标为all时,-C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile;M=$(PWD) 表明然后返回到当前目录
    继续读入、执行当前的Makefile。

模块的使用 
1.insmod 加载模块
[root@FriendlyARM my_driver]# insmod hello.ko 
[ 3702.005000] hello kernel!
2.  卸载模块
[root@FriendlyARM my_driver]# rmmod hello
goodbye kernel!

阅读(5322) | 评论(0) | 转发(0) |
0

上一篇:段码屏ht1621驱动

下一篇:没有了

给主人留下些什么吧!~~