FAT表的应用

ppzzhhsky 2008-12-03 03:17:57
我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?
...全文
363 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooogleman 2008-12-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 ppzzhhsky 的帖子:]
我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?
[/Quote]
你的问题都描述错了,根据物理地址去找逻辑0地址?
对于文件系统使用的是逻辑地址,如果想把逻辑地址对应的物理地址找出来,需要在驱动中找才行,但是你的U盘的驱动代码你是没有的,所以我觉得你的目的达不到。
llg84 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ppzzhhsky 的回复:]
我觉的应该有个物理-逻辑的映射表,因为对于逻辑来说,物理总是在变化的,但是我不知道该怎么去做
有谁知道吗?
[/Quote]
确实存在这么个映射关系,但是这是由主控芯片来处理的,对系统来说是完全透明的。除非你要把flash芯片拆下来自己读才需要了解相关的东西,否则这个映射关系如何你不需要知道。由于这个映射关系涉及到的wear levelling算法是各家主控厂商的机密,所以你也不可能找到相关资料,只能自己做逆向工程,通过分析flash的spare area(flash芯片每个page除了存储正常数据的区域,还会有一小段用于存储特殊数据,这个就是spare area)上的数据来自己寻找映射关系。
ppzzhhsky 2008-12-11
  • 打赏
  • 举报
回复
我觉的应该有个物理-逻辑的映射表,因为对于逻辑来说,物理总是在变化的,但是我不知道该怎么去做
有谁知道吗?
shuiyan 2008-12-11
  • 打赏
  • 举报
回复
U盘的话,NAND FLASH的坏块管理是由usb-nand转换芯片实现的,所以windows系统是不知道的。

而所谓的物理-逻辑映射表,是指U盘有效block与逻辑存储空间的映射,这个表可以在fat表中修改。有TFFS之类的文件系统能实现这个表的变化。
shuiyan 2008-12-08
  • 打赏
  • 举报
回复
U盘的flash一般是NAND flash,其基本构成是block,每个block又有多个page,每个page容量一样,常见的是2KB/page的,以前的512B/page的现在基本不用了(page的字节数指的是可存储用字节,未包含最后的信息位)。

驱动中会将一个page分成4个sector,这样就符合通用fat对sector的定义:512字节。

而由于nand的坏块的存在,导致logic0 sector在每个芯片上是不确定的。

你如果写应用程序,那调用系统API能获得的磁盘logic 0就是经过驱动转换后的fat格式的logic0,而不是真正物理的逻辑0区。
如果想获得真正的逻辑区信息,可以尝试用CreateFile的方式打开磁盘(文件方式),然后ReadFile(...)读取512字节即可。
llg84 2008-12-08
  • 打赏
  • 举报
回复
不存在分区表的话,磁盘第0扇区就是分区第0扇区,存在分区表的话则需要分析分区表获取分区第0扇区。当然,这个磁盘上的第0扇也并非就是Flash上的0地址,不过这个就不用管了,这是主控的事,你从系统中是看不到这一转换过程的。另外不使用第三方软件格式化或分区的话,U盘都是不带分区表的,因为在windows系统中,可移动介质分区是没有意义的,即便存在多个分区,系统也只会显示第一个分区。
91program 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ilovedrv 的回复:]
楼主,看下这篇帖子吧,这是我见过的最全的fat表分析了

http://www.dostor.com/article/2004/0402/9652140.shtml
[/Quote]

这个我也看到过,但不清楚
ilovedrv 2008-12-03
  • 打赏
  • 举报
回复
楼主,看下这篇帖子吧,这是我见过的最全的fat表分析了

http://www.dostor.com/article/2004/0402/9652140.shtml
guetcw 2008-12-03
  • 打赏
  • 举报
回复
没有读过U盘,建议你自己用winHEX这个软件读数据出来看,它会帮你分析好MBR,BPB这些的,学习文件系统的好帮手。
cnzdgs 2008-12-03
  • 打赏
  • 举报
回复
不清楚你要做的是什么程序,所以也不知道自己懂不懂。
ppzzhhsky 2008-12-03
  • 打赏
  • 举报
回复
没有人知道吗?
ppzzhhsky 2008-12-03
  • 打赏
  • 举报
回复
知道有谁懂吗?
谢谢!
91program 2008-12-03
  • 打赏
  • 举报
回复
不懂

看其它高手的!

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧