apmusb
游客
游客
阅读:3401回复:20

大家来交流一下!!!――关于USB Device Request

楼主#
更多 发布于:2002-06-20 19:14
在看USB spec的时候在看到USB Device Request的时候觉得听明白的,但是在具体涉及到Driver和固件的时候却糊涂了。大家来说说它们该如何使用!!!

bRequest是指定请求的字节。当bmRequestType中请求类型位是00时,bRequest包含了USB标准请求中一种。当请求类型位是01时,bRequest为这个设备类定义的一个请求命名。当请求类型位为10时,bRequest为这个设备销售商定义的一个请求命名。

wValue是主机可能用来传递信息到设备的两个字节。每个请求可以用它自己的方式定义这些字节的含义。例如,在Set_Address请求中,mValue包含了设备地址。

wIndex是主机可能用来传递信息到设备的两个字节。一个典型的应用是传递指针或偏移量如接口或终端号,但每个请求可能以任何方式定义这些字节的含义。当传递一个终端指针时,第0~3位代表终端号码,对一个控制或是OUT终端,第7位为0;对一个IN终端,第7位为1。当传递接口指针时,第0~7位是接口号码。所有未用的位都是0。

wLength是包括在接下来的数据阶段中数据字节数量的两个字节。对于从主机到设备的传输,wLength是字节的确切数量。对于从设备到主机的传输,wLength是最大值,设备可能返回这个数量的字节的或少于这个值的字节。如果wLength字段是0,则表明没有数据包。

最新喜欢:

greecetinggreece...
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-30 17:33
请教:
我用BUSHOUND抓到一组数据,不知是什么意思。
CTL    a3    CLASS            0us         1.1.0        
            00                                 1.1.1        
            00                                 1.1.2        
            00                                 1.1.3        
            02                                 1.1.4        
            00                                 1.1.5        
            04                                 1.1.6        
望各位大侠搭救。
它应该是USB DEVICE REQUEST,IN TOKEN,请求类型,但容器是
OTHER??糊涂中。。。
而且该怎么回答?
谢谢!!!!!!!!!!
新手上路,请多关照.
liuyx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-05 16:16
怎么可以监测到USB Device发送到USB Host上面的数据,在下面都是正确的,但我不知道发送上去是对还是错的!
apmusb
游客
游客
地板#
发布于:2002-06-28 09:04
《Windows WDM设备驱动程序开发指南》里面有例子程序。如果没有这例子程序,告诉我你的EMail,我给你发过去!

[编辑 -  6/28/02 by  apmusb]
hu3721
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2005-01-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-27 23:33
apmusb兄,固件调试的时候你是怎么向usb设备发送请求的?我也想通过发送一个get_descriptor请求得到描述符,该怎么实现这个请求呢?
学习usb!
apmusb
游客
游客
5楼#
发布于:2002-06-27 18:06
我还没实现直接对endpoint2进行Bulk读,我只好先发VendorRequest请求,然后读!
应该直接就可以实现Bulk读,只是还没摸清门路!慢慢会搞出来的! ;) :P :P :cool:
liudongm
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-27 17:43
[quote]我在对endpoint2进行Bulk读的时候,用bus bound查看到的信息是:endp halted
我还不知道是那里的毛病,正在找呢! :(

你的firmware里面关于in的处理可能有问题。 [/quote]

出现这种情况,firmware里inendpoint应该怎么处理呢?
raymondarc
驱动牛犊
驱动牛犊
  • 注册日期2002-06-19
  • 最后登录2002-06-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-26 12:45
有知道9603的吗?请帮帮我
我的A51收到 80H,06H,00H,01H,00H,00H,40H,00H 后,我发了
12H,01H,10H,01H,00H,00H,00H,08H, GET DESCRPTOR 的前8个字后
再也不能收到数据,但一直有一个NAK 中断,该怎么办?
急死我了?
E_MAIL: raymondarc@21cn.com
caiyy
驱动牛犊
驱动牛犊
  • 注册日期2001-10-08
  • 最后登录2003-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-26 09:31
to apmusb:
请问,bushound能不能对一个枚举还没有成功的usb设备进行数据察看?我也用的是zboard板子,仿照它,我自己做了一块板子,并且修改了它的固件程序,但是总是枚举不成功,然而程序已经执行到了main.c中的usb_reconnect()之后了,但是d12引脚上的LED总是不亮?请问apmusb大哥,到底是什么原因,而且我的固件总是进不了中断处理程序,是不是没有收到主机发来的标准请求?请apmusb大哥指教?我的地址:cyyyuanyou@163.net
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-25 16:47
我在对endpoint2进行Bulk读的时候,用bus bound查看到的信息是:endp halted
我还不知道是那里的毛病,正在找呢! :(

你的firmware里面关于in的处理可能有问题。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
raymondarc
驱动牛犊
驱动牛犊
  • 注册日期2002-06-19
  • 最后登录2002-06-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-23 20:33
我用USBN9603,能操作它内部的寄存器,就是不知道如何与PC机相连
接?不知道如何配置描述符?用C语言的有,用C51汇编的不知那儿有?
大虾:快告诉我.谢谢了!!!
e_mail: raymondarc@21cn.com
lemon_cjp
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2005-02-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-23 19:38
别着急,可惜我做的工作少,知道的也少,帮不上什么忙,你先分开调一调,看看到底是那部分的问题
apmusb
游客
游客
12楼#
发布于:2002-06-22 11:34
我在对endpoint2进行Bulk读的时候,用bus bound查看到的信息是:endp halted
我还不知道是那里的毛病,正在找呢! :(
lemon_cjp
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2005-02-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-06-21 22:26
我目前只是纸上谈兵,就是编程、画原理图,但板子还没做呢,所以我也不知道我做的东西怎么样,只能尽力做了
apmusb
游客
游客
14楼#
发布于:2002-06-21 20:23
我们情况差不多,我也用的D12实现ep2的bulk传输,我的驱动部分基本上照的bulkusb,但据说有bug,不过我想在开始调通阶段这个应该也行吧。


我也试着用BulkUsb来驱动我的设备,我没有修改,可以枚举成功,但是收发数据不行,你的可以吗?你怎么改的呀!
lemon_cjp
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2005-02-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-06-21 20:17
我们情况差不多,我也用的D12实现ep2的bulk传输,我的驱动部分基本上照的bulkusb,但据说有bug,不过我想在开始调通阶段这个应该也行吧。
apmusb
游客
游客
16楼#
发布于:2002-06-21 17:02
我用DS生成了个Bulk传输的驱动,固件部分用endpoin2的Bulk方式,但是在对其进行读写的时候没有反应,网上一个哥们告诉我可能是驱动的问题,我现在在看DDK的BulkUsb的代码呢!但我对USB Device Request的理解始终不清楚!所以想把它弄懂了!
lemon_cjp
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2005-02-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-06-21 16:38
你能把你调试过程中出现的情况描述一下吗?我目前还在纸上谈兵的阶段,所有很想见识一下会出现的各种症状
lemon_cjp
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2005-02-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-06-21 16:33
我想应该Zboard是先利用vendor请求先填充D12缓冲区,同时将wrlength和wcount由Controlcode中的wrlength和wcount确定,然后开中断开始以后的传输,我看象plasma的程序好像就是直接取的控制字的wlength。我也只是自己的理解,也不知道我的理解对不对?
apmusb
游客
游客
19楼#
发布于:2002-06-21 07:47
 :( 是啊!怎么确定呢!!!我照着ZBoard写了个固件,直接对D12的endpoint2进行IN或OUT还不行,必须先Vendor请求,然后才可以,我也不知道给怎么改才行!而且对USB Device Request的理解也不是很清楚!所以在这里发了这个帖子,希望大家来交流交流! ;)

[编辑 -  6/21/02 by  apmusb]
上一页
游客

返回顶部