- 4
- 0
- 约3.01万字
- 约 26页
- 2021-01-26 发布于河北
- 举报
驱动
TOC \o 1-2 \h \z \u 1 模块 2
1.1 模块概念 2
1.2 模块的描述规则 2
1.3 模块的编译 2
1.4 模块的使用 3
1.5 __init __exit宏 4
1.6 Printk函数 4
1.7 内核符号 4
2 设备驱动 6
2.1 linux设备驱动的三种类型 6
2.2 字符设备特点 6
2.3 字符设备的描述 6
2.4 字符设备的调试 8
2.5 linux访问外设与使用 8
2.6 自动创建设备文件 9
2.7 GPIO 10
2.8 杂项设备 11
2.9 自动安装驱动模块 12
2.10 高级字符驱动IOCTL接口 13
3 linux互斥同步与中断处理 13
3.1原子操作: 13
3.2自旋锁 14
3.3信号量与互斥锁 15
3.4等待队列 16
3.5linux中断处理 17
3.6软中断 18
3.7 内核定时器 21
1 模块
模块机制,作用提高linux操作系统的扩充性。
模块概念
动态可加载内核模块LKM。
内核空间运行。
是不是一执行文件,是一个没有经过链接,不能独立运行的一个目标文件(.c-.0-.ko)
通过insmod命令,把内核模块载入内核空间,rmmod命令 。koc从内核空间移除。
一个设备驱动的驱动代码对应一个module
模块的驱动源代码里面,使用那些头文件是在内核源代码,是不能使用C语音的库存函数。
1.2 模块的描述规则
一个简单的module:
#includelinux/module.h//内核头文件
#includelinux/kernel.h
Static int _init test1_init(void) //入口函数(一般放驱动初始化代码,比如申请资源,注册中断,注册字符设备。。。。)
{
Printk(“hello world!\n”);
Return 0;
}
注意:加关键字static代表的是静态函数,静态函数的调用结果不会访问或者修改任何对象(非static)数据成员,且只能本文件内使用,不能在其他文件使用,防止同名函数冲突。
Static void _exit teste1_exit(void)//出口函数(释放初始化资源)
{
Printk(“goodbye!\n”);
}
Module_init(test1_init);//驱动入口 #insmod *.ko
Module_exit(test1_exit);//驱动的出口 #rmmod *.ko
//#modinfo *.ko 可以查看module的信息,不是必须的
MODULE_AUTHOR(“fbx@GEC”);
MODULE_DESCRIPTION(“the first module of drivers”);
MODULE_LICENES(“GPL”);
MODULE_VERSION(“V1.0”
注意 1. 由module_init()指定模块入口函数test_init,像应用程序main(),入口函数返回值int 0 代表成功,非0代表失败。
2. 由module_exit()宏 指定出口函数test_txit 退出函数返回值void
3. MODULE_GLICENSE等宏描述的是当前模块对应的信息。
模块的编译
Makefile文件:
obj-m += module.o
KERN_DIR=/home/gec/syscro/kernel/android-kernel-samsung-dev
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERN_DIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KERN_DIR) M=$(PWD) modules clean
obj-m += module.o (module.c)
//将驱动源代码编译成一个独立的module ?.ko
KERN_DIR=/home/gec/syscro/kernel/android-kernel-samsung-dev 驱动源代码在编译时候,所使用内核源码包的目录路径(跟安装当前模块的内核应一致)
PWD :=$(shell pwd) 当前目录
$(MAKE) –C $(KERN_DIR) M=$(PWD) modules $(MAKE) ?make -C $(KERN_DIR)?转到内核源码包的目录下执行mak
您可能关注的文档
- 静态数据成员&静态函数成员.doc
- 静态路由和默认路由的配置-20080430-0-xb.doc
- 霍尼韦尔vista-120报警主机编程指南.ppt
- 风险价值var模型与算法.docx
- 频谱大数据摘要20151228.doc
- 飞利浦 philips 电话设置 手册.doc
- 飞凌嵌入式ok6410扩展口引脚定义说明.docx
- 飞电10_429数字数据总线.ppt
- 食堂工作人员配置表.doc
- 飞塔防火墙os4.0最新配置手册.ppt
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)