基于ARM系统硬盘接口的使用和文件管理-技术方案_第1页
基于ARM系统硬盘接口的使用和文件管理-技术方案_第2页
基于ARM系统硬盘接口的使用和文件管理-技术方案_第3页
基于ARM系统硬盘接口的使用和文件管理-技术方案_第4页
基于ARM系统硬盘接口的使用和文件管理-技术方案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于ARM系统硬盘接口的使用和文件管理-技术方案摘要:嵌入式计算机系统中,常需要对大批量数据进行读写操作,本文介绍了一种新的实现方法。硬件上依据ATA标准通过ARM微处理器与大容量的IDE硬盘相连,软件采用FAT32文件系统对数据进行存储管理。硬盘脱机接入PC系统中,通过Windows等支持FAT文件格式的操作系统,能够直接应用硬盘中的数据。该方法尤其适合在远程联网不便使用的情况下,为微处理器在嵌入式系统大批量存储数据提供新的设计思路。

关键词:ARM;硬盘接口;文件管理

在“计算机接口技术”教学中,有关硬磁盘接口适配器这一章比较难学,主要涉及到I?O控制层对扇区读写和使用逻辑映射层对数据进行管理问题,内容比较抽象,教师和学生只能凭想象去教与学。笔者在科研中,通过对嵌入式微处理器与硬盘接口的开发应用,加深了对这些内容的理解,为拓展这部分教学内容的深度和广度奠定了基础,并采用理论与实际结合的方式去讲授有关的内容,受到了学生的欢迎。故撰此文与从事硬盘接口技术教学的老师们作一交流。

1ARM系统及IDE接口综述

ARM(AdvancedRSICMachines)是一种低功耗、高性能的32位处理器。本文介绍的系统是基于Samsung公司S3C44B0X构建而成。该CPU的内核是ARM7TDMI,采用了三级流水线和VonNeumann结构,并且具有UART、IIC、IIS、SIO接口,ADC、PWM通道,实时时钟、LCD控制器等。

硬盘接口结构主要分I/O控制层和逻辑映射层。其中I/O控制层包括与ARM的物理接口,实现对硬盘状态的查询、设置和对扇区的读写。它是依据ATA标准连接的IDE接口。通过IDE接口选择可编程的PIO或使用DMA方法传输数据。本文将介绍PIO方式传送,即对硬盘每访问都需要分别进行编程.

逻辑映射层实现对目录、文件与扇区数据逻辑映射,以及数据的存储和修改。该部分应用微软公司FAT标准,为每个文件的磁盘块构造链接表,通过链接表和它的索引实现对整个磁盘文件进行管理。

在微机应用中,由于常涉及大批量数据的存储,在联网条件不备的情况下,通过IDE接口连接大容量硬盘是一个有效方法。若按照ANSI的ATA标准连接硬盘,并通过Fat32文件系统进行数据管理,嵌入式系统读写过的硬盘,还可以脱机移到Win2dows操作系统支持下的PC机中,实现与常规操作系统共享硬盘数据资源。本文介绍的方法可以推广到其它微处理器应用系统中。

2硬件结构与I/O控制层

ATA标准对IDE硬盘接口作了详细描述。

图1是按照ATA规范结合PIO传输特点进行连接。由于没有使用DMA传输方式,故DMARQ和DMACK两根悬空;/IOCS16用于选择使用DD0~DD15进行16位传输或使用DD0~DD7进行8位传输;/DIOR和/DIOW是对磁盘驱动寄存器进行读写操作的一对握手信号;/CS0用来选定命令寄存器组,/CS1选择控制寄存器组。这两根信号线结合DA0~DA2,就可以对IDE多个寄存器进行访问,如数据寄存器、状态寄存器、命令寄存器等。

此外,ATA标准对IDE命令也有严格定义,如用来确认驱动器的0xEC,读缓冲区的0xE4。在PIO模式中,系统将IDE命令送到命令寄存器中,读写相应的数据、状态寄存器,实现对硬盘访问和控制。

对硬盘内部数据的操作需要了解它的物理存储方式。磁头、柱面和扇区是硬盘的基本结构,而扇区是对硬盘读写的单位。硬盘内部的寻址方式有两种,一种是物理寻址的CHS方式,另一种是逻辑寻址的LBA方式。物理寻址CHS方式是通过柱面、磁头和扇区号来确定的存储单位,较为繁琐。而逻辑寻址方式是采用线性映射方法,从物理结构到逻辑块编号的映射关系如下:

LBA=(柱面编号×磁头数+磁头号)×扇区数+扇区编号-1

采用这种方法,主机不用知道硬盘的物理结构,就能直接对目标扇区进行寻址。

根据前面的阐述,编制I/O控制层的控制程序,可对IDE控制寄器进行查询、设置和逻辑寻址,实现对指定扇区的读写。图2是读一个扇区数据的流程图,写扇区的方法和它类似,区别只是在于传送指令和数据流动方向不同。此外,在检测状态寄存器的时候,加上超时判断,防止程序陷入死循环。

3逻辑映射层控制标准及实现

3.1关于FAT标准

由于希望ARM系统对硬盘的读写操作能与主流操作系统共享,该部分软件是根据与Windows相兼容的FAT标准进行编制。用户也可以根据实际情况,把该设计思路推广到如Linux下的EX2等其它工作平台。

FAT标准对硬盘逻辑结构作了划分,主要有分区表、BPB表、FAT表、数据区等几部分。在硬盘格式化和分区后,会在0柱面0磁头1扇区建立分区表,此表记载了硬盘在各分区起始和结束所使用的磁头、柱面、扇区号。对于每个分区,逻辑0扇区存放了一个BPB表,该表储存了整个文件系统关键的数据,包括文件系统的类型,每个扇区的字节数(Byte2PerSec),每簇的扇区数(SecPerClus),保留扇区数(RsvdSecCnt),FAT表数目(NumFATs),根目录起始簇(RootClus),以及盘符和卷标等。其中簇(Cluster)是文件系统在效率原则下管理的单位,FAT32标准意味着每簇有8扇区,簇内存贮单元采用32位二进制数。文件系统类型还可以使用FAT12和FAT16标准,表示簇内存贮单元分别采用12位和16位二进制数。在格式化硬盘时,依据硬盘簇的数目判断选用哪种文件系统标准,若簇数小于4085则是FAT12,若在4085和65525之间则是FAT16,大于65525则是FAT32。由于本文所述的系统使用大容量硬盘,因而采用FAT32文件系统。

在原理上,FAT32和其它两种方式是相同的,完全可以移植过去。保留扇区是为BPB表以后扩展保留一段区间,暂且未被使用。

3.2关于FAT表

FAT表实质上是一系列存放着数据的链接表。

对于FAT32来说,每四个字节(32bit)对应硬盘数据区上的一个簇,它们的数值是当前文件下一个簇的指针。如果这四个字节大于0x0FFFFFF8,则表示当前文件在该簇内结束。若是0x00则表示该簇是空的,没有存放数据,而0xFFFFFF7表示这个簇已经损坏。采用这种方法,在存取数据时只需沿着链接表寻址就行了,不需按顺序存取,也不会因删除文件造成磁盘碎片。FAT表的大小是根据磁盘容量也就是簇的数量来决定,不同磁盘FAT表的大小不同。

出于可靠性考虑,FAT表一般都要冗余它的备份,冗余数量由BPB表的NumFATs来定,通常为2。

这样在突然断电等意外情况下,可以根据备份的FAT表进行修复。

3.3硬盘数据区

FAT表之后是硬盘的数据区,其开始是根目录(ROOTDirectory),此处存放了FAT表根目录下的文件与子目录。存放格式有两种,一种是长文件名,一种是短文件名(标准的813格式),通过数据中的特征位能分辨出来。长文件名和短文件名格式见参考文献,它包含了文件的名字、属性、大小、起始簇数、建立及写操作的时间。实际上子目录的信息也被当作一个文件存储在根目录区,只是它的属性为目录,大小为0。同样,子目录起始簇内存放了该目录下文件和子目录的信息表。依据这些信息,可以在FAT表找到该文件的链接表,执行对整个文件相应操作。

3.4资源共享的实现

对于不同的文字平台,为能够实现资源共享,采用UNICODE来存储文件名。在长文件名中,每个字符都是用16bits的UNICODE来表示的,而在短文件名中,采用用户自定义的类型,例如在简体中文Windows下,采用ASC?码和GB2312码。通过U2NICODE与其它码表对比查找程序,用户可以在自己期望的文字平台上进行操作。

图3是读取一个文件的流程,写文件的方法和读文件相类似,只要注意在目录里建立文件时,先把数据写入空白簇后再把FAT表更新,其中包括更新备份部分。

4结束语

笔者通过USB接口使用S3C44B0X中ARM7TDMI微处理器对20GB以上的硬盘进行接口连接及控制,用FAT32文件系统对硬盘进行数据管理,多个大容量硬盘除了在ARM系统能正常工作外,在WIN98/20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论