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

    免费下载 下载该文档 文档格式:PDF   更新时间:2005-11-07   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:muelan
    关键词:IPM, Module, Power Electronics
    主题:Increased power density for higher efficiency
    备注:
    点击这里显示更多文档属性
    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 函数

    上一页下一页

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