阅读:1069回复:1
usb写问题求救!(70分,搞定再开帖子给分!)
先简单介绍一下我的项目:我是在arm9+USB控制器(这两者已经集成到一起了,具体usb控制器是什么不清楚)进行开发,然后通过函数接口,对MMC卡进行读写(也就是调用它的读写函数就OK了,在Linux系统中这是另外一个驱动程序,他的读写函数可以直接使用)。目前我已经可以正确地从MMC卡中读取数据,但是向MMC中写数据的时候有问题。我Endpoint的FIFO是64Byte
问题现象: 1 在CCS下,向SDRAM写数据。当发出写命令时(比如,向MMC拷贝一个2K的文件),我的USB设备接收到了这个命令,进入数据接收状态,2K的数据文件已经接收到,在改写根目录时(此时,PC机向USB设备写8个逻辑块的数据),只能接收到4个完整的块的数据,然后在接收第5块的时候,只能接收到3个FIFO的数据,然后就“no response”,然后超时,从此我的USB设备就不复存在了。有些时候是4个块多一些就超时了 2 在Linux下,向MMC写数据。每次都只能写入几百个字节的数据就没有反应了“no response”,有些时候是一个块(block),有些时候不到,比如256字节,然后bus hound就显示超时了。 在linux下的问题和CCS下的问题差不多,给我感觉都是写的时间不够用,其实很多时候还没有写到MMC里,只是接收数据的时间(要达到512字节才写入啊)就不够,让我很是郁闷。 大侠们帮我分析分析,哪儿出现了问题。 附上我的接收数据源码! 如果哪位朋友要使用它,可以自由使用,除了写那部分有问题外(也正是我现在的问题),其余都正确!! |
|
|
沙发#
发布于:2003-07-25 18:16
已经找到问题了,呵呵
把我的经验也告诉大家: 我优化了CCS下的代码,所以,写也没有问题(现在正听着U盘上的歌呢,呵呵,很爽) 在Linux下,问题出现在MMC的写函数,这个函数耗费了大量的时间。因为这是直接对MMC硬件进行写的,要等待其完成后才能返回。下周准备调用快设备的接口函数(据说有缓冲的,就不用在这儿等其返回状态,然后就可以直接进行我以后数据的接收,应该能够解决问题啦),哈哈哈,可以过一个舒服的的周末啦, :P :P :P [编辑 - 7/25/03 by flycat0101] |
|
|