skywang12345

导航

< 2025年7月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
统计
 

Linux PC端驱动程序实例

1新建驱动程序

新建程序文件hello.c

(1)hello.c的路径如下:

helloworld/hello.c

(2)hello.c的内容如下:

复制代码
 1 #include <linux/init.h>
 2 #include <linux/module.h>
 3 
 4 static int __init hello_init(void)
 5 {
 6     printk("%s\n", __FUNCTION__);
 7     return 0;
 8 }
 9 
10 static void __exit hello_exit(void)
11 {
12     printk("%s\n", __FUNCTION__);
13 }
14 
15 module_init(hello_init);
16 module_exit(hello_exit);
View Code
复制代码

 

2添加配置文件

新建配置文件Makefile

(1)Makefile的路径如下:

Helloworld/Makefile

(2)Makefile的内容如下:

复制代码
1 obj-m := hello.o  #这个是要中间文件
2 Kernel_path=/usr/src/linux-headers-$(shell uname -r)  #内核存在的路径
3 all:
4     make -C $(Kernel_path) M=$(PWD) modules
5 clean:
6     make -C $(Kernel_path) M=$(PWD) clean
View Code
复制代码

 

3编译

进入helloworld目录,并执行make命令,生成hello.ko模块文件

 

4加载/卸载模块

4.1加载模块

(1)执行以下命令加载模块

# insmod hello.ko

(2)用dmesg查看信息

# hello_init

 

4.2卸载模块

(1)执行以下命令卸载模块

# rmmod hello.ko

(2)用dmesg查看信息

# hello_exit

 

 

posted on 2013-05-14 22:04  如果天空不死  阅读(435)  评论(0)    收藏  举报
编辑推荐:
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
阅读排行:
· 推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!
· 瞧瞧别人家的接口重试,那叫一个优雅!
· 【EF Core】框架是如何识别实体类的属性和主键的
· MySQL 13 为什么表数据删掉一半,表文件大小不变?
· 上周热点回顾(7.7-7.13)
 
点击右上角即可分享
微信分享提示