驱动入门hello实例解析
来源:互联网 发布:ubuntu ipython 使用 编辑:程序博客网 时间:2024/06/04 19:20
首先在终端vim一个文件名为hello.c,输入内容如下:
1 #include <Linux/module.h>
2 #include <linux/init.h>
3
4 MODULE_LICENSE("GPL");
5 MODULE_AUTHOR("Snooy");
6
7 static int howmany = 10;
8 module_param(howmany,int,S_IRUGO);
9
10 static char *name = "Snooy";
11 module_param(name,charp,S_IRUGO);
12
13 static __init int hello_init(void) //只被用一次就丢弃__init
14 {
15 int i = 0;
16 for(; i<howmany; i++)
17 printk(KERN_EMERG"this is %s!\n",name);
18 return 0;
19 }
20
21 static __exit void hello_exit(void)
22 {
23 printk("<0>goodbye!\n");
24 }
25
26 module_init(hello_init); //module_...是一个宏
27 module_exit(hello_exit);
28 //另一种写法如下:
29 //若不要18/19行,则7,13行可改为函数的如下:
30 //int init_module(void) 函数调运
31 //void exit_module(void) 函数调运
编写编译需要的Makefile(注意这里好像必须大写M,否则报错),内容如下:
1 ifeq ($(KERNELRELEASE),)
2 KERNELDIR ?= /usr/src/kernels/2.6.18-164.el5-i686/ #这里的路径依据自己虚拟机linux版本决定(查看指令:uname -r)
3 PWD := $(shell pwd) #这里获取带扩展的路径
4 modules:
5 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
6
7 .PHONY: clean
8 clean:
9 rm -rf *.ko *.o Module* *.mod*
10 else
11 obj-m := hello.o
12 endif
解释:该Makefile在执行make时会进入两次,具体自己根据if等理解。
使用指令:
insmod hello.ko 安装模块
lsmod 查看已安装模块
rmmod hello 或 rmmod hello.ko 删除模块
dmesg 查看模块运行信息(最后几行),或者查看cat /var/log/messages信息也行。
到此一个简单的入门驱动模块编写安装与体验结束。
转自:http://blog.csdn.net/yanbober/article/details/8278434
- 驱动入门hello实例解析
- 驱动入门hello实例解析
- 驱动入门hello world
- Hello Docker入门实例
- Struts2入门-Hello Word实例
- Struts2入门+Hello Word实例
- Struts2入门-Hello Word实例
- Struts2入门-Hello Word实例
- I2C驱动实例解析
- Android驱动开发之Hello实例
- 关于hello world驱动的解析
- TQ2440驱动-hello world(入门,注意事项)
- linux驱动编程入门---hello,kernel
- TQ2440驱动-hello world(入门,注意事项)
- 驱动学习,入门基础--Hello World
- linux驱动入门-hello设备驱动程序编写
- linux驱动入门之hello wrold
- fl2440——驱动入门,hello world!
- 内核抢占1
- Android 日期选择 DatePickerDialog
- WWDC2017于6月5日至9日在硅谷举行
- fast-RCNN论文笔记(3)
- 公布几个设备的sysObjectId取值
- 驱动入门hello实例解析
- 【软考】算法-选择
- Android学习之JSON字符串格式化,自动缩进
- 转行程序员的故事
- cocoapods私有库
- linux下vi命令大全
- 天气接口
- setsockopt用法大全
- 疯牛(aggressive cows)