zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:2829回复:14

总算完成在dos下usbhost读写u盘设计,分享一下经验,还有几个fat表资料下载

楼主#
更多 发布于:2004-12-15 10:27
我用的是ch375在dos下开发,通过isa总线接口和ch375相连,现在做的程序是在dos下图形界面中通过触摸屏控制文件列表显示拷贝删除
等功能,写优盘速度大概60多k/s,读快多了,感觉上就和操作一个普通的接口设备一样,可以实现即插即用。在设计中间也走过弯路,印制板也耽误了些时间,ch375也可以用在各类单片机中,大概原理差不多,如果各位有什么问题,我愿意和大家交流一下,但源程序在单位,属于秘密不能公开,我在脑袋里的东西还是可以奉献给大家的


有几个fat表资料在下面8楼

[编辑 -  12/15/04 by  zjuboy]

最新喜欢:

crazyqpcrazyq...
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-12-15 10:53
问楼主,写u盘是否只能是一个扇区一个扇区的写?

u盘的一个扇区是 512 字节,每次只能写512 字节,太慢了。


[编辑 -  12/15/04 by  wdy9927]
lujunql
驱动小牛
驱动小牛
  • 注册日期2004-06-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-15 10:56
恭喜!恭喜!
zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-15 14:19
不一个扇区一个扇区写难道还想一个字节一个字节写吗
呵,其实优盘每个扇区有512+16个字节,后面的是一些控制字节
,优盘每次以块方式写入,每次都要写32个扇区以上,这是对优盘,
我们写实际上是写控制芯片的缓存,对于ch375以bulk方式每次要写入64字节,一个扇区需要发送8次,速度快慢和一次写多少扇区并没有太大关系,主要是你的编程方式的效率决定的

[编辑 -  12/16/04 by  zjuboy]
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-12-15 14:41
http://www.driverdevelop.com/forum/viewthread.php?tid=82136#pid595159

楼主我的问题在这里,帮忙分析一下。

还有,u盘一个块是32个扇区,是怎么得知的? 块是个什么概念?
zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-15 15:41
簇的大小并不是一个扇区,可以自己定义的
通常优盘用的是三星nand闪存,它的扇区是线性排列,每一个block(块)包含32个扇区,每写一个字节前必须先擦除相应的块的内容,这是它的物理特性决定的,所以你写的时候就很慢,建议你多看些相关的资料再编程,会事半功倍的
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-12-15 18:36
簇的大小可以自己定义的意思是不是说主机在格式化u盘的时候在 DBR 区定义的每簇扇区数。

这个数一般为多少比较合适? 对于u盘来说 32 会不会浪费太多空间了。

block(块)和簇有什么关系? 是一个意思么?
wsqss2004
驱动小牛
驱动小牛
  • 注册日期2004-06-11
  • 最后登录2012-02-17
  • 粉丝0
  • 关注0
  • 积分994分
  • 威望202点
  • 贡献值2点
  • 好评度91点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-15 20:47
我也是 64字节的bulk方式。速度才40kB左右,实在是太慢,能有 什么好的建议提速吗?在不加外存的情况下。我的内存为2k
zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-15 21:29
有个下载的ch375 fat表源程序
还有fat表介绍
附件名称/大小 下载次数 最后更新
2004-12-15_CH375FAT.rar (404KB)  120
zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-16 16:35
我用的是40m的486dxpc104板,用bc++编程,数据缓存开了16k,速度就快些,对于你们的速度提高,我只能凭想象说一说。首先簇定义成32个扇区是有好处的,空间浪费一点也不可惜,现在优盘越来越大,这样你可以一次写16k数据,而只需要擦处一次,而且有些优盘本身就要求一次写16k以上,不然会发生错误,其次编程的时候注意读写效率,优化算法,对于资源较小的单片机最好用汇编,呵,我也用不好,高手可以试试
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
10楼#
发布于:2004-12-17 12:13
恭喜恭喜!请收邮件!
zjuboy
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2008-01-03
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-17 15:32
答Leopard如何在dos下编写u盘驱动

这个估计比较麻烦,首先你得知道你的主板usb控制芯片是什么,然后要知道它的对应控制寄存器数据寄存器地址,状态是用什么方式读取,有可能是查询也可以是中断方式获得,其次,你的芯片应该没有集成mass-storage协议,你得自己解释传输协议,然后你得编写fat表,实现文件功能。

我用得ch375经过我得分析,它是一个带有arm7内核的处理器,能够自己解释传输协议和自己定义的简化命令,开发起来方便多了
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
12楼#
发布于:2004-12-17 18:18
我不需要文件系统,只要能够读取一个扇区就行了!

我能发现有设备,但是没法往下进行!

mass-storage协议应该支持,应用环境主要是笔记本,或者档次好一些的PC等!

我现在被如何发送命令给难住了!

谢谢!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2004-12-18 08:18
再问楼主:
u盘簇的大小,是应该由主机决定还是应该由u盘决定?我这里有个新买的盘,读出 dbr 发现一簇是2扇区,我现在想把它改成32扇区该怎么做?直接把这个值改掉恐怕不行吧?
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-01-18 12:31
再问楼主:
u盘簇的大小,是应该由主机决定还是应该由u盘决定?我这里有个新买的盘,读出 dbr 发现一簇是2扇区,我现在想把它改成32扇区该怎么做?直接把这个值改掉恐怕不行吧?
 

直接改肯定是不行的,Windows肯定不能正确读取上面的文件了。
一般情况下,应该在格式化磁盘的时候才能修改这个值。
mailto:tsingkong@163.com
游客

返回顶部