chuang163xj
驱动牛犊
驱动牛犊
  • 注册日期2005-05-21
  • 最后登录2005-08-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1169回复:1

烦高手指点下,真的很急啊!帮帮我吧

楼主#
更多 发布于:2005-06-09 18:18
在《PDIUSBD12固件编程与驱动开发》这样讲叙发送配送描叙符的过程的
首先 主机向设备发送读取配置描叙符建立包--->设备应答--->主机读取数据--->设备发送配置描叙符--->主机应答---->主机发送0字节的数据包---->设备应答
然后主机再次读取描述符(为什么不是请求?是固件程序在下一次中断中处理吗?还是接着第一次主机请求发送配置描述符来的?)--->设备应答----->
主机读取描叙符----->设备发送配置描叙符+接口描叙符---->主机应答---->
主机读取描叙符------- >设备发送端点描叙符---->主机应答----->主机读取描叙符----->设备发送端点描叙符------>主机应答----->主机读取描叙符---->设备发送端点描叙符----->主机应答---->主机发送0字节的数据包---->设备应答
这整个过程把我弄糊涂了,到底我的固件程序应该怎么遵守这个过程我不明白了,我问题的很多:
1。 按照这个过程,那外设是不是需要几次进入中断来处理?
2。本来我请教了别人也在书上看到 配置描叙符是一次(在第2次发送)把配置描叙符+接口描叙符+端点描叙符发送完,而在这里端点描叙符分明是要分几次发送完,而且我看了书上的代码,应该是6个端点(输入输出)是分6次发送的?
3。书上讲的ACK信息包只有外设发送,怎么主机也发送,主机不是只要正确接收的数据发送0字节数据包就表示正确接收吗?(我的理解应该有错误)
4。出错处理在固件程序中怎么做? 是不是读取D12的最后处理状态寄存器,查看错误信息,如果有错则发送STALL包? 还是又D12完成,
另外我看别人的参考程序,怎么他的STALL握手包在6个端点都有发送啊?
问题很多,真的很希望有高手能拉我一把,感谢了!!!
bjdxwz
驱动牛犊
驱动牛犊
  • 注册日期2002-11-07
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-12 21:57
1,是需要几次进入中断.在枚举阶段数据包最大8个字节.大于8个字节就要分几次传输.对D12来讲就要进入几次中断.当然你用查询方式判断数据已经传输完毕也可以.
2配置描叙符+接口描叙符+端点描叙符发送完\"一次发完不太可能.也许用的不是D12或者不是常规做法.
3,4,看看USB协议就明白了

总体来说,对枚举这段程序的处理,抄写例子就可以了.你要想明白为什么这么做,只有去看协议.
游客

返回顶部