微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于Blackfin处理器实现对硬盘FAT32文件系统的操作

基于Blackfin处理器实现对硬盘FAT32文件系统的操作

时间:07-29 来源:电子技术应用 点击:

Blackfin处理器是美国 Analog Devices公司推出的专为满足当今嵌入式音频、视频和通信应用的计算要求和功耗约束条件而设计的新型嵌入式处理器。当Blackfin用于音视频的处理时,大数据量媒体数据的存储和管理便成为一个关键问题。在处理大容量数据存储的方案中,使用最为普遍的便是IDE硬盘。而针对文件的管理,由于FAT32文件系统在大容量文件分区管理方面具有很高的性能,而且可以在大多数操作系统中被识别,因此具有很高的兼容性。所以IDE硬盘加上FAT32文件系统可以作为嵌入式系统大容量文件存储管理的理想方案。本文主要阐述此方案基于Blackfin533处理器的硬件和软件实现。硬件部分为基于ADSP-BF533 EZKIT Lite评估板设计的IDE接口扩展板;软件部分包括基于扩展板和VisualDSP++ IDDE开发的IDE接口驱动程序和FAT32文件系统操作函数。

1 IDE硬盘原理

1.1 IDE硬盘的寻址

硬盘的存储结构如图1所示。

它的基本存储单元叫作扇区(Sector),除此之外。硬盘还有两个重要的组成部分就是磁头(Head)和柱面(Cylinder),它们共同组成硬盘的寻址空间,其地址被称为物理地址。显然,物理地址寻址方式不够直观、现在的大多数硬盘都支持另外一种寻址方式,其地址被称为逻辑地址(LBA),它把扇区顺序编号,不必再考虑C、H、S等参数。LBA和C、H、S的换算关系如下:

=NH×NS×C+NS×H+S-1;
  C=(LBA div NS)div NH;
  H=(LBA div NS)mod NH;
  S=(LBA mod NS)+1

NH表示每个柱面的磁头数,NS表示每个磁道的扇区数,C表示柱面数[1]。

  1.2 硬盘的引导原理
  
  硬盘分区的引导原理如图2所示。

  硬盘的第一个扇区(0柱面,0磁头,1扇区)被称作主引导扇区——MBR(Master Boot Record)。在MBR中,主要内容就是引导代码和主分区表。主分区表只有四个分区表项,它们可以直接描述分区,也可以通过扩展分区表进行扩展[2]。
  这种引导组织形式是与文件系统完全无关的,在每一个分区内,使用者可以根据自己的需要安装任意的文件系统。但使用何种文件系统要在响应的分区表项内作记录。

2 FAT32文件系统概述[2][4]

  2.1 FAT文件系统

FAT(File Allocation Table)文件系统是微软在20世纪70年代末到80年代初发布的,由微软的MS-DOS操作系统支持。在发展的过程中,出现了FAT12、FAT16、FAT32三个版本,其中,FAT12文件系统由于具有一些致命的缺点,很早就被FAT16取代了,而FAT16和FAT32目前还在广泛使用。表1是三种文件系统的对比。

FAT文件系统的原理可以简单地描述为把存储空间分块映射到一个表中,从而实现对存储空间的灵活支配。存储空间中的每一个块被称作簇,存储空间的映射表被称作FAT表。三种FAT文件系统的一个明显区别就是FAT表中表示一个簇所用的位数不同,分别是12、16和32。文件的存储是不必连续的,但在FAT表中可用链表的形式把文件联系在一起,如图3所示。

由于FAT文件系统目前在大部分操作系统上都给予了支持,而且实现起来简单,所以是理想的嵌入式系统大容量存储文件管理方案。

  2.2 FAT32文件系统

由于FAT16文件系统在大容量分区管理方面的效率急剧下降,而FAT32文件系统却很好地解决了这个问题,所以在大分区管理方面,FAT32是理想的文件系统。


  FAT32文件系统在结构上延续了FAT文件系统的基本结构,如图4所示,主要由以下三部分组成:

(1) DBR(Dos Boot Record),包括跳转指令、厂商标志、os版本号,BPB(Bios Parameter Block)、扩展BPB、引导程序和结束符;

(2) FAT表,实际数据存储空间的映射表,FAT1和FAT2完全一致,后者作为前者的备份;

(3) 实际数据存储空间,相比FAT16,从簇2不再有专门的根目录空间,而是把根目录也当作一个特殊的文件来处理,起始簇是2。

  2.3 FAT32文件系统对文件的管理

除了根目录的所有文件(子目录也作为一种特殊的文件存在)都对应一组数据作为文件描述,被称为文件目录项。每个目录内的所有文件和子目录的文件目录项都存储在这个目录对应的存储空间内,每一个文件目录项有32个字节,主要包括文件名、文件属性、文件大小、文件存储位置以及一系列的时间描述等。 把文件路径、文件目录项、FAT表联系在一起就可以完全把握一个文件在硬盘的存储情况。图5所示是一个例子,通过下面的步骤定位文件的所有内容:

(1) 通过路径找到文件所在目录的簇(a)。
  (2) 在目录对应的空间(c)内比对文件名,找到文件对应的文件目录项(d)。
  (3) 通过文件目录项确定文件的起始簇和文件大小。
  (4) 根据FAT表内的簇链(b)确定文件的存储空间(e)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top