历史上的今天
返回首页

历史上的今天

今天是:2025年02月17日(星期一)

正在发生

2018年02月17日 | 嵌入式系统海量数据存储设计新思路

2018-02-17 来源:eefocus

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

  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 多个寄存器进行访问,如数据寄存器、状态寄存器、命令寄存器等。

ARM 系统与IDE 接口

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

 

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

 

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

 

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

 

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

 

er

   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 表更新, 其中包括更新备份部分。

 

俄re

  4 结束语

  笔者通过U SB 接口使用S3C44B0X 中ARM 7TDM I 微处理器对20GB 以上的硬盘进行接口连接及控制, 用FA T 32 文件系统对硬盘进行数据管理, 多个大容量硬盘除了在ARM 系统能正常工作外, 在W IN 98/2000/XP 操作系统支持下的PC机上, 均能实现数据资源共享。基于ARM 系统大容量硬盘管理与控制系统, 目前正被使用到远程电力网数据检测系统之中, 为嵌入式系统海量数据存储提供一种新的设计思路。


推荐阅读

史海拾趣

Datatronic公司的发展小趣事

Datatronic公司自创立之初,就致力于电子技术的创新。在早期,公司开发了一款具有革命性的数据处理器,该处理器以其高效的运算能力和稳定性迅速在市场上获得了认可。通过不断的技术迭代和优化,Datatronic公司逐渐在数据处理领域树立了技术领先的地位,吸引了大量客户。

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

随着技术的不断进步和市场的日益成熟,E-T-A公司的产品线也逐渐扩展。公司不仅继续深耕断路器领域,还推出了包括保护控制器、流量和液位传感器等一系列新产品。同时,公司也开始积极拓展全球市场,通过设立分支机构和办事处,为全球客户提供更便捷的服务和支持。

DSP Group Inc公司的发展小趣事

随着技术的不断进步和市场需求的增长,DSP Group开始将业务扩展到半导体领域。公司推出了一系列高性能、低功耗的DSP芯片,广泛应用于移动通信、智能家居、汽车电子等领域。这一举措不仅进一步巩固了DSP Group在DSP领域的领先地位,还为公司带来了可观的收益和市场份额。

DATEL Inc公司的发展小趣事

随着技术的不断进步,DATEL Inc.的数据采集产品逐渐在军事领域找到了用武之地。公司接到一项为军方开发高精度数据采集系统的订单。经过深入研究和反复测试,DATEL Inc.成功交付了一套满足军方严苛要求的数据采集系统,为军方提供了准确、可靠的数据支持。这一突破不仅为DATEL Inc.赢得了军方的高度认可,也进一步扩大了公司在军事领域的影响力。

爱浦电子(AIPULNION)公司的发展小趣事

为了更好地服务客户,爱浦电子不断完善服务体系,提升服务水平。公司建立了全国性的服务网点,覆盖30多个城市,能够为客户提供及时、专业的技术支持和售后服务。此外,爱浦电子还根据客户需求,提供个性化定制服务,满足不同行业对模块电源的多样化需求。这些举措赢得了客户的广泛赞誉和信任,进一步巩固了公司在市场上的地位。

Analogix Semiconductor公司的发展小趣事

为了更好地服务客户,爱浦电子不断完善服务体系,提升服务水平。公司建立了全国性的服务网点,覆盖30多个城市,能够为客户提供及时、专业的技术支持和售后服务。此外,爱浦电子还根据客户需求,提供个性化定制服务,满足不同行业对模块电源的多样化需求。这些举措赢得了客户的广泛赞誉和信任,进一步巩固了公司在市场上的地位。

问答坊 | AI 解惑

用MAX712芯片自制的充电器

一、线路图:   1、rsense电阻取1欧姆时。充电电流为250MA,0.5欧姆时,电流为520MA,2N6109用TIP42代替,SHUNT电阻为限流电阻,大约1K,其他参数如图。   转绢流后充电机充电电流是原来的1/8还是1/16取决于PGM3脚的接法:   Rsense电阻两 ...…

查看全部问答>

vb程序调试正常运行错误

本人刚学VB,在写一个串口数据采集大的小软件,刚开始就遇到了问题,以下代码,我在调试时都正常运行,能正确获得返回数据,可是生成exe文件后,程序却没反应,也没有错误信息出现!就是没有数据,求高手帮忙! Public gSend As Boolean  &nb ...…

查看全部问答>

ARM9的ADC怎么和外部电路连接

请问ARM9的ADC怎么和外部的放大电路连接?…

查看全部问答>

quartus功能仿真出现致命错误。 Fatal error: Module: quartus_sim.exe Exception: Access Violat

*** Fatal error: Module: quartus_sim.exe Exception: Access Violation Stack Trace: 01a314e6: SDB_DFF_INFO::set_last_clock_value() + 0x34 (tsm_sdb) 01a03144: EDS_ENGINE::propagate() + 0xb0 (TSM_EDS) 01a03321: EDS_ENGINE::propaga ...…

查看全部问答>

请问

刚涉足这个领域,要配硬件环境,不知道哪个开发语言好呢.…

查看全部问答>

FTF印象_4

名字很有吸引力的一个报告(Designint the \"impossible\" Tablet),但不知道什么原因而取消未能进行, 可以通过资料看看是介绍什么的。…

查看全部问答>

关于LED驱动电源的谐波测试必备

杭州远方PF9811,才两千多块钱; 2-50次谐波都能测出来; 按IEC61000-3-2,谐波要测到39次…

查看全部问答>

LM4871/CSC8002低电压3W功率放大器IC应用电路原理图说明

LM4871/CSC8002 是一个BTL 桥连接的音频功率放大器.它能够在5V 电源电压下给一个3Ω 负载提供THD 小于10%、平均值为3W 输出功率。在关闭模式下电流的典型值为0.6uA. LM4871/CSC8002 是为提供大功率,高保真音频输出而专门设计的.它仅仅需要少量 ...…

查看全部问答>

TPM驱动可以在ucosii下吗?

最近在研究将TPM(安全模块)应用到ARM7上,要在ucosii里添加TPM的驱动,但是现在都是linux下的驱动。有没有大侠可以指点下,可以在ucosii中加TPM的驱动吗?…

查看全部问答>