阅读:1635回复:9
读写U盘的疑惑(给分)
小弟正准备作Host读写U盘,有些问题百思不解,虽然问题很菜,还望高手指点迷津:
1.Host对U盘读写是以扇区/块为单位的吗?如果是按扇区来读写的话,FAT记录的是簇,Host如何确定逻辑地址呢,LBA给出的应该是扇区号吧,按照frank 大虾的说法? 2.创建文件就是要在根目录写入32字节的文件结构,那么是怎么写呢?Host一次写操作不是至少要512字节。是不是Host先发read命令读出根目录的内容,再加上要创建的文件,然后用再write命令一起写回? |
|
|
沙发#
发布于:2004-09-24 12:36
是的,先从目录区读出来,然后再写回去
|
|
板凳#
发布于:2004-09-24 12:51
是的,先从目录区读出来,然后再写回去 多谢! 那我怎么知道,目录区有多少个文件呢。就是说如何定位我写的地址不会覆盖以前的文件结构?如果目录区被写满了又怎么办? |
|
|
地板#
发布于:2004-09-24 13:38
对于fat12和fat16,根目录的大小是一定的,一般是512*32bytes,满了就不能写了,当然可以建子目录,子目录的大小是没有限制的。
|
|
地下室#
发布于:2004-09-24 14:16
多谢!
明白了一点。那我就是要读512*32这么多的数据,插入我要建立的文件结构,然后再写回512*32个数据到根目录区? 每个文件结构占用32个字节,我如何判段根目录区写了多少个文件结构呢?是不是可以这样判读,看每个结构的文件名单元,如果是00H和E5H就表明未用或是被删除,那么这32个字节的结构就可以用了。如果所有的结构文件名都被占用了,就表明目录区写满了? 还有啊,是不是每次Host一定要写至少512个字节的数据呢?不可能我每次要写得数据都是512的整数倍吧,如果要写的数据少于512怎么写,就比如说我的这个文件只有1个字节,后面补0还是别的什么? [编辑 - 9/24/04 by IDK_Marry] |
|
|
5楼#
发布于:2004-09-24 19:57
我也不懂,希望高手来指教。
顺便请教一下frank在U盘项目报告中说,U盘 Block 0的第一个扇区是BPB,是不是所有的U盘都是这样? |
|
|
6楼#
发布于:2004-09-24 20:32
推荐一个网址,上面有硬盘结构很详细的介绍
U盘的结构与此类似 http://www.dostor.com/hdd/diy/2004-04-02/0002410253.shtml |
|
7楼#
发布于:2004-09-25 18:48
多谢eifire大虾,我去研究研究
|
|
|
8楼#
发布于:2004-09-26 10:48
我有成功开发案例,有要求的请联系。qq:45364203
email:zyyz1100@eyou.com |
|
9楼#
发布于:2004-09-26 13:52
我有成功开发案例,有要求的请联系。qq:45364203 请问: U盘FLASH中 怎么搜索physical block? |
|