字符设备驱动程序课件.ppt

字符设备驱动程序课件.ppt

ID:57114614

大小:1.16 MB

页数:40页

时间:2020-07-31

字符设备驱动程序课件.ppt_第1页
字符设备驱动程序课件.ppt_第2页
字符设备驱动程序课件.ppt_第3页
字符设备驱动程序课件.ppt_第4页
字符设备驱动程序课件.ppt_第5页
资源描述:

《字符设备驱动程序课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、字符设备驱动程序本章目标掌握字符设备驱动程序的基本结构和开发方法掌握用户空间调用设备驱动程序的方法本章结构字符设备驱动基本结构字符设备驱动程序用户空间调用设备驱动程序添加驱动程序到内核内核配置和编译方法添加驱动程序到内核中主要概念和结构体实例字符驱动的主要组成2-1字符设备驱动程序基本结构字符设备开发的基本步骤确定主设备号和次设备号实现字符驱动程序实现file_operations结构体实现初始化函数,注册字符设备实现销毁函数,释放字符设备创建设备文件节点2-1字符设备驱动程序基本结构什么是主设备号/次设备号主设备号是内核识别一个设备的标识。整数(占12bits),范围

2、从0到4095,通常使用1到255次设备号由内核使用,用于正确确定设备文件所指的设备。整数(占20bits),范围从0到1048575,一般使用0到2552-1字符设备驱动程序基本结构设备编号的内部表达dev_t类型(32位):用来保存设备编号(包括主设备号(12位)和次设备号(20位))从dev_t获得主设备号和次设备号:MAJOR(dev_t);MINOR(dev_t);将主设备号和次设备号转换成dev_t类型:MKDEV(intmajor,intminor);62-1字符设备驱动程序基本结构分配主设备号手工分配主设备号:找一个内核没有使用的主设备号来使用。#inc

3、ludeintregister_chrdev_region(dev_tfirst,unsignedintcount,char*name);要分配的设备编号范围的起始值,次设备号经常为0所请求的连续设备编号的个数和该编号范围关联的设备名称2-1字符设备驱动程序基本结构动态分配主设备号:#includeintalloc_chrdev_region(dev_t*dev,unsignedintfirstminor,unsignedintcount,char*name);输出的设备号要使用的被请求的第一个次设备号82-1字符设备驱动

4、程序基本结构释放设备号voidunregister_chrdev_region(dev_tfirst,unsignedintcount);通常在模块的清除函数中调用。92-1字符设备驱动程序基本结构实现字符驱动程序cdev结构体structcdev{structkobjectkobj;/*内嵌的kobject对象*/structmodule*owner;/*所属模块*/structfile_operations*ops;/*文件操作结构体*/structlist_headlist;dev_tdev;/*设备号*/unsignedintcount;};2-1字符设备驱动程

5、序基本结构操作cdev的函数voidcdev_init(structcdev*,structfile_operations*);structcdev*cdev_alloc(void);intcdev_add(structcdev*,dev_t,unsigned);voidcdev_del(structcdev*);用于初始化cdev的成员,并建立cdev和file_operations之间的连接分别向系统删除一个cdev,完成字符设备的注销,通常在模块的卸载函数中调用分别向系统添加一个cdev,完成字符设备的注册,通常在模块加载函数中调用函数用于动态申请一个cdev内存

6、112-1字符设备驱动程序基本结构file_operations结构体字符驱动和内核的接口:在include/linux/fs.h定义字符驱动只要实现一个file_operations结构体并注册到内核中,内核就有了操作此设备的能力。122-1字符设备驱动程序基本结构file_operations的主要成员:structmodule*owner:指向模块自身open:打开设备release:关闭设备read:从设备上读数据write:向设备上写数据ioctl:I/O控制函数llseek:定位读写指针mmap:映射设备空间到进程的地址空间132-1字符设备驱动程序基本结构

7、file结构体file结构:file_operations结构相关的一个结构体。描述一个正在打开的设备文件。成员:loff_tf_pos:当前读/写位置unsignedintf_flags标识文件打开时,是否可读或可写O_RDONLYO_NONBLOCKO_SYNCstructfile_operations*f_op文件相关的操作,指向所实现的structfile_operationsvoid*private_data:私有数据指针。驱动程序可以将这个字段用于任何目的或者忽略这个字段。142-1字符设备驱动程序基本结构inode结构体内核

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。