mfc
mfc
驱动牛犊
驱动牛犊
  • 注册日期2001-05-08
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-16分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1165回复:4

USB D11 读入的一个奇怪问题

楼主#
更多 发布于:2003-05-13 23:41
我在用飞利浦 D11芯片开发时遇到一个奇怪的问题,端点0访问一切正常。驱动程序可以向端点1写,但无法从端点1读。因为驱动方面读写除了pipehandle和方向directin 参数不同外,其余都相同,写正常而无法读,所以我认为驱动程序应该无问题。我用DDK带的BulkUsb试过,也是可写不可读。应该是固件方面的问题了,但我发现在读端点1时,连中断也没发生,又不象单片机方面的问题,真奇怪!!!

端点2,3也是如此,到底那里错了呢?

[编辑 -  5/13/03 by  mfc]
mfc
mfc
驱动牛犊
驱动牛犊
  • 注册日期2001-05-08
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-16分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-14 21:19
这样的问题确实很难回答, 看来我只有等那一天\"顿悟\"了
hglzw
驱动小牛
驱动小牛
  • 注册日期2001-06-12
  • 最后登录2006-03-03
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-15 10:24
这位老兄,你好.关于这个问题,俺给你解释一下...
读(readfile)的时候,在读之前,d11或其他的usb接口芯片的缓冲区应该先有效,就是里面先有东东啦,这样读才能有效,否则系统返回错误,不给读啦。
具体做法:在读之前先通知firmware(典型的,用售主命令如:read_write_register)应用层要读数据,并且告此次读包要读数据的数量,先让它给放上,超过buffer_size,只放buffer_size.使驱购缓冲区有效。这样就能读出东西啦。中断是在这个缓冲区被读完以后才发生,不是一发读命令就产生。当读完后,产生中断,在中断里看看是否上次超出了buffer_size,那么把剩下的再放进去,系统就会在下个读时刻把它读走,然后又产生中断,如此循环,直到这个读包整个完成,应用层的readfile也就返回啦。ok
应用层:
    ...
   deviceiocontrol(read_write_rigerst...);
   readfile(...);
   .....
驱动:
   ...
  switch(iocontrolcode)
...
  case read_write_rigerst:
  buildvendorrequest(.....);
brak;
...
firmware:
   .....
//over
  good luck to you!
[img]http://www.kinboh.com/images/5130.jpg[/img]
mfc
mfc
驱动牛犊
驱动牛犊
  • 注册日期2001-05-08
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-16分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-16 09:39
非常感谢你的指点,我现在就试一试。

谢谢!
mfc
mfc
驱动牛犊
驱动牛犊
  • 注册日期2001-05-08
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-16分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-16 21:43
非常感谢,按你的指点,已经成功
游客

返回顶部