免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 751 | 回复: 0
打印 上一主题 下一主题

ISP1582在linux2.6.18上的驱动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-04 23:28 |只看该作者 |倒序浏览
platform: s3c2440 + linux 2.6.18
经过两个月的努力终于把 ISP1582 的驱动成功移植到 linux2.6.18 上面了,可以正常读写文件了,但还有一些小DUG.写操作的速度只有 800Kb/s, 还没有做优化处理,速度介于1.1 到 2.0 之间.读操作和删除的速度可以达到2.0的.呵呵.
直接拿到原厂的代码 PORT 上去后,通过ISP1582写大文件到 Mass storage(Nand Flash)上USB BUS会出现复位的情况,PC端提示 无法复制 / 路径太深 / 参数不正确 等错误.
其实这就是一个不同步的问题,当PC端写数据到 Mass Storage时,传输一段数据后,PC端就和 ISP1582 这边不同步了.ISP1582 请求一个 31 byte 命令时,PC端总是发 512 byte 的数据过来,在等待 9S 之后,导致 ISP1582出现复位,然后出断掉的地方继续传送(驱动程序有丢包的处理),所以有时也可以传送成功.
解决这个不同步最简单的方法就是在读写 IO端口时加一个 200ns 的延时,这样同步问题就解决了.上面提到的速度没有达到2.0也是因为这个延时的原因,因为每次读/写操作时都有 一段延时,导致速度慢了下来,其实不需要每次读/写 IO 端口都延时 200ns, 只需要每次读 buffer_status 时加延时就可以,这样传输的速度应该就会提上去了,不过我还没有找到在哪里加,理论上是应该这样子的.
同时,还出现另外一个问题,上面加 200ns 延时的方法只适用于时钟频率为 300M的,当把频率调到 405M 时就不可以这样做了,至少要加 一个 5us的延时才可以保证 ISP1582 不出现复位,但这样速度是不能忍受的,传输速度就跟串口差不多,还要找一下如何解决这个问题.但能够传完就是完成一大半了.
原代码不方面公开,如果哪位朋友遇到同样的问题可以大家讨论一下.



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42456/showart_489546.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP