chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2022回复:9

u盘只能读,不能写?

楼主#
更多 发布于:2003-08-01 19:36
写的时候系统发来一条write10指令,接着就发来数据,而接收完这些数据,把它写入flash后。再发送csw给系统,系统再发一个write10指令,但是没有数据了,是什么问题呢?是不是速度问题,对flash操作花的时间太长了,系统认为超时了?
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-03 15:45
没有人做过?
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-08-04 11:55
写的时候系统发来一条write10指令,接着就发来数据,而接收完这些数据,把它写入flash后。再发送csw给系统,系统再发一个write10指令,但是没有数据了,是什么问题呢?是不是速度问题,对flash操作花的时间太长了,系统认为超时了?

很有可能就是速度的问题,我遇到过和你一样的问题
比如在一个write10指令中传输64kB数据时,就只能接收其中的一部分,然后就超时,后来我将代码进行优化,采取空间换取时间的策略,就可以了。
还有可能就是在你接收到CBW命令时,没有使能接收FIFO,从而在下一个OUT时,设备状态不对,也就不会再发数据了

在pc端,用bus hound查看一下,在write后是什么原因导致这个问题,如果是“timeover”的话,就应该优化你的代码
我思,故我在
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-04 21:34
flycat0101:
看来你以前遇到过类似情况,我用的mcu是89c55wd。所以速度是个问题。但现在只能是就事论事,说说你那个空间换取时间的策略,可以吗?先谢过了!
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-04 21:36
flycat0101:
你是在bulk in 和 bulk out 中断里处理数据吗?还是在主程序里呢?
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-05 17:19
还有谁知道?
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-07 18:25
NewTech:
快来帮帮我啊!
对闪存的读写是放在端点2的中断里吗?还是放在主循环里?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-08 00:54
中断负责接受数据,可以在主循环里来写flash!
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-10 21:53
写flash的时候是不是要关掉中断?如果关了中断,会出现超时现象吗?我现在也碰到frank_wang曾遇到的问题,就是系统发来一个扇区512字节时,每次发64字节,结果只发7次就停止了,这时如果返回csw,就会发来最后一个64字节数据。那要是一次发8个扇区字节呢?会不会每发7次就会等待csw呢?
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-11 18:28
是不是处理flash时间过长,老是出现no response?
游客

返回顶部