rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3362回复:29

to frank_wang。关于FLASH的FAT结构

楼主#
更多 发布于:2003-06-02 19:17
在你的文章中,为什么要定义簇的大小为32K?
这对于容量本来就不是很大的U盘来说,将会浪费很多空间。
如果说为了让FLASH的块(32扇区)和FAT16统一起来,应该定为
16K/簇,页=扇区。但是这样还是会浪费空间。我看有些文章介绍
说16M以下的分区8K/簇,16―128M的分区4K/簇。我不太理解,
为什么分区越小的簇容量反而越大?岂不是雪上加霜?
不知道你如何理解?
另外,当PC要取得U盘上的文件结构时是发送特定命令,U盘的固件
仅返回给主机DBR和FAT内容。还是连同地址一起返回给主机?

just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-03 12:02
其实系统只会发送读和写命令,逻辑地址和要传输的长度!
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-03 14:51
我也在看frank的那份报告,请问:在文章中提到的BPB_SecPerTrk(每道扇区数),BPB_NumHeads(磁头数),对于16M优盘怎么设置(虽然不是必须的)?

虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-03 15:11
谢谢NewTech,
另外,在51单片机和d12的方案中,必须要扩一个内存来缓存
写入FLASH某页之前的同块其它页数据吗?(鉴于要写一页必须先擦除整个块)
just do it
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-03 15:16
我也在看frank的那份报告,请问:在文章中提到的BPB_SecPerTrk(每道扇区数),BPB_NumHeads(磁头数),对于16M优盘怎么设置(虽然不是必须的)?

 

好像都设成32。
just do it
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-06-03 15:49
请问,是什么报告啊,是什么名字?
是不是关于硬盘的呀,比如分区,文件系统存放的位置
我思,故我在
guo_bin76
驱动牛犊
驱动牛犊
  • 注册日期2003-02-13
  • 最后登录2010-11-20
  • 粉丝0
  • 关注0
  • 积分129分
  • 威望74点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-03 16:04
snow
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-03 18:17
引用:
--------------------------------------------------------------------------------
另外,在51单片机和d12的方案中,必须要扩一个内存来缓存
写入FLASH某页之前的同块其它页数据吗?(鉴于要写一页必须先擦除整个块)


--------------------------------------------------------------------------------
如果用的是nand flash,这是必须的(据我所知),跟flash的原理有关,因为一旦某个字节的某位写入了0,这一位必须通过擦写才可能再写入1或0。
虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-03 21:10
[quote]
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-04 02:35
的确是要扩充一块内存来处理数据的!

对于flash的格式,实际上固件不需要处理太多的(这个问题以后再解释),这是由windows自己管理的,一般来讲要处理的就只有读、写指令。
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-04 14:01
可是读写指令也需要有地址和数据阿。
我现在就是弄不清楚PC机上下来的地址和当要读写FLASH的数据前
要发送的那个地址之间的关系。
还有PC机要获得U盘的FAT和目录区数据,是要发送特定命令,
还是直接给出FAT和目录区所在地址,发送读命令。
这个地址是固定的吧。
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-04 15:49
这两个地址之间没有任何关系,一个块的逻辑地址是保存在物理块每个page后面那16个字节里的!
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-04 18:31
这两个地址之间没有任何关系,一个块的逻辑地址是保存在物理块每个page后面那16个字节里的!

那是不是说逻辑地址和物理地址可以设成一样!
虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-04 19:00
这两个地址之间没有任何关系,一个块的逻辑地址是保存在物理块每个page后面那16个字节里的!

越来越晕了。难道PC机下来的LBA就是page后面16个字节里面的?
那FLASH中页面末16字节中的block address需要我们来写进去吗?
我察看了。没有存放数据的块,这部分是FF FF
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-05 12:17
那后面的16个字节,包含有ECC,带校验的逻辑地址,块的标志,全部都要由固件来完成的!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-05 13:18
NewTech,
你是说从PC机上下来的地址,即SCSI中的Logical block address
就是flash页面中末16个字节中的block address?
既然这个地址是固件完成的,PC机怎么会知道要写哪个块地址。
在前面的过程中,PC机应该知道了MBR,FAT和目录区的内容
那么PC机的操作对象不是应该是簇么?
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-06-06 12:32
pc上肯定知道logical address啊,因为有读fat啊,至于这个地址对应那个物理块,那要由固件自动查找啊,比如说这次写在第10个物理块,删掉文件后,下次再写就写道另外一个空的物理块啊!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-06-06 13:29
fat 里面是簇号。你是说logical address其实就是簇号。
我在另一个贴子里面也看到这个说法。但你前面说:
一个块的逻辑地址是保存在物理块每个page后面那16个字节里的。

这不是矛盾?末16个字节里面的块地址可不是簇号阿
just do it
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-06-06 13:43
发送的数据包里面包含整个簇的内容?
just do it
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
19楼#
发布于:2003-06-06 15:12
我下载了这个技术报告,呵呵
感谢楼主,我现在正在研究
说不定能解决我现在的问题
我思,故我在
上一页
游客

返回顶部