rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
阅读:3530回复:22

Very large data transfer

楼主#
更多 发布于:2001-08-20 13:56
昨天试着从一个usb device连续读16Mbyte的数据,对应的端点每次只能传64 byte。
刚开始的时候,每次都只让driver读64byte,速度巨慢,但是数据到是没有错误。后来每次改为读4096byte,感觉速度非常快,但是经常发生CRC错误,usbd把发生错误的packet对应的buffer都用zero填上了,而且端点也stall了。:(
以前没有一次性读写这么多数据,没有碰到过。不知道这里有没有哪位xd有过这种经历?怎么解决?在host端怎么解决?
可惜现在是大白天,老外们都在睡觉.....usb.org上还没有人回答....嗬嗬!
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-30 14:29
我手头的几个52都是20M的,大概还玩不成,要找几个24M的才行。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-30 14:25
[QUOTE]原本由 starmoon 发表
[B]To rayyang2000:

D12 上还是用 6M,

但 D12 的 ClockOut 是可以编程的啊。

我编程让他输出 24M  , 就是 48M/(N+1), N=1

N设为 0 时是 48M, 33M 的 52 吃不消 [/B][/QUOTE]
多谢starmoon提醒!回家赶快试一下。:)
一直忘了这个参数,老是考虑别的地方是不是有问题。看来太卖力的干活,有时候脑子反而不好使了。 :P
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
Truly
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录2005-05-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-30 09:51
TO:   /* What's the frequency of the crysptal of D12? Still 6MHz?
Then, what's 24MHz? For 89C52? No CRC error? Which endpoint and transfer type?
Thanks. */

引用starmoon:“
D12 上还是用 6M,
但 D12 的 ClockOut 是可以编程的啊。
我编程让他输出 24M , 就是 48M/(N+1), N=1
N设为 0 时是 48M, 33M 的 52 吃不消  ”

我现在在考虑用W77E58,它是四个振荡为一个指令周期的,同样频率下比一般的51快二、三倍。但有点资源浪费了,不知还有没有其它好推荐?
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-30 01:34
To rayyang2000:

D12 上还是用 6M,

但 D12 的 ClockOut 是可以编程的啊。

我编程让他输出 24M  , 就是 48M/(N+1), N=1

N设为 0 时是 48M, 33M 的 52 吃不消
xmchao
驱动牛犊
驱动牛犊
  • 注册日期2001-06-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-29 15:40
Cypress的2131可以做到48M,应该在MCU性能上满足吧
guest
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-08-28 14:34
[QUOTE]原本由 Truly 发表
[B]昨天实验了一下,可以达到350KB/S,
瓶颈应该是在MCU上,我用89C52用PHILIPS的D12 USB-EPP演示板与演示程序测只有16KB/S左右,真的是慢!后来在24MHZ能有三十KB多了,就逐渐改FIRMWARE,后来用C达到的极限应该就是三百多了,因为在我的中断里什么都没做,只是读状态消除中断,然后也没再填数据,直接就用第一次的数据确认发送。看来要提高传送率只有换MCU或改回用汇编了。 [/B][/QUOTE]
What's the frequency of the crysptal of D12? Still 6MHz?
Then, what's 24MHz? For 89C52? No CRC error? Which endpoint and transfer type?
Thanks.
Truly
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录2005-05-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-08-28 10:10
昨天实验了一下,可以达到350KB/S,
瓶颈应该是在MCU上,我用89C52用PHILIPS的D12 USB-EPP演示板与演示程序测只有16KB/S左右,真的是慢!后来在24MHZ能有三十KB多了,就逐渐改FIRMWARE,后来用C达到的极限应该就是三百多了,因为在我的中断里什么都没做,只是读状态消除中断,然后也没再填数据,直接就用第一次的数据确认发送。看来要提高传送率只有换MCU或改回用汇编了。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-08-28 09:15
[QUOTE]原本由 starmoon 发表
[B]DMA 很麻烦, 还得DMA控制器, 成本上划不来。

D12 的时钟设成24M 到 52 试试?

我用的Sangsum 的 52 33M @ 24M, 用纯 bulk 方式, 达到240K/s左右。 还有很大的提速空间, 因为I/O 全用的 inportb/outportb 了, 还有就是地址加递加和边界(分页)判断没有优化。 [/B][/QUOTE]
你是说将D12的晶振改成24MHz的?是不是用6的整数倍的晶振就可以?我一直是用Philips推荐的6MHz。
另外,有人告诉我说D+/D-上的下拉电阻超过20K就没有作用了。可是Philips推荐的一直是1M,而且我以前用的Cypress的,也是用的1M。昨天晚上试了一下,弄了2个10K的电阻接上去,发现也可以用,但是对速度根本没有作用。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-08-28 02:15
DMA 很麻烦, 还得DMA控制器, 成本上划不来。

D12 的时钟设成24M 到 52 试试?

我用的Sangsum 的 52 33M @ 24M, 用纯 bulk 方式, 达到240K/s左右。 还有很大的提速空间, 因为I/O 全用的 inportb/outportb 了, 还有就是地址加递加和边界(分页)判断没有优化。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-08-27 16:44
[QUOTE]原本由 rolston 发表
[B]用DMA就OK [/B][/QUOTE]
是吗?你用下来的速度有多快?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rolston
驱动牛犊
驱动牛犊
  • 注册日期2001-06-21
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-08-27 14:45
用DMA就OK
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-08-27 09:43
终于搞清楚了原因。
其实所谓的FSM,我早已经实现。
真正的原因是D12和AT89C52的时钟不同步,产生了数据的CRC错误。现在把D12的时钟输出直接送给AT89C52,就OK了。但是这样一来,速度就很慢,单单只做USB传送,16MBytes的数据要花上1023 seconds,平均下来只有16kbyte/s。简直是蜗牛爬啊!
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-08-22 19:46
[QUOTE]原本由 starmoon 发表
[B]Philips 的例子里有。

好象是那个 mass storage 的例子。
 [/B][/QUOTE]
明白了.仔细研究一下
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
SDK
SDK
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2001-08-22 11:53
Hi:
   你不能不采用FPGA,这又是一门很大的门类,再花若干时间学吧!
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2001-08-22 09:33
Philips 的例子里有。

好象是那个 mass storage 的例子。
fyshe
驱动牛犊
驱动牛犊
  • 注册日期2001-05-07
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2001-08-22 09:16
哦,多谢了!
怎么不用CYPRESS 的2131呢?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2001-08-22 08:56
[QUOTE]原本由 fyshe 发表
[B][QUOTE]原本由 starmoon 发表
[B]FSM= Finit State Machine [/B][/QUOTE]
两位:D12 + 33M 552 究竟是什么意思,请指教 [/B][/QUOTE]
= PDIUSBD12 + 8XC552(@33MHz)
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2001-08-22 08:55
[QUOTE]原本由 starmoon 发表
[B]FSM= Finit State Machine [/B][/QUOTE]
能不能详细讲一下?或者给点提示,比如网址什么的。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
fyshe
驱动牛犊
驱动牛犊
  • 注册日期2001-05-07
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2001-08-22 08:50
[QUOTE]原本由 starmoon 发表
[B]FSM= Finit State Machine [/B][/QUOTE]
两位:D12 + 33M 552 究竟是什么意思,请指教
上一页
游客

返回顶部