下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
--PAGE5-USB骨架Linuxkerneldriver/USB/USB-skeleton.c为我们提供了一个最USBUSBUSBUSB驱动开发也是从她开始的。linux下不支持的USBUSBLinux驱动程USB协议。因为每一个不同USBpci骨架为模板的。linuxUSBUSBUSBUSB驱动程序中最基本的内容。LinuxUSB驱动程序需要做的第一件事情就是在LinuxUSB子系统里注USBUSBnamedisconnect是函数指针,当设备与在id_table中变量信息匹配时,此函数被调用;fopsminor变量是可选的。USB驱动程序往往都会钩住另外一个驱动系统,例如SCSItty子系统。这些驱动程序在其他驱动系统中注册,同时任何用户空间的交互SCSIUSB驱动所钩住的USBreadwriteSCSIread、write函数进行访问。但是对于扫描仪等驱动程序来说,并没有一read、write等USBfile_operations函数指针,这样就可以与用户空间实现方便地交互。USB骨架程序的关键几点如下:USB驱动的注册和注销USB初始化函数里。当要从系统卸载驱动程序时,需要注销USB子系统,即需要USB_unregister函数处理。当USB设备插入时,为了使linux-hotplug(LinuxPCI、USB等设备热插拔支持)系统自动装载驱动程序,你需要创建一个MODULE_DEVICE_TABLE。USB_DEVICE宏利用厂商ID和产品ID当系统插入一个ID匹配的USB设备到USBUSBcoreprobeUSB_deviceID都会被传递到函数中。NULL驱动程序状态的指针。通过这个指针,就可以访问所有结构中的回调函数。devfsUSBUSBdevfsdevfsdevfs_register函数失败,不用担心,devfsUSBdisconnect驱动程序就需要清除那些被分配了的所有私有数据、关闭urbs,并且从devfs注销调自己。现在,skeleton驱动就已经和设备绑定上了,任何用户态程序要操作此设备file_operationsopenopenMODULE_INC_USE_COUNTrmmodopen完设备后,read、write函数就可以收、发数据了。skelwriteread函数他们是完成驱动对读写等操作的响应。skel_writeFILL_BULK_URBurbcallbak和我们自己的skel_write_bulk_callbackskel_write_bulk_callback是中断方式,所以要注意时间不能太久,本程序中它就只是报告一些urb等。read函数与write函数稍有不同在于:程序并没有用urb将数据从设备传送到驱动程序,而是我们用USB_bulk_msg函数代替,这个函数能够不需要创urbsurbUSB_bulk_msgUSB_bulk_msg函数USBUSB_bulk_msg函数是非常有用的;而,当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbsUSB子系统。skel_disconnect函数MOD_DEC_USE_COUNT宏会被用到(和MOD_INC_USE_COUNT刚好对应,它减少一个计数器最困难的是,USB在访问它。USB任何当前的读写,同时通知用户空间程序:USB设备已经被取走。如果程序有一个打开的设备句柄,在当前结构里,我们只要把它赋值为空,就像它已经消失了。对于每一次设备读写等其它函数操作,我们都要检查USB_device结构是否存在。如果不存在,就表明设备已经消失,并返回一个-ENODEVreleaseUSB_deviceskel_disconnect所作工作。USB骨架驱动程序,提供足够的例子来帮助初始人员在最短的时间里开发一个驱动程序。更多信息你可以到linuxUSB开发新闻组去寻找。U盘、USB读卡器、MP3、数码相机驱动windowsUUSBMP3或数码相机,可Linux可以很方便地使用它了。通常是此U盘、USB读卡器、MP3或数码相机在WindowsXP中不需要厂商专门的驱动就可以识别为移动存储设备,这样的设备才能保证成功,其他的就看你的运气了。USBread、writeSCSI理了。cat/proc/bus/USB/devicesUSB、ProdID、Product等。LinuxUSB-storage.oscsi设备去支持的,之所以不支持,通常是USB-storage识别和产品识别信息(skel_probeUSB最初探测时被屏蔽了USB存储设备的硬件访问部分,通常是一致的。所以我们要支持它,仅需要修USB-storage中关于厂商识别和产品识别列表部分。第二步:打开drivers/USB/storage/unusual_devs.h文件,我们可以看到所有已知的产品登记表都是以idProduct,bcdDeviceMin,bcdDeviceMax, vendor_name, product_name, use_protocol, use_transport,init_function,方式登记的其中相应的涵义你就可以根据命名来判断了所以只要我们填入我们自己的注册就可以让USB-storage驱动去认识和发现它注意:添加以上几句的位置,一定要正确。比较发现,USB-storage驱动对idVendor,idProduct置。USB-storage.oUSCSI设备去访问了。键盘飞梭支持目前很多键盘都有飞梭和手写板,下面我们就尝试为一款键盘飞梭加入一个驱动。在通常情况,当我们插入USB/proc/bus/USB/devices会看USB设备。比如:你的USBUSBUSB扩展连接埠,也会看到。找到相应的信息后就可开始工作了实际上飞梭的定义和键盘键码通常是一样的,所以我们参照drivers/USB/USBkbd..c代码进行一些改动就可以了。因为没能拿到相应的硬件USB协议,我无从知道飞梭在按下时通讯协议众到底发什么,我只能把它的信息打出来进行分析。幸好,它比较简单,在下面代码的USB_kbd_irq 函 数 中 if(kbd->new[0] == (char)0x01) if(((kbd->new[1]>>4)&0x0f)!=0x7)就是判断飞梭左旋。USB_kbd_irq函数就是键盘中断响应函数。USBUSB设备被系统发现是运行的。其他部分就都不是关键了。你可以根据具体的探测值(Vendor=07e4ProdID=9473等)USB飞梭消息后,把它模拟成左方向键和右方向键,在这里,就F14、F15等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园安全小组工作制度
- 幼儿园建立双控工作制度
- 幼儿园接送交接工作制度
- 幼儿园教育惩戒工作制度
- 幼儿园校园维稳工作制度
- 幼儿园灶房人员工作制度
- 幼儿园督导督学工作制度
- 幼儿园考核奖惩工作制度
- 幼儿园辅助睡眠工作制度
- 幼儿园陪护工作制度范本
- 第5课 从小爱劳动 课件(内嵌视频) 2025-2026学年道德与法治三年级下册统编版
- 一年级数学10以内加减法计算专项练习题(每日一练共12份)
- 2026特种作业场内专用机动车辆作业考试题及答案
- (二模)苏北七市2026届高三第二次调研测试生物试卷(含答案)
- TCABEE080-2024零碳建筑测评标准(试行)
- 遗传性高胆红素血症诊疗专家共识(2025年版)解读课件
- 科大讯飞深度研究报告
- 2026内蒙古地质矿产集团有限公司所属矿山企业招聘230人笔试备考试题及答案解析
- 2025云南滇中新区股权投资有限公司招聘5人笔试历年备考题库附带答案详解
- 建筑项目危险作业安全操作规程
- 2025年江苏有线营业员笔试题及答案
评论
0/150
提交评论