社区
驱动开发/核心开发
帖子详情
FAT表的应用
ppzzhhsky
2008-12-03 03:17:57
我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?
...全文
363
13
打赏
收藏
FAT表的应用
我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
不懂
看其它高手的!
51模拟SPI读写SD卡(包括
Fat
和
Fat
32文件系统)
51模拟SPI读写SD卡(包括
Fat
和
Fat
32文件系统),RAR中包含整个工程,可以用Keil直接打开。采用软件模拟SPI读写SD卡,对于想用软件模拟SPI有一定的借鉴性。
Fat
Jar
Fat
Jar
Eclipse打包插件,可以方便的完成各种打包任务,可以包含外部的包等
MPALL v3.08 群联PS2250量产工具
有教程,自己量产过http://hi.baidu.com/yongren11/blog/item/43405b1b8409fbf4af5133b9.html
数据恢复
FAT
表
因为该磁盘并未存入其他数据,在实际
应用
中磁盘存放数据较多时改动较多时,它的簇号就会比较混乱,可能一个文件10个簇,1个簇在66号簇,另一个簇在999号簇并不是连续的所以我们要根据
FAT
表
的指向来恢复,就比如10号
FAT
表
为(0B000000)那么它(10号
FAT
表
项)指向的就是11号簇。然后使用EBR的扇区号 + DBR中提取到的值相加就是
FAT
表
的位置了,当然我们也可以直接从EBR向下跳转8236个扇区,但是要注意的是,向下跳转的时候,要切换为10进制模式,否则无法跳转到我们想要去的扇区!
FAT
文件系统详解与
应用
文件分配
表
(File Allocation Table,
FAT
)文件系统是一种早期的文件系统,最初由微软和IBM共同开发,并广泛
应用
于多种操作系统中。
FAT
文件系统以其兼容性强、管理简单、易于实现等优势,在嵌入式系统、USB闪存驱动器、SD卡等存储介质上被广泛使用。
FAT
文件系统的演变历程展示了从简单的磁盘文件管理到更高效、灵活的存储解决方案的设计理念转变。
FAT
12是最早期的版本,适用于小型存储设备,如软盘。它采用12位索引,支持的最大存储容量为2^12个扇区。
驱动开发/核心开发
21,616
社区成员
21,711
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章