jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2413回复:12

怎样用IOCTL_EZUSB_BULK_READ一次读取超过512字节啊?

楼主#
更多 发布于:2003-07-27 16:06
我用的是FX2的仿真板,IOCTL_EZUSB_BULK_READ的函数里是有个参数
可以设置一次读入字节的限制,最大可以到64K,但固件端当被读走
第一个512字节后,接下去的若干个512字节该怎样放到endpoint上
去让主机接着读呢?
jiang
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-27 18:55
方法1:如果你用的时8051控制模式,你可以在短点中断里设一个标志位,一旦一个包发送成功,你就会收到一个ack中断,写数据时检查这个标志位
方法2:先起动上层应用程序,发送一个out包给设备,通知设备可以写数据到端点,然后应用程序就可以读去数据,而设备方则源源不断的把数据写到端点里。
方法3:固件里检查端点空满标志,一旦端点为空就写数进去。
jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-27 21:49
我用EP2端口在试(IN),固件端用
void ISR_Ep2inout(void) interrupt 0
{

EP2BCH =0x01 ;
 SYNCDELAY;      
EP2BCL =0xff ;

EZUSB_IRQ_CLEAR();

EPIRQ=bmEP2;
}
这个中断程序重新使能EP2IN,但我的READ函数一遍还是只能读
到512字节,难道是中断响应太慢了吗?

jiang
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-27 23:33
你上位机设置的每次读多少呀,如果是512的话当然只能读到512了。
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-28 08:20
512已经是USB2.0的一个包传输的最大字节了,不能再大了。
jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-28 10:03
在上位机端,我设过大的数据了,如4096,10240的,但每次只
读到512字节,痛苦!
jiang
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-28 10:10
这是正常的,你只能靠提高一次deviceiocontral的包的数量来提高速度。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-28 10:26
在上位机端,我设过大的数据了,如4096,10240的,但每次只
读到512字节,痛苦!


这是你固件方的问题,我用bulksrc那个例子一次可以读很多数据的,65535我都试过,那个例子是先写一批数据到下面的ram里,然后读的时候再从ram里读出来发到主机方。
jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-28 13:42
感谢金兄,我找到了固件bulksrc果然可以读60k每次,上位机
程序没问题的,我看看bulksrc是怎么写的。
jiang
jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-28 23:52
已经解决了!!!
按照bulksrc这个例子中固件得写法就可以了。
我原来得问题是没判断端口是否为空就rearm了,应该空时
rearm才对。
jiang
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-29 09:30
解决了就好,不过你的测试方法实用性不强,因为你省去了填充端点所花费的时间,实际情况下你是不能不考虑这段时间的,因为这段时间是设备方主要花费时间的地方。
jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-29 10:17
是的,但我的填充想采用slavefifo的方式,直接把摄像头
传出的数字量写进断点,不要8051的指令参与,具体的速度我
没底,但应该比用指令填充快出很多吧!不知道能否跟得上我这样
直接测得速度!
jiang
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-29 11:11
那具体的速度得看你摄像头那边控制器的速度和数据率了,你那边的速率越快,总的速率就越快。
游客

返回顶部