mademin_cas
驱动牛犊
驱动牛犊
  • 注册日期2008-06-27
  • 最后登录2008-10-31
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1614回复:4

68013 Bulk In 传输4096行×4096列×16bit数据时丢失数据

楼主#
更多 发布于:2008-09-01 11:29
我用EP2作为bulk in端点,fifo配置成4×512,FD【0..7】为数据总线(即8bit位宽),异步传输模式,SLWR有FPGA产生,其的频率为8Mhz,
一次传输的数据量为4096行×4096列×16bit的数据,来自于一颗AD 芯片。
上位机的驱动程序为cyusb.sys。

结果基本每次传输都发生数据丢失的现象,其丢失位置为随机的,每次丢失的数据量也是随机的,如8192bits等,但不会多的离谱。

不知道是否也有人遇到过这个问题,很头疼。

希望各位走过路过的各抒己见,无论对错!
非常感谢
mademin_cas
驱动牛犊
驱动牛犊
  • 注册日期2008-06-27
  • 最后登录2008-10-31
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-10-10 10:16
smilebear  同时压多个IRP下去---意味着需要对驱动进行较大的修改或重新写驱动,工作量较大

rayyang2000 在firmware里面加上控制--听起来还是比较简单的一种方法--不过数据量大,连续传输,速率较高时,人工干预好像更容易导致数据丢失。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-09-16 12:14
貌似是硬件那边fifo的问题。要么就像楼上说的多放IRP(例如chained urb),要么就在firmware里面加上控制(例如收到host的ack后再放新数据)。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
smilebear
驱动牛犊
驱动牛犊
  • 注册日期2002-06-14
  • 最后登录2010-06-24
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望38点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-09-12 17:18
必须要同时压多个IRP下去(一个收到数据后返回上层处理时还会有别的IRP在等待),才能保证host这边处理的速度和平滑性。
hzhbrood
驱动牛犊
驱动牛犊
  • 注册日期2008-06-25
  • 最后登录2008-09-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望7点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-09-12 12:22
连续不断数据,如果没用缓存或者irp上处理,肯定容易丢数据
游客

返回顶部