免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3657 | 回复: 7
打印 上一主题 下一主题

[驱动] linux USB 问题分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-14 20:35 |只看该作者 |倒序浏览
学linux USB驱动有一段时间了,但是始终有一个问题还在困恼我:下面我将问题阐述如下,请高手们指点:
       static struct usb_driver usb_dht_driver = {
  .name       = "usbdht",
  .probe      = usb_dht_probe,
  .disconnect = usb_dht_disconnect,
  .id_table   = usb_dht_id_table,
  };
          在USB驱动程序的probe函数中会定义 会注册设备的操作接口(如字符设备的 open,read,write等操作),
static const struct file_operations skel_fops = {
        .owner =         THIS_MODULE,
        .read =        skel_read,
        .write =        skel_write,
        .open =        skel_open,
        .release = skel_release,
        .flush =        skel_flush,
};

static struct usb_class_driver skel_class = {
        .name =                "my_skeleton",
        .fops =                &skel_fops,
        .minor_base =        USB_SKEL_MINOR_BASE,
};
int retval = usb_register_dev(interface, &skel_class);
我的问题是 我根本没法想象read ,write函数是怎么能够操作硬件(读到数据或是写数据) ,我对字符设备的理解是read ,write 是必须对 先关的硬件设置的(比如IO口设置)但是USB设备的 read write好像不需要对硬件设置 就能获取数据或是成功写数据。
      不懂  请高手指点!

论坛徽章:
0
2 [报告]
发表于 2011-06-14 22:01 |只看该作者
read,write方法操作硬件,只不过是借助USB层,也就是说,假定知道需要像硬件发送的信息,知道发送的方法(实际上是USB层提供的),就可以通讯了。而不是直接读写端口。

论坛徽章:
0
3 [报告]
发表于 2011-06-15 08:38 |只看该作者
谢谢 tempname3  回复,你的回复让我明白了许多 但是我是有些疑问 描述如下:
     比如说 我有一个USB摄像头 有好几个端点  但是有有一个bulk in端点 那么我是不是直接 创建相对应的urb 提交 去取数据即可?是不是urb提交到USB芯片后 里面有固件程序响应 urb提交的采集命令?固件程序负责采集数据  后交给urb返回?  
     希望懂的得朋友指点  谢谢!

论坛徽章:
0
4 [报告]
发表于 2011-06-16 14:12 |只看该作者
我也在做USB摄像头驱动,也有好多的问题不懂,hui_se.你现在研究的怎么样了?

论坛徽章:
0
5 [报告]
发表于 2011-06-16 19:14 |只看该作者
我想自己写个USB摄像头驱动 呵呵 我也刚搞  你呢 ?

论坛徽章:
0
6 [报告]
发表于 2011-06-16 19:35 |只看该作者
谢谢 tempname3  回复,你的回复让我明白了许多 但是我是有些疑问 描述如下:
     比如说 我有一个USB摄像 ...
hui_se0 发表于 2011-06-15 08:38


偶也是接触USB不久,还没去来得及看更多的代码。据偶了解,是这样的,上次只管发送urb,底层固件会负责获得对应的数据,然后返回给上层处理,实现对应的应用。

论坛徽章:
0
7 [报告]
发表于 2011-06-16 20:18 |只看该作者
22 的内核好搞些,那个38的貌似有点难度,还没理清整体思路

论坛徽章:
0
8 [报告]
发表于 2011-07-14 23:30 |只看该作者
很久以前的印象,我记得usb camera走的是同步传输吧,不是bulk吧,驱动以前分2.0 UVC驱动我记得都是现成的,1.x网上有驱动可下载下来用,只要控制器没缺陷,比较容易移植上去吧,uvc配合luvc的应用程序让camera数据在framebuffer上显示出来。 但是我碰到的2家控制器都有设计缺陷,无法正常同步传输
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP