阅读:1809回复:3
我的bulk,我的程序,高手请指教!
我用的cypress的an2131q的板子,8051内核是24Mhz。
我做了一个bulk out的程序,传送1M字节,然而我用了17秒的时间,也是才60Kbytes/s,你们都说至少有400~500k的,能看一下我的固件,哪里还能改的,在这里谢谢了! begin: mov r7,#00h mov r6,#40h .......(bulk ep2out 初始化,and pair ep3out) loop: mov dptr,#OUT2CS; movx a,@dptr jb acc.1,loop MOV DPTR,#OUT2BC MOVX A,@dptr ............ ;(1) (从out2buf中取数,) MOV DPTR,#OUT2BC MOVX @DPTR,A djnz r7,loop djnz r6,goon ljmp out goon: mov r7,#00h ljmp loop out: ............ (到此1M完) 程序中如果不处理out2buf中的数据,而直接再去握手信号,对速度也没多大改善。我该怎么办?有什么地方要改进的? 如果用中断的方式会不会快点。(我没有试,估计影响不大)请高手赐教,我将不胜感激!!! 我的email:netinfo@cn99.com |
|
最新喜欢:sunmac...
|
沙发#
发布于:2001-09-10 17:55
我用中断方式,接收1MB用了2.3s,8MB用21s.
|
|
板凳#
发布于:2001-09-12 16:48
可是现在我试了中断方式并没有丝毫的起色啊!怎么办?
|
|
|
地板#
发布于:2001-09-12 19:03
[QUOTE]原本由 kejun 发表
[B]我用的cypress的an2131q的板子,8051内核是24Mhz。 我做了一个bulk out的程序,传送1M字节,然而我用了17秒的时间,也是才60Kbytes/s,你们都说至少有400~500k的,能看一下我的固件,哪里还能改的,在这里谢谢了! begin: mov r7,#00h mov r6,#40h .......(bulk ep2out 初始化,and pair ep3out) loop: mov dptr,#OUT2CS; movx a,@dptr jb acc.1,loop MOV DPTR,#OUT2BC MOVX A,@dptr ............ ;(1) (从out2buf中取数,) MOV DPTR,#OUT2BC MOVX @DPTR,A djnz r7,loop djnz r6,goon ljmp out goon: mov r7,#00h ljmp loop out: ............ (到此1M完) 程序中如果不处理out2buf中的数据,而直接再去握手信号,对速度也没多大改善。我该怎么办?有什么地方要改进的? 如果用中断的方式会不会快点。(我没有试,估计影响不大)请高手赐教,我将不胜感激!!! 我的email:netinfo@cn99.com [/B][/QUOTE] 因为设备总是被动的,在 firmware中可以不要r6 r7的循环计数,反正有一个bulk out中断就去服务一次直到主机方发完所有数据,每次从主机接收64B.中断服务程序尽量简短,用时最好不超过1ms. 另外也许跟主机程序发送数据的速率有关系,有个帖子讲了这个问题,建议看看。 |
|