免费注册 查看新帖 |

Chinaunix

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

usb pl2303 驱动求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-17 11:57 |只看该作者 |倒序浏览
Dear All:
           
          学习usb 的驱动,看了一下Pl2303 usb转串口的驱动 文件为:drivers\usb\serial\pl2303.c,其中 在pl2303_startup()中有:

        pl2303_vendor_read(0x8484, 0, serial, buf);
        pl2303_vendor_write(0x0404, 0, serial);
        pl2303_vendor_read(0x8484, 0, serial, buf);
        pl2303_vendor_read(0x8383, 0, serial, buf);
        pl2303_vendor_read(0x8484, 0, serial, buf);
        pl2303_vendor_write(0x0404, 1, serial);
        pl2303_vendor_read(0x8484, 0, serial, buf);
        pl2303_vendor_read(0x8383, 0, serial, buf);
        pl2303_vendor_write(0, 1, serial);
        pl2303_vendor_write(1, 0, serial);

其中 static int pl2303_vendor_read(__u16 value, __u16 index,
                struct usb_serial *serial, unsigned char *buf)
{
        int res = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
                        VENDOR_READ_REQUEST, VENDOR_READ_REQUEST_TYPE,
                        value, index, buf, 1, 100);
        dbg("0x%x:0x%x:0x%x:0x%x  %d - %x", VENDOR_READ_REQUEST_TYPE,
                        VENDOR_READ_REQUEST, value, index, res, buf[0]);
        return res;
}

这些代码,小弟深深的陷入进来不明白了,      pl2303_vendor_read(0x8484, 0, serial, buf); 是一个清除请求,0x8484,这个value值 是怎么得来的?是初始化硬件?还是USB设备请求 规定的?

论坛徽章:
0
2 [报告]
发表于 2013-09-17 13:37 |只看该作者
usb主机请求
bRequestType+bRequest+wvalue+wIndex+wLength
usb2.0可以看到一些基本的请求 我想你知道
也就有了标志请求和厂商自定义请求
VENDOR_READ_REQUEST, VENDOR_READ_REQUEST_TYPE,
vendor不就是厂商
0x8484是pl2303的供应商特有的

论坛徽章:
0
3 [报告]
发表于 2013-09-17 13:50 |只看该作者
如您所说,我怎么才能得到pl2303厂家的私有请求呢?回复 2# wwxxxxll


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP