欢迎来到天天文库
浏览记录
ID:9394619
大小:532.50 KB
页数:20页
时间:2018-04-30
《linux操作系统u盘驱动设计分析报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、JINGCHUUNIVERSITYOFTECHNOLOGYLinux操作系统U盘驱动设计分析报告学院计算机工程学院专业计算机科学与技术年级班别09计算机科学与技术2班学号22学生姓名指导教师李永2012年06月14目录1.1实验目的11.2实验环境11.3实验原理11.3.1设备驱动和文件系统的关系11.3.2Linux驱动程序的基本原理21.3.3USB骨架驱动程序21.4实验说明:61.4.1驱动过程61.4.2U盘驱动配置61.5实验过程:71.5.1查看内核源码71.5.2配置与编译2.6.16版本内核71.5.3获取、配
2、置目标U盘出厂信息81.5.4U盘驱动模块的注册与注销91.5.5修改Makefile文件101.5.6Make产生myUSBDriver.ko驱动文件121.5.7安装myUSBDriver.koU盘驱动模块141.5.8实现驱动myUSBDriver绑定到我们的U盘141.5.9卸载、注销myUSBDriver驱动151.5.10实现自动加载myUSBDriver驱动模块161.6实验总结:171.1实验目的实现在Linux下对硬件设备KingstonU盘的驱动;1.2实验环境Linux系统:RedHatEnterpriseL
3、inux5内核:2.6.18-53.el5(系统内核版本)、2.6.16(编写USB驱动内核版本)1.3实验原理1.3.1设备驱动和文件系统的关系图1显示了Linux内核的体系结构,从图中可以看出应用程序是通过文件子系统来访问底层设备的。一个物理设备,在文件系统中对应一个或多个逻辑结点,设备文件的属性由三部分信息组成:文件的类型(c/b)、主设备号、次设备号,其中设备类型和主设备号结合在一起唯一地确定了设备文件的驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。181.1.1Linux驱动程序的基本原理Linux下开
4、发设备驱动程序的原理较之Windows系统来说结构简单层次清楚。挂在Linux上的每个设备都被描述为设备驱动程序文件,一些与设备有关的设备参数文件被保存在/dev目录下。用户自己提供或编写设备驱动时,也需要在/dev目录下有一个设备文件。设备驱动程序可以分为三个主要组成部分:①自动配置和初始化子程序;②服务于I/O请求的子程序;③中断服务子程序。骨架关系如图2:1.1.2USB骨架驱动程序USB驱动的注册LinuxUSB驱动程序需要做的第一件事情就是在LinuxUSB子系统里注册,并提供一些相关信息,例如这个驱动程序支持那种设备。
5、注册时会通过初始化函数发送一个命令给usb_register。(1)当USB设备插入时,为了使linux_hotplug(Linux中PCI、USB等设备热插拔支持)系统自动装载驱动程序,就需要创建一个MODULE_DEVICE_TABLE,代码如下:staticstructusb_device_idskel_table[]={18{USB_DEVICE(USB_SKEL_VENDOR_ID,USB_SKEL_PRODUCT_ID)},{}/*Terminatingentry*/};MODULE_DEVICE_TABLE(usb,
6、skel_table);USB_DEVICE宏,利用厂商ID和产品ID为我们提供了一个设备的唯一标识。当系统插入一个ID匹配的USB设备到USB总线时,驱动会在USBcore中注册,驱动程序中probe函数也就会被调用。USB_DEVICE结构指针、接口号和接口ID都会被传递到函数中。驱动程序需要确认插入的设备是否可以被接受,如果不接受,或者在初始化的过程中发生任何错误,probe函数返回一个NULL值,否则返回一个含有设备驱动程序状态的指针,通过这个指针,就可以访问所有结构中的回调函数。当被支持的设备从系统插入或拔出时,会有哪些
7、动作,所有这些信息都传送到USB子系统中。在USB骨架程序中可以这样来完成:staticstructusb_driverskel_driver={name:"skeleton",probe:skel_probe,disconnect:skel_disconnect,fops:&skel_fops,minor:USB_SKEL_MINOR_BASE,id_table:skel_table,};变量name18是一个字符串,它对驱动程序进行描述;probe和disconnect是函数指针,当设备与在id_table中变量信息匹配时,此
8、函数被调用;fops和minor变量是可选的。大多数USB驱动程序钩住另外一个驱动系统,例如SCSI、网络或tty子系统。这些驱动程序在其他驱动系统中注册,同时任何用户空间的交互操作通过那些接口提供,比如把SCSI设备驱动作为USB驱动所钩住的另外
此文档下载收益归作者所有