• 三星9003usb驱动下载 > 下的硬件驱动USB
  • 下的硬件驱动USB

    免费下载 下载该文档 文档格式:PDF   更新时间:2005-11-07   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:muelan
    关键词:IPM, Module, Power Electronics
    主题:Increased power density for higher efficiency
    备注:
    点击这里显示更多文档属性
    Linux 下的硬件驱动——USB 设备(下)(驱动开发部分) 前言 在上篇《Linux 下的硬件驱动--USB 设备(上)(驱动配制部分)》中,我们知道了在 Linux 下如何去使用一些最常见的 USB 设备.但对于做系统设计的程序员来说,这是远远不够的,我 们还需要具有驱动程序的阅读,修改和开发能力.在此下篇中,就是要通过简单的 USB 驱动的 例子,随您一起进入 USB 驱动开发的世界. USB 驱动开发 在掌握了 USB 设备的配置后,对于程序员,我们就可以尝试进行一些简单的 USB 驱动的修改 和开发了.这一段落,我们会讲解一个最基础 USB 框架的基础上,做两个小的 USB 驱动的例 子. USB 骨架 在 Linux kernel 源码目录中 driver/usb/usb-skeleton.c 为我们提供了一个最基础的 USB 驱 动程序.我们称为 USB 骨架.通过它我们仅需要修改极少的部分,就可以完成一个 USB 设备 的驱动.我们的 USB 驱动开发也是从她开始的. 那些 linux 下不支持的 USB 设备几乎都是生产厂商特定的产品.如果生产厂商在他们的产品中 使用自己定义的协议,他们就需要为此设备创建特定的驱动程序.当然我们知道,有些生产厂商 公开他们的 USB 协议,并帮助 Linux 驱动程序的开发,然而有些生产厂商却根本不公开他们的 USB 协议. 因为每一个不同的协议都会产生一个新的驱动程序, 所以就有了这个通用的 USB 驱 动骨架程序, 它是以 pci 骨架为模板的. 如果你准备写一个 linux 驱动程序,首先要熟悉 USB 协议规范.USB 主页上有它的帮助.一些 比较典型的驱动可以在上面发现,同时还介绍了 USB urbs 的概念,而这个是 usb 驱动程序中 最基本的. Linux USB 驱动程序需要做的第一件事情就是在 Linux USB 子系统里注册,并提供一些相关 信息,例如这个驱动程序支持那种设备,当被支持的设备从系统插入或拔出时,会有哪些动作. 所有这些信息都传送到 USB 子系统中,在 usb 骨架驱动程序中是这样来表示的:
    static struct usb_driver skel_driver = { name: "skeleton", probe: skel_probe, disconnect: skel_disconnect, fops: &skel_fops, minor: USB_SKEL_MINOR_BASE, id_table: skel_table, };
    变量 name 是一个字符串,它对驱动程序进行描述.probe 和 disconnect 是函数指针,当设 备与在 id_table 中变量信息匹配时,此函数被调用. fops 和 minor 变量是可选的.大多 usb 驱动程序钩住另外一个驱动系统,例如 SCSI,网络或 者 tty 子系统.这些驱动程序在其他驱动系统中注册,同时任何用户空间的交互操作通过那些接 口提供,比如我们把 SCSI 设备驱动作为我们 USB 驱动所钩住的另外一个驱动系统,那么我们 此 USB 设备的 read,write 等操作,就相应按 SCSI 设备的 read,write 函数进行访问.但 是对于扫描仪等驱动程序来说, 并没有一个匹配的驱动系统可以使用, 那我们就要自己处理与用 户空间的 read,write 等交互函数.Usb 子系统提供一种方法去注册一个次设备号和 file_operations 函数指针,这样就可以与用户空间实现方便地交互.
    USB 骨架程序的关键几点如下: 1. USB 驱动的注册和注销 Usb 驱动程序在注册时会发送一个命令给 usb_register, 通常在驱动程序的初始化函数里. 当要从系统卸载驱动程序时,需要注销 usb 子系统.即需要 usb_unregister 函数处理:
    static void __exit usb_skel_exit(void) { /* deregister this driver with the USB subsystem */ usb_deregister(&skel_driver); } module_exit(usb_skel_exit);
    当 usb 设备插入时,为了使 linux-hotplug(Linux 中 PCI,USB 等设备热插拔支持)系 统自动装载驱动程序,你需要创建一个 MODULE_DEVICE_TABLE.代码如下(这个模块仅支 持某一特定设备):
    /* table of devices that work with this driver */ static struct usb_device_id skel_table [] = { { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, skel_table);

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • 三星i9003电脑usb驱动  三星i9003手机usb驱动  三星usb驱动i9003  9003三星手机usb驱动  三星i9003连接电脑usb  三星i9003怎么连接usb  三星i9003如何链接usb  三星i9003驱动下载  三星gti9003驱动下载