NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2003-06-06 18:03
fat 里面是簇号。你是说logical address其实就是簇号。
我在另一个贴子里面也看到这个说法。但你前面说:
一个块的逻辑地址是保存在物理块每个page后面那16个字节里的。

这不是矛盾?末16个字节里面的块地址可不是簇号阿


我什么时候这样说过,逻辑地址和簇号还还有一点点差别的。
另外如果不保存逻辑地址,固件怎么知道逻辑地址和物理地址的对应关系呢!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2003-06-06 20:01
这两个地址之间没有任何关系,一个块的逻辑地址是保存在物理块每个page后面那16个字节里的!

 :D   不是你说的??
总之,PC机只能根据FAT表,发送要改动簇的簇号和内容?
在固件里面再转换簇号-〉逻辑地址-〉物理地址。
是不是
just do it
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2003-06-07 15:25
看了上面的讨论,我想说说我的一些疑问,不对的请指出。NewTech在上面的帖子说到\"一个块的逻辑地址是保存在物理块每个page后面那16个字节里的\",这可以理解:只要在固件中读写操作前增加这么一段“转换”或者“查找”即可完成“逻辑地址”与“物理地址”相应的转换。
既然一切对固件的操作,都归结为read和write,而read和write都是通过“逻辑地址”通知固件操作,那么写的时候,操作系统如何计算“簇号”与“逻辑地址”间的关系。清楚点就是当一个大文件分几个簇存放时,操作系统通过读“目录表”得知文件的起始簇号(仅仅是“簇号”,不是“逻辑地址”,更加不是“物理地址”),然后通过一定的转换(转换关系不懂,我要问的就是这个,知道的高手请指点!),操作系统发给u盘的命令就变成了“逻辑地址”,当读完了一簇后,从fat表得知下一簇“簇号”,再转换通知固件读哪个,过程应该是这样,没错吧!
希望清楚“簇号”与“逻辑地址”的关系的朋友,指点一下?

虽然我比较烦,但是我真不懂!
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2003-06-07 16:33
你总算明白啦!:)
关于簇号和逻辑地址的换算关系极其简单:
逻辑地址=(簇号+(FAT+ROOT)所占簇的个数+1)*每簇扇区数

放分吧!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2003-06-08 14:04
 :D
谢谢NewTech大侠。不过这个帖子没分可放。
我在另一个帖子里给你放了。分数不多。但真的谢谢你。
just do it
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2003-06-08 15:57
看了上面的讨论,我想说说我的一些疑问,不对的请指出。NewTech在上面的帖子说到\"一个块的逻辑地址是保存在物理块每个page后面那16个字节里的\",这可以理解:只要在固件中读写操作前增加这么一段“转换”或者“查找”即可完成“逻辑地址”与“物理地址”相应的转换。
既然一切对固件的操作,都归结为read和write,而read和write都是通过“逻辑地址”通知固件操作,那么写的时候,操作系统如何计算“簇号”与“逻辑地址”间的关系。清楚点就是当一个大文件分几个簇存放时,操作系统通过读“目录表”得知文件的起始簇号(仅仅是“簇号”,不是“逻辑地址”,更加不是“物理地址”),然后通过一定的转换(转换关系不懂,我要问的就是这个,知道的高手请指点!),操作系统发给u盘的命令就变成了“逻辑地址”,当读完了一簇后,从fat表得知下一簇“簇号”,再转换通知固件读哪个,过程应该是这样,没错吧!
希望清楚“簇号”与“逻辑地址”的关系的朋友,指点一下?

 

总结的好。其实我一直就是在问这个转换关系,就是说不清楚。
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2003-06-09 02:17
不过我还是不太清楚你的目的!如果你只做固件的话,这个公式对你没有什么大用处的!
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2003-06-09 10:03
为了感谢你的帮助,我另外开了贴,给分数,里面还有问题需要你的解答。谢谢!

http://www.driverdevelop.com/forum/html_43585.html?1055124002 [url] [/url]
虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2003-06-09 10:56
不过我还是不太清楚你的目的!如果你只做固件的话,这个公式对你没有什么大用处的!

我知道文件系统是怎么回事。我也知道FLASH里面是分成块来管理最小读写单位是页,写前要擦除先,我只是很不清楚接口上的数据如何转换。也就是我一直在说的:PC机传到控制器的地址信息(簇号)和
最终要读写Flash前,要先发送3个周期的地址信息(24位,即我所认为的物理地址)之间的关系。我是做固件啊。从接收PC机的命令,到最终操作执行到flash里面去,不都是固件来做的么?
按照公式得到了逻辑地址,把扇区和页面设成一样大。这样逻辑地址
就是物理地址了。我不太同意你前面说的“一个块的逻辑地址是保存在物理块每个page后面那16个字节里的!”我认为那16个字节里面
是块地址。每32页(扇区)用同一个块地址。而逻辑地址是一个扇区对应一个地址。
just do it
ajinalong
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-12-23
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-06-18 10:08
 上面各位兄弟讨论得很好,我想问个U盘枚举问题
1.
20    CDB    25 00 00 00  00 00 00 00  
             00                       READ CAPACITY
20    CDB    28 00 00 00  00 00 00 00  01
             00                     READ            
为什么两个命令返回的总扇区数不一样呢?  
2.我在XP下监控朗科64MU盘,先格式化后,发现PC依次送以下命令:
CDB    28 00 00 00  00 00 00 00  01 00
CDB    28 00 00 00  00 20 00 00  01 00
CDB    28 00 00 00  00 60 00 00  04 00
CDB    28 00 00 00  00 20 00 00  08 00
.
.
.
CDB    28 00 00 00  01 18 00 00  08 00
CDB    28 00 00 00  02 18 00 00  08 00
请问为什么PC送逻辑地址到0x0218就不送了,后面的08应该是扇区的个数吧,还有为什么地址中间是连续的,而开始和结束是跳跃的?谢谢.
上一页 下一页
游客

返回顶部