USB_DEVICE 宏利用厂商 ID 和产品 ID 为我们提供了一个设备的唯一标识.当系统插入 一个 ID 匹配的 USB 设备到 USB 总线时,驱动会在 USB core 中注册.驱动程序中 probe 函 数也就会被调用.usb_device 结构指针,接口号和接口 ID 都会被传递到函数中.
static void * skel_probe(struct usb_device *dev, unsigned int ifnum, const struct usb_device_id *id)
驱动程序需要确认插入的设备是否可以被接受, 如果不接受, 或者在初始化的过程中发生任 何错误,probe 函数返回一个 NULL 值.否则返回一个含有设备驱动程序状态的指针.通过这 个指针,就可以访问所有结构中的回调函数. 在骨架驱动程序里, 最后一点是我们要注册 devfs. 我们创建一个缓冲用来保存那些被发送 给 usb 设备的数据和那些从设备上接受的数据,同时 USB urb 被初始化,并且我们在 devfs 子系统中注册设备,允许 devfs 用户访问我们的设备.注册过程如下:
/* initialize the devfs node for this device and register it */ sprintf(name, "skel%d", skel->minor); skel->devfs = devfs_register (usb_devfs_handle, name, DEVFS_FL_DEFAULT, USB_MAJOR, USB_SKEL_MINOR_BASE + skel->minor, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH, &skel_fops, NULL);
如果 devfs_register 函数失败,不用担心,devfs 子系统会将此情况报告给用户.
当然最后,如果设备从 usb 总线拔掉,设备指针会调用 disconnect 函数.驱动程序就需 要清除那些被分配了的所有私有数据,关闭 urbs,并且从 devfs 上注销调自己.
/* remove our devfs node */ devfs_unregister(skel->devfs);
现在,skeleton 驱动就已经和设备绑定上了,任何用户态程序要操作此设备都可以通过 file_operations 结构所定义的函数进行了.首先,我们要 open 此设备.在 open 函数中 MODULE_INC_USE_COUNT 宏是一个关键,它的作用是起到一个计数的作用,有一个用户 态程序打开一个设备,计数器就加一,例如,我们以模块方式加入一个驱动,若计数器不为零, 就说明仍然有用户程序在使用此驱动,这时候,你就不能通过 rmmod 命令卸载驱动模块了.
/* increment our usage count for the module */ MOD_INC_USE_COUNT; ++skel->open_count; /* save our object in the file's private structure */ file->private_data = skel;
当 open 完设备后,read,write 函数就可以收,发数据了. 1. skel 的 write,和 read 函数 他们是完成驱动对读写等操作的响应. 在 skel_write 中,一个 FILL_BULK_URB 函数,就完成了 urb 系统 callbak 和我们自己 的 skel_write_bulk_callback 之间的联系.注意 skel_write_bulk_callback 是中断方式, 所以要注意时间不能太久,本程序中它就只是报告一些 urb 的状态等. read 函数与 write 函数稍有不同在于: 程序并没有用 urb 将数据从设备传送到驱动程序, 而是我们用 usb_bulk_msg 函数代替,这个函数能够不需要创建 urbs 和操作 urb 函数的情 况下,来发送数据给设备,或者从设备来接收数据.我们调用 usb_bulk_msg 函数并传提一个 存储空间,用来缓冲和放置驱动收到的数据,若没有收到数据,就失败并返回一个错误信息. 1. usb_bulk_msg 函数
当对 usb 设备进行一次读或者写时, usb_bulk_msg 函数是非常有用的; 然而, 当你需要 连续地对设备进行读/写时,建议你建立一个自己的 urbs,同时将 urbs 提交给 usb 子系统. 2. skel_disconnect 函数
- 三星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
- · 课后习题解答网
- · 日本安川伺服电机
- · 汽车电工维修工作总结
- · 警车警笛声
- 赞助商链接