字符设备驱动基础 字符设备基础

字符设备驱动基础 字符设备基础

ID:11743415

大小:37.00 KB

页数:13页

时间:2018-07-13

字符设备驱动基础 字符设备基础_第1页
字符设备驱动基础 字符设备基础_第2页
字符设备驱动基础 字符设备基础_第3页
字符设备驱动基础 字符设备基础_第4页
字符设备驱动基础 字符设备基础_第5页
资源描述:

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

1、字符设备驱动基础字符设备基础bash>ls-l/devtotal0crw-------1rootroot5,1Jul1610:02console...lrwxrwxrwx1rootroot3Oct610:02cdrom->hdc...brw-rw----1rootdisk3,0Oct62007hdabrw-rw----1rootdisk3,1Oct62007hda1...crw-------1roottty4,1Oct610:20tty1crw-------1roottty4,2Oct610:02tty2第一个字

2、符:c:字符设备、l:symlink、b:块设备第五个字符5,1:主设备号,次设备号;主设备号能够寻找到驱动,而次设备号则能够定位设备。字符设备和块设备的空间不一样,因此,可以使用同一主设备号从编码角度看需要:(1)、初始化并注册设备。(2)、应用通过/dev下节点的文件系统调用:open()、read()、ioctl()、llseek()、write()(3)中断处理程序、底半部、时钟处理、内核辅助线程和其他支撑架构。从数据流角度看,字符设备需要:(1)设备对应结构体;(2)structcdev;(3)、str

3、uctfile_operation;(4)structfile。DeviceExample:System13CMOSBIOS使用CMOS来存储诸如startupoption,bootorder,andthesystemdate,您可以通过BIOS启动菜单修改。例子CMOS驱动可以像普通文件一样访问2个PCCMOS块,应用程序可以操作/dev/cmos/0和/dev/cmos/1,并使用I/O系统调用来访问两个bank里面的数据。因为BIOS给CMOS区域以位级粒度,驱动也能够以位级访问。所以read()可以读取指

4、定的位数,并移动相应位数指针。Table5.1.RegisterLayoutontheCMOSRegisterNameDescriptionCMOS_BANK0_INDEX_PORTSpecifythedesiredCMOSbank0offsetinthisregister.CMOS_BANK0_DATA_PORTRead/writedatafrom/totheaddressspecifiedinCMOS_BANK0_INDEX_PORT.CMOS_BANK1_INDEX_PORTSpecifythedesire

5、dCMOSbank1offsetinthisregister.CMOS_BANK1_DATA_PORTRead/writedatafrom/totheaddressspecifiedinCMOS_BANK1_INDEX_PORT.DriverInitializationinit()的责任:(1)请求分配设备主设备号;(2)为每个设备结构分配内存;(3)链接字符设备驱动cdev的入口点(open()、read()等);(4)联系主设备号和驱动的cdev;(5)在/dev和/sys下创建节点;(6)初始化硬件。以下是

6、示例程序:Listing5.1.CMOSDriver13InitializationCodeView:#include/*Per-device(per-bank)structure*/structcmos_dev{unsignedshortcurrent_pointer;/*Currentpointerwithinthebank*/unsignedintsize;/*Sizeofthebank*/intbank_number;/*CMOSbanknumber*/structcdevcdev;/*Thecdevst

7、ructure*/charname[10];/*NameofI/Oregion*//*...*//*Mutexes,spinlocks,waitqueues,..*/}*cmos_devp;/*Fileoperationsstructure.Definedinlinux/fs.h*/staticstructfile_operationscmos_fops={.owner=THIS_MODULE,/*Owner*/.open=cmos_open,/*Openmethod*/.release=cmos_release

8、,/*Releasemethod*/.read=cmos_read,/*Readmethod*/.write=cmos_write,/*Writemethod*/.llseek=cmos_llseek,/*Seekmethod*/.ioctl=cmos_ioctl,/*Ioctlmethod*/};staticdev_tcmos_dev_number;/*Allotted

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

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

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