ARM硬盘接口应用知识

在“计算机接口技术”教学中, 有关硬磁盘接口适配器这一章比较难学, 主要涉及到i?o 控制层对扇区读写和使用逻辑映射层对数据进行管理问题,内容比较抽象, 教师和学生只能凭想象去教与学。本文介绍了一种新的实现方法。硬件上依据a ta 标准通过arm 微处理器与大容量的ide 硬盘相连, 软件采用fa t32 文件系统对数据进行存储管理。硬盘脱机接入pc 系统中, 通过w indow s 等支持fa t 文件格式的操作系统, 能够直接应用硬盘中的数据。
1 arm 系统及ide 接口综述
arm (a dvanced rs ic m ach ines) 是一种低功耗、高性能的32 位处理器。本文介绍的系统是基于sam sung 公司s3c44b0x 构建而成。该cpu 的内核是arm 7tdm i, 采用了三级流水线和von n eumann 结构, 并且具有uart、iic、iis、s io 接口,adc、pwm 通道, 实时时钟、lcd 控制器等。
硬盘接口结构主要分i/o 控制层和逻辑映射层。其中i/o 控制层包括与arm 的物理接口, 实现对硬盘状态的查询、设置和对扇区的读写。它是依据a ta 标准连接的ide 接口。通过ide 接口选择可编程的p io 或使用dma 方法传输数据。本文将介绍p io 方式传送, 即对硬盘每一次访问都需要分别进行编程.
逻辑映射层实现对目录、文件与扇区数据逻辑映射, 以及数据的存储和修改。该部分应用微软公司fa t 标准, 为每个文件的磁盘块构造链接表, 通过链接表和它的索引实现对整个磁盘文件进行管理。
在微机应用中, 由于常涉及大批量数据的存储,在联网条件不备的情况下, 通过ide 接口连接大容量硬盘是一个有效方法。若按照an s i 的a ta 标准连接硬盘, 并通过fat32 文件系统进行数据管理,嵌入式系统读写过的硬盘, 还可以脱机移到w in2dow s 操作系统支持下的pc 机中, 实现与常规操作系统共享硬盘数据资源。本文介绍的方法可以推广到其它微处理器应用系统中。
2 硬件结构与i/o 控制层
a ta 标准对ide 硬盘接口作了详细描述。
图1 是按照a ta 规范结合p io 传输特点进行连接。由于没有使用dma 传输方式, 故dmarq 和dmack 两根悬空; / iocs16 用于选择使用dd0~dd15 进行16 位传输或使用dd0~dd7 进行8 位传输; /d ior 和/d iow 是对磁盘驱动寄存器进行读写操作的一对握手信号; /c s0 用来选定命令寄存器组, /c s1 选择控制寄存器组。这两根信号线结合da 0~da 2, 就可以对ide 多个寄存器进行访问,如数据寄存器、状态寄存器、命令寄存器等。
此外,a ta 标准对ide 命令也有严格定义, 如用来确认驱动器的0xec, 读缓冲区的0xe4。在p io模式中, 系统将ide 命令送到命令寄存器中, 读写相应的数据、状态寄存器, 实现对硬盘访问和控制。
对硬盘内部数据的操作需要了解它的物理存储方式。磁头、柱面和扇区是硬盘的基本结构, 而扇区是对硬盘读写的最小单位。硬盘内部的寻址方式有两种, 一种是物理寻址的chs 方式, 另一种是逻辑寻址的lba 方式。物理寻址chs 方式是通过柱面、磁头和扇区号来确定唯一的存储单位, 较为繁琐。而逻辑寻址方式是采用线性映射方法, 从物理结构到逻辑块编号的映射关系如下:
lba = (柱面编号×磁头数+ 磁头号) ×扇区数+ 扇区编号- 1
采用这种方法, 主机不用知道硬盘的物理结构, 就能直接对目标扇区进行寻址。
根据前面的阐述, 编制i/o 控制层的控制程序, 可对ide 控制寄器进行查询、设置和逻辑寻址,实现对指定扇区的读写。图2 是读一个扇区数据的流程图, 写扇区的方法和它类似, 区别只是在于传送指令和数据流动方向不同。此外, 在检测状态寄存器的时候, 最好加上超时判断, 防止程序陷入死循环。
3 逻辑映射层控制标准及实现
3.1 关于fat 标准
由于希望arm 系统对硬盘的读写操作能与主流操作系统共享, 该部分软件是根据与w indow s 相兼容的fa t 标准进行编制。用户也可以根据实际情况, 把该设计思路推广到如l inux 下的ex2 等其它工作平台。
fa t 标准对硬盘逻辑结构作了划分, 主要有分区表、bpb 表、fa t 表、数据区等几部分。在硬盘格式化和分区后, 会在0 柱面0 磁头1 扇区建立分区表, 此表记载了硬盘在各分区起始和结束所使用的磁头、柱面、扇区号。对于每个分区, 逻辑0 扇区存放了一个bpb 表, 该表储存了整个文件系统关键的数据, 包括文件系统的类型, 每个扇区的字节数(byte2persec ) , 每簇的扇区数(secperclu s) , 保留扇区数(r svdseccn t) , fa t 表数目(n umfa t s) , 根目录起始簇(roo tclu s) , 以及盘符和卷标等。其中簇(clu ster) 是文件系统在效率原则下管理的最小单位, fa t 32 标准意味着每簇有8 扇区, 簇内存贮单元采用32 位二进制数。文件系统类型还可以使用fa t 12 和fa t 16 标准, 表示簇内存贮单元分别采用12 位和16 位二进制数。在格式化硬盘时, 依据硬盘簇的数目判断选用哪种文件系统标准, 若簇数小于4085 则是fa t 12, 若在4085 和65525 之间则是fa t 16, 大于65525 则是fa t 32。由于本文所述的系统使用大容量硬盘, 因而采用fa t 32 文件系统。
在原理上, fa t 32 和其它两种方式是相同的, 完全可以移植过去。保留扇区是为bpb 表以后扩展保留一段区间, 暂且未被使用。
3.2 关于fat 表
fa t 表实质上是一系列存放着数据的链接表。
对于fa t 32 来说, 每四个字节(32b it) 对应硬盘数据区上的一个簇, 它们的数值是当前文件下一个簇的指针。如果这四个字节大于0x0ffffff8, 则表示当前文件在该簇内结束。若是0x00 则表示该簇是空的, 没有存放数据, 而0xffffff7 表示这个簇已经损坏。采用这种方法, 在存取数据时只需沿着链接表寻址就行了, 不需按顺序存取, 也不会因删除文件造成磁盘碎片。fa t 表的大小是根据磁盘容量也就是簇的数量来决定, 不同磁盘fa t 表的大小不同。
出于可靠性考虑, fa t 表一般都要冗余它的备份,冗余数量由bpb 表的n umfa t s 来定, 通常为2。
这样在突然断电等意外情况下, 可以根据备份的fa t 表进行修复。
3.3 硬盘数据区
fa t 表之后是硬盘的数据区, 其开始是根目录(roo t d irecto ry) , 此处存放了fa t 表根目录下的文件与子目录。存放格式有两种, 一种是长文件名, 一种是短文件名(标准的813 格式) , 通过数据中的特征位能分辨出来。长文件名和短文件名格式见参考文献, 它包含了文件的名字、属性、大小、起始簇数、建立及写操作的时间。实际上子目录的信息也被当作一个文件存储在根目录区, 只是它的属性为目录, 大小为0。同样, 子目录起始簇内存放了该目录下文件和子目录的信息表。依据这些信息, 可以在fa t 表找到该文件的链接表, 执行对整个文件相应操作。
3.4 资源共享的实现
对于不同的文字平台, 为能够实现资源共享, 采用un icode 来存储文件名。在长文件名中, 每个字符都是用16b it s 的un icode 来表示的, 而在短文件名中, 采用用户自定义的类型, 例如在简体中文w indow s 下, 采用a sc? 码和gb2312 码。通过u 2n icode 与其它码表对比查找程序, 用户可以在自己期望的文字平台上进行操作。
图3 是读取一个文件的流程, 写文件的方法和读文件相类似, 只要注意在目录里建立文件时, 先把数据写入空白簇后再把fa t 表更新, 其中包括更新备份部分。
4 结束语
系统目前正被使用到远程电力网数据检测系统之中, 为嵌入式系统海量数据存储提供一种新的设计思路。

怎样控制直流电动机双向运行
半导体核心技术外泄,多名三星高管被查
AR工业应用|AR如何实地应用在工业装配及维修中来降本增效?|effiarAR工业云平台
一文解读ADAS的市场现状及技术趋势
3大超好用视频类型,助你抖音快速上热门
ARM硬盘接口应用知识
集成电路封装测试等7个产业项目落地遂宁经开区
CMOS 相机成为嵌入式设备的重要组成部分分析
Modbus RTU通信报文解析
LiFi技术的优势特点、应用和市场发展趋势分析
一张图片告诉你iPhone 4S到底值多少钱
保形涂层的常见类型有哪些
小米note2什么时候上市 三个版本亮黑版下月抢先发布
MSP430常用的3V-5V转换电路选用指南
国外提出垂直农场的概念 矿井就是现成的温室
希捷科技发布首款18TB希捷酷鹰人工智能硬盘
WCDMA R6无线网络的流量特性和流量模型
一种数控DC电流源的设计与实现
江西鑫金晖智能科技受邀参加中国(吉安)电子信息融通对接活动
iphone8什么时候上市?iphone真机照曝光,或许这才是最新的iphone8