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);
- 三星9003usb驱动下载 > 下的硬件驱动USB
-
下的硬件驱动USB
下载该文档 文档格式:PDF 更新时间:2005-11-07 下载次数:0 点击次数:1文档基本属性 文档语言: 文档格式: pdf 文档作者: muelan 关键词: IPM, Module, Power Electronics 主题: Increased power density for higher efficiency 备注: 点击这里显示更多文档属性 经理: 单位: Semikron GmbH 分类: Intelligent Power Modules - IPM 创建时间: 上次保存者: 修订次数: 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 段落数: 字节数: 备注: 演示格式: 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- PDF格式下载
- 更多文档...
-
上一篇:2009学年第一学期夜大心理学专业补考安排
下一篇:夜大学2009级专科专业毕业前大补考课程安排
点击查看更多关于三星9003usb驱动下载的相关文档
- 您可能感兴趣的
- 三星i9003电脑usb驱动 三星i9003手机usb驱动 三星usb驱动i9003 9003三星手机usb驱动 三星i9003连接电脑usb 三星i9003怎么连接usb 三星i9003如何链接usb 三星i9003驱动下载 三星gti9003驱动下载
- 大家在找
-
- · 供配电技术哈工大
- · 石家庄警车被掀翻近况
- · 微积分期末试卷
- · 北京司炉工招聘
- · 朱镕基退休后的生活
- · 单孔龙头孔径
- · 碧波仙子电视剧剧情
- · 医院新农合管理细则
- · 90后轮吻门图片图
- · 定子铁心压装
- · 环境污染严重影响
- · 极品飞车14存档ps3
- · business English
- · 仿生学鸽子
- · 深圳电梯英才网
- · qq飞车视频大全
- · 罪恶都市ggmm汉化版
- · 数控铣床对刀输入
- · 《中国教育史》孙培青
- · 数学教学叙事文章
- · 明光王吉怎么了
- · 卡钻软件2011免费版
- · 北京市发改委网站
- · zx.taobao.c
- · 2011qq等级排行榜
- · systemverilog
- · 课后习题解答网
- · 日本安川伺服电机
- · 汽车电工维修工作总结
- · 警车警笛声
- 赞助商链接