单片机读取FLASH.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机读取FLASH

     FAT32文件系统的存储机制及其在单片机上的实现  FAT32文件系统您一定不会陌生,最多看到它是在windows操作系统里,但在一些嵌入式产品(如手机、MP3、MP4等)中,也能看到它的身影。从某种意义上来讲,FAT32文件系统是非常成功的,使我们可以脱离底层储存设备驱动,更为方便高效地组织数据。给单片机系统中的大容量存储器(如SD卡、CF卡、硬盘等)配以FAT32文件系统,将是非常有意义的(如创建的数据文件可以在windows等操作系统中直接读取等)。 FAT32本身是比较复杂的,对其进行讲解的最好方法就是实际演练。笔者手里持有一张刚以FAT32格式化的SD卡,我们就围绕它来讲解FAT32的实现机理。 FAT32分为几个区域,这里将用实例的方法对它们的结构与在文件存储中的功能进行详细的剖析。 实例说明 此实例首先在一张空的SD卡(已被格式化为FAT32格式)上创建一个文本文件,并在其中输入20个字符。再将它插入到单片机系统中,实现对这个文件的读取,将文件内容输出在调试终端上。 实现过程 格式化与创建文件 Windows上的磁盘格式化与文件创建就不用多说了。如下图: 2)DBR(DOS BOOT RECORD 操作系统引导记录区) DBR是我们进军FAT32的首道防线。其实DBR中的BPB部分才是这一区域的核心部分(第12~90字节为BPB),只有深入详实的理解了BPB的意义,才能够更好的实现和操控FAT32。关于DBR在FAT32中的地位就不多说了,以下面实际的DBR内  图所示:   上面的数据看起来杂乱不堪,无从下手,其实对我们有用的数据只不过90个字节(如图中彩色线标记的字节)。仅仅是这90个字节就可以告诉我们关于磁盘的很多信息,比如每扇区字节数、每簇扇区数、磁道扇区数等等。对于这些信息的读取,只要遵循DBR中的字段定义即可。(比如图中紫色字段的两个字节表示这张磁盘的每一个扇区有512个字节,具体的计算方法见下文) 字段定义如下表(BPB后面的422个字节对我们的意义不大,表中省略): 字段名称 长度 含义 偏移量 jmpBoot 3 跳转指令 0 OEMName 8 这是一个字符串,标识了格式化该分区的操作系统的名称和版本号 3 BytesPerSec 2 每扇区字节数 11 SecPerClus 1 每簇扇区数 13 RsvdSecCnt 2 保留扇区数目 14 NumFATs 1 此卷中FAT表数 16 RootEntCnt 2 FAT32为0 17 TotSec16 2 FAT32为0 19 Media 1 存储介质 21 FATSz16 2 FAT32为0 22 SecPerTrk 2 磁道扇区数 24 NumHeads 2 磁头数 26 HiddSec 4 FAT区前隐扇区数 28 TotSec32 4 该卷总扇区数 32 FATSz32 4 FAT表扇区数 36 ExtFlags 2 FAT32特有 40 FSVer 2 FAT32特有 42 RootClus 4 根目录簇号 44 FSInfo 2 文件系统信息 48 BkBootSec 2 通常为6 50 Reserved 12 扩展用 52 DrvNum 1 - 64 Reserved1 1 - 65 BootSig 1 - 66 VolID 4 - 67 FilSysType 11 - 71 FilSysType1 8 - 82       DBR的实现代码: struct FAT32_DBR { unsigned char BS_jmpBoot[3]; //跳转指令 offset: 0 unsigned char BS_OEMName[8]; // offset: 3 unsigned char BPB_BytesPerSec[2];//每扇区字节数 offset:11 unsigned char BPB_SecPerClus[1]; //每簇扇区数 offset:13 unsigned char BPB_RsvdSecCnt[2]; //保留扇区数目 offset:14 unsigned char BPB_NumFATs[1]; //此卷中FAT表数 offset:16 unsigned char BPB_RootEntCnt[2]; //FAT32为0 offset:17 unsigned char BPB_TotSec16[2]; //FAT32为0 offset:19 unsigned

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档