Linux字符设备驱动解析
2016-08-10 10:08
253 查看
1.驱动即是一个内核模块,需要模块初始化函数
module_init()
module_exit()
2.分配cdev
struct cdev dev;
3.初始化cdev并定义file_operation;
cdev_init(cdev *,const struct file_operation *);
4.获取设备号并注册cdev结构
alloc_chrdev_region( dev_t *, unsigned , unsigned , const char *);
cdev_add( struct cdev * ,dev_t , unsigned );
5.编写file_operation结构函数,实现设备操作;
open、release、write、read等
copy_to_user()把内核空间拷贝到用户空间
copy_from_user()把用户空间拷贝到内核空间
6.驱动程序的注销;
cdev_del(struct cdev *);
unregister_chrdev_region( dev_t, unsigned );
设备文件需要自己创建
在/proc/devices下看主设备号
Makefile
module_init()
module_exit()
2.分配cdev
struct cdev dev;
3.初始化cdev并定义file_operation;
cdev_init(cdev *,const struct file_operation *);
4.获取设备号并注册cdev结构
alloc_chrdev_region( dev_t *, unsigned , unsigned , const char *);
cdev_add( struct cdev * ,dev_t , unsigned );
5.编写file_operation结构函数,实现设备操作;
open、release、write、read等
copy_to_user()把内核空间拷贝到用户空间
copy_from_user()把用户空间拷贝到内核空间
6.驱动程序的注销;
cdev_del(struct cdev *);
unregister_chrdev_region( dev_t, unsigned );
设备文件需要自己创建
在/proc/devices下看主设备号
Makefile
obj-m:=led.o KERNELDIR:=/home/jz2440/linux-2.6.22.6 PWD:=$(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules clean: rm -rf *.o *.mod.c *.mod.o *.ko
相关文章推荐
- Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析
- Linux 字符设备驱动开发基础(三)—— read()、write() 相关函数解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析
- Linux应用程序访问字符设备驱动详细过程解析
- Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析
- Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析
- Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析
- Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析
- Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析
- Linux 字符设备驱动开发基础(五)—— ioremap() 函数解析
- Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析
- Linux 字符设备驱动开发基础(五)—— ioremap() 函数解析
- linux字符设备驱动解析
- linux驱动:[2]字符设备驱动memdev(cdev结构解析)
- Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析