nuanfeng
驱动牛犊
驱动牛犊
  • 注册日期2003-12-29
  • 最后登录2005-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1156回复:3

急!询问关于PHLIP D12的几个问题

楼主#
更多 发布于:2004-03-10 11:36
我用d12板做一个项目,我在主机端自定义一个请求
ioblock.uindex=get_status,然后调用readfile从设备读书据。
在设备端固件程序中,定义与这个请求对应的函数get_status(),并实现这个请求(就是往端点送数据)。我想问一下执行过程是不是这样:主机通过控制传输将这个请求发给设备,设备识别这个请求后,调用get_status(),将数据送到端点的缓冲区。然后主机发给端点一个in包,然后用批量传输从端点取走数据?

另外我想问一下,在固件程序中定义了一个结构,struct_control_xfer,其中有一个域是unsigned char dataBuffer[MAX_CONTROLDATA_SIZE],请问这个域是干什么用的?里面放的是什么?
 谢谢!
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-03-10 12:54
只是一个放请求包的地方
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-10 13:24
数据缓存区
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-10 13:29
1.你的分析大体不错,控制传输本身已经包含了双向传输,所以get_status()的返回数据是放到端点0上的。并且由控制传输独立完成。(当然,也是主机发出的IN请求完成的,只是仍然在端点0上面)

2.由于控制传输是一个USB自举过程必需的传输,所以它与其它几种传输不同,它是由USB规范定义了细节的可扩展的传输方式,也是设备必须支持的。unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]就是用来存储Setup packet的地方。依据不同的请求,其内容不同。但头部采用统一结构。存储起来是留给后面的处理程序使用的。可以响应Standard Request, Class Request, Vendor Request.
A strong man can save himself. A great man can save another.
游客

返回顶部