frank_wang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2003-07-21 15:22
U盘固件编程之四:玩转你的端点

接上面hewx,我来谈谈端点的问题。

前面提到过,端点是由USB设备端的接口芯片决定的。你选择了什么样的芯片,那么端点的配置情况属性就已经决定了,你只能使用将就这些特定的情况。这些端点的配置,具体要参考你所使用的接口芯片的芯片资料,比如说,端点0当然都为控制端点,其MaxPacketSize可能为8,16,32,64;端点1可能是Bulk-In端点,2是Bulk-Out端点,其字长也有可能是8,16,32,64,但一般是64。其他端点可能有同步端点,或者同一端点既可被配置成同步传输方式,也可以工作在Bulk传输方式下,等等,不一而足。

USB协议精妙之处就在于枚举过程。主机最初发过来的包,一定是8个字符长的。所以,你的端点的MaxPacketSize至少必须是8,能满足与主机之间最基本的通讯过程。对于主机的第一个请求Get Device Descriptor,你也只用回复8个字符就OK了,因为主机在第一次只对这8个字符感兴趣,在后面逐渐的获取描述符的过程中,主机逐渐得到设备使用那些端点,每个端点的最大字长(这些内容在Endpoint Descriptor中,通过Configuration Descriptor提供)是多少,等等,总之,通过枚举,主机便知道你的端点的情况了,以后就会用这些端点来与设备进行通讯。

对于Hewx的问题,我想是你在Endpoint Descriptor中没有正确进行端点的设置,因为,如果进行了正确的端点配置,主机是会自动通过Bulk端点来发Inquiry命令的,而不会从你说的Endpoint1(16B)来发送这一信息。而且,主机会自动对要发送的信息进行分割,每次以不高于相应端点的MaxPacketSize长度来发送。

除了描述符中要给出正确的端点描述符的描述,有些时候在芯片中也需要设备相应的控制位,在决定你要使用哪些及如何使用这些端点,这个也得根据具体的芯片资料来设置。
hewx
驱动牛犊
驱动牛犊
  • 注册日期2001-09-22
  • 最后登录2004-12-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2003-07-21 16:35
还是端点的问题:
我用D12做一个带U盘功能的东西,端点2做U盘、端点1传送其他数据,在USBVIEW看到下面的信息:
Endpoint Descriptor:
bEndpointAddress:     0x01
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x01

Endpoint Descriptor:
bEndpointAddress:     0x81
Transfer Type:        Bulk
wMaxPacketSize:     0x0010 (16)
bInterval:            0x01

Endpoint Descriptor:
bEndpointAddress:     0x02
Transfer Type:        Bulk
wMaxPacketSize:     0x0040 (64)
bInterval:            0x01

Endpoint Descriptor:
bEndpointAddress:     0x82
Transfer Type:        Bulk
wMaxPacketSize:     0x0040 (64)
bInterval:            0x01
现在问题是:当电脑出现Mass Storage Device后,WINDOWS默认用端点1向我的设备发出Inquiry 命令,而不是用端点2。我该如何让HOST知道我是用端点2做U盘?
山穷水尽疑无路,柳暗花明又一村。
frank_wang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2003-07-21 16:52
Hewx,你的描述符给的不对。你把描述符发我信箱里吧,我帮你看看。不要往这里发了,问题太具体,会冲淡主题。这个贴子主要还是讲思路,每个人碰到的问题会千奇百怪,但只要掌握了思路,便可以举一反三,以不变应万变了:)
szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2003-07-21 18:03
再贴一次USBCheck。
附件名称/大小 下载次数 最后更新
2003-07-21_usbex.zip (983KB)  500
frank_wang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2003-07-21 22:10
U盘固件编程之四:玩转你的端点(增补)

对于某种设备来说,需要使用到的端点是固定的。比如说,Mass Storage设备吧,就只需要用到一个Bulk-In端点和一个Bulk-Out端点。而不需要几个此类端点。至于到底需要几个端点,完全需要根据有关协议中的说明进行,描述符也据此进行提供,而不是没有根据地在描述符中提供许多端点。

至于哪些端点可以做何种方式来使用,这也要看接口芯片的资料,比如,很可能,有的端点只能用作同步方式,那你就不要勉强将其用作批量方式,控制端点就只能用作控制传输方式,就不能为同步方式......搞清楚这个概念,在固件编程中才好正确地提供描述符。

hewx
驱动牛犊
驱动牛犊
  • 注册日期2001-09-22
  • 最后登录2004-12-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2003-07-22 08:48
再贴一次USBCheck。


谢谢szzwm发上来的USBCheck,为什么里面的README是乱码,能重发一次README吗?
山穷水尽疑无路,柳暗花明又一村。
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2003-07-22 09:54
我同意
god_dragon1028@mail.china.com
不过大家发东东时是不是先标出是用的什么片子
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2003-07-22 10:57
说说文件系统吧
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2003-07-22 10:59
要不要MBR?如果不要,是不是只要PBR就行了?
szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2003-07-22 12:16
补充说明:USBCheck里面的README是BIG5码,大家可以不必理会这个文件。
bezel
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2004-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2003-07-22 20:12
frank_wang对我有很大帮助,在次表示感谢!
我也在做U盘,用的是sx2,有兴趣的朋友可以和我交流。
我的email:bezel@163.com
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2003-07-22 23:14
刚才怎么进步了第二页?
huiming
驱动小牛
驱动小牛
  • 注册日期2001-05-05
  • 最后登录2009-07-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2003-07-23 10:11
说说文件系统吧

同意!!!应该说说文件系统了, :D
驿动的心!放飞的心!勇敢的心!
frank_wang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2003-07-23 11:19
整个U盘所涉及的内容有如下一些:
控制传输和批量传输的传输过程
Read和Write之前的命令响应
文件系统
Read命令和WRite命令的响应
容量与格式化
速度问题
其他问题

先不忙说文件系统吧。我的思路是,接下来讲讲在做U盘的过程中常见的两种传输方式:控制传输和批量传输的事务处理过程。因为我们经常在处理控制端点的传输或Bulk端点的传输时,有些朋友常碰到“主机没有反应了”这样的问题,知道这两种传输方式的几个阶段,可以对传输过程更加了解,知道主机为什么会没有反应,是因为固件中没有正确响应,还是因为别的因素。

flyhemcu
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2003-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2003-07-24 16:00
U 盘开发资料给一份吧,兄弟也在学习U盘开发!
my e_mail:  hework@hotmail.com
flyhemcu
frank_wang
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2003-07-25 18:26
我这两天上不了网,可能下周一恢复,所以,暂时无法继续回贴和给大家回信,望大家见谅!
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2003-07-25 20:59
wait.....
hewx
驱动牛犊
驱动牛犊
  • 注册日期2001-09-22
  • 最后登录2004-12-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2003-07-26 08:47
恭候
山穷水尽疑无路,柳暗花明又一村。
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2003-07-26 17:54
好啊,关注一下
AthlonxpX86(桃源村)
dzhang
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2004-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2003-07-28 10:04
我要开发usb host,读写u盘,请告知哪种芯片好sl811hs如何,有无FAT12/16文件系统格式资料,请提供,谢。另那里有开发套件可购买,请告知,再谢。可否提供这方面帮助我已熟悉usb1.1协议,三谢。我的email:gszhang_zs@163.com
游客

返回顶部