随着微控制器性能的不断提高,嵌入式应用越来越广泛。但是目前市场上的大型商用嵌入式实时系统,价格昂贵,而且都针对特定的硬件平台。对于中小型系统开发,购买商用实时系统并不划算。
目前我们正着手将嵌入式系统软件应用于汽车卫星导航仪系统的一步开发。传统的嵌入式应用并不包括文件系统,而我们要实现的文件系统需要在车辆导航系统中实现地图数据文件的读写。因此它既要支持与MS-DOS兼容的文件系统也要支持其它类型的文件系统。 另一方面,从数码相机到MP3播放机,从掌上电脑到数码摄像机,CF(CompactFlash)卡由于具有体积小、兼容性强、价格相对低廉等诸多优点,在数码设备上的应用越来越广泛。但若想在CF卡与PC之间传递数据,通常不得不借助于专门的读卡器,这给PC的用户带来了不小的麻烦。 CompactFlash卡全称为“标准闪存卡”,简称“CF卡”。CF卡的应用空间比较广,最常见的是在数码照相机中用于照片的存储。由于CF卡内部采用模拟硬盘控制器的设计,使得CF卡可以比较容易地通过IDE接口实现与电脑的连接,一定程度上可以起到移动存储的作用。
一般的嵌入式系统不会提供读写CF卡的接口,所以需要在文件系统中专门设计一个驱动程序。
1 基本原理
图1所示的CF卡中,主机系统的控制器接口允许数据从Flash介质读写。CF卡的存取方式有三种:Memory方式、I/O方式以及True IDE方式。我们选择的是True IDE方式。需要注意的是,当主机电源一直接通时,拔插CF卡将会使其从原来的True IDE方式重新配置成PC Card ATA方式。所以要让CF卡一直工作在True IDE,需要在电源加电启动时将OE输入信号接地。此方式也支持8位存取,但我们选择了16位存取。一次最多存取的扇区数可由命令码Ech中的第47参数字决定。
?
CF卡跟硬盘的结构相同,如图2所示。在引导区中装有用于启动系统的代码,以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目录,然后是所有其它的东西。引导扇区在其末尾处包含有分区表。此表包含了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可包含不同的文件系统。紧随引导区之后的是FAT(文件分配表),用来记录设备中所有的磁盘空间的信息(此表与UNIX中的I-node表和空闲表具有相同的功能)。
设计软件时,同时考虑了通用性及可扩展性,目的在于使该文件系统无需分别修改便能够对CF卡、IDE硬盘、RAM Disk、电子盘、SD等不同的存储介质进行操作;读出这些存储介质中的数据,并且可以将数据输送到不同存储设备上。
为了达到这些目的,我们针对不同CPU的不同处理方法,对硬件操作程序进行分离,将设备有关的底层程序变成与设备无关的上层操作。这样,当系统新增功能之后,不必更改每个子程序,只需要在某些接口文件的数据结构中添加或者更改数据项即可;又考虑到用户对上层操作的透明性,我们采用面向对象的方法,上层结构中存取操作的driver结构(含read、write数据项)是虚拟的,在底层才将它具体化为CF卡的读写扇区命令(操作码为:20h、30h)。
软件程序的主要流程如图3所示。
2 系统设计实现
根据上述原理,可完成软件设计,其基本框架如图4所示,分为六个主要部分。
其中,CF卡驱动程序设计的关键是CF卡的存取操作函数所采用的命令码有些不同。另外,我们使用驱动程序对象来代表CF卡设备驱动程序。该驱动程序对象对于用户是部分不透明的,数据项包括读写函数的指针,这些函数由文件系统程序输出(包括两部分函数,用户可见API函数调用和用户不见驱动存取函数)。此对象的数据结构声明如下:
typedef struct CF_XFILE_DRIVER{
BYTE driver_name; /*介质标示;CF卡、IDE硬盘、Flash卡、RAMDISK等,删除驱动的话,需要重新记录DRIVER号*/
…… /*IRP处理函数*/
}CF_XFILE_DRIVER;
如果有多个CF卡,需要用另外一个特定的数据结构Next_Driver来把它们水平连接在一起。然后,用链表来管理这些数据结构,管理方式类似于WDM(Windows Driver Model)。
3 测试分析
经过调试运行,该文件系统性能良好。与我们之前已经移植过的Nucleus、μC/OS- II、UNIX的操作系统的文件系统相比,本文介绍的文件系统可移植性更强;除了文中着重介绍的CF卡,经过对底层驱动的简单修改就可以应用于其它存储介质如RAMdisk、IDE硬盘、Flash等(其中IDE硬盘和Flash也已经调试成功)。另外,本文介绍的文件系统对硬件平台的配置要求降低,并且对于文件操作的运行速度并未减慢。
关键字:存取 函数 嵌入式
引用地址:
ARM7系统中实现CF卡存储的文件系统设计
推荐阅读最新更新时间:2024-05-13 18:12
STM32F103(库函数)——按键检测
在我的STM32F103ZET6核心板上有四个按键,其中一个是复位按键,其余三个原理图如下图所示。 其中KEY0和KEY1分别接在PE3和PE4上,然后低有效。WK_UP接在PA0上,高电平有效。而且根据原理图,在外部电路中是没有上下拉电阻的,所以我们需要在STM32中设置上下拉电阻。 一样,因为设置按键也是配置IO口工作方式。 main.c /******************************************************************************* * 文件名:main.c * 描 述: 1.按下KEY0,LED0状态切换 2.按下KEY1,L
[单片机]
风河发布全新IP智能网关平台
全球嵌入式及移动应用软件领导厂商风河(Wind River)近日发布可用于开发智能网关的全新软件网关器平台Wind River Platform for Gateways。这个平台初期将锁定家用网关市场。Wind River Platform for Gateways是风河旗下一系列智能网关解决方案的首批产品。风河也将通过这个系列解决方案满足日益增长的物联网需求。目前住友电工网络株式会社已率先采用Wind River Platform for Gateways开发其最新系列的服务网关产品。住友电工网络是在日本居于市场领导地位的宽带接入设备供货商,客户包括日本国内许多主要宽带服务运营商。
Wind River Platform
[嵌入式]
基于嵌入式Linux系统的键盘驱动实现
1前 言 Linux由于其具有内核强大且稳定,易于扩展和裁减,丰富的硬件支持等诸多优点,在嵌入式系统中得到了广泛的应用。很多嵌入式Linux系统,特别是一些具有与用户强交互的嵌入式系统,往往需要配备一个特殊键盘,此时开发者需要根据实际情况,为自己的特殊键盘编写驱动程序。 2Linux键盘驱动简介 iframe id="iframeu2163852_0" src="http://pos.baidu.com/ncom?conwid=250&conhei=250&rdid=2163852&dc=3&di=u2163852&dri=0&dis=0&dai=4&ps=848x824&enu=encoding&dcb=__
[单片机]
基于嵌入式硬件平台的划片机视觉系统设计
1 引言 半导体后封装工艺中关键设备划片机是通过主轴高速旋转、y向精密分度定位、x向导轨高速运动、 向多角度旋转实现对多个芯片图形划分加工的设备。可用于硅集成电路、SAW器件、Ga/As、铌酸锂、锑化铋、厚膜电路、磷化铟等特种材料和脆硬材料晶片的划切分片。 a鉴于在精密划片机检测系统的检测速度和精度上的要求,需要分辨率较高的CCD摄像机对划切图像进行快速提取。PC-Based产品的硬件技术已经实现,但PC结构中仍存在诸多因素影响划片机的实际使用,如硬盘可能出现的机械故障、风扇带来的不稳定因素、抗震性能指标,抗干扰指标等等,这些因素依然是制约IPC(PC工控机)应用于半导体设备的问题之一。通过引入嵌入式硬件方案解决了这个难题,同时也
[单片机]
51单片机串口通信使用类似printf函数的两种办法
span style= font-family: Arial; ; line-height: 26px; background-color: rgb(255, 255, 255); /span pre name= code class= cpp p style= margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; font-family: Arial; ; line-height: 26px; /p p style= margin-top: 0px; margin-bottom: 0px; padding-top: 0px;
[单片机]
基于嵌入式Linux的PMP系统设计与实现
PMP系统简介 便携式多媒体播放器(PMP),也就是通常人们所说的MP4,已成为继MP3以后消费类产品的一个新热点。PMP的主要优点是:携带方便,能够直接播放高品质音/视频文件;也可以浏览图片,以及作为移动硬盘、数字银行使用;此外,还有FM、游戏等功能。PMP播放器不仅需要对机体大小有所限制,更重要的是需要一种压缩效率更高、画面质量更高的视频压缩技术,以及相关编解码芯片。本文介绍了此PMP系统的软、硬件设计,重点在软件设计,此PMP系统方案现在已经进入量产阶段。 PMP系统的硬件设计 现阶段PMP内部核心架构,大多都是采用CPU搭配DSP的方式。其中,DSP负责编/解码工作;CPU则是针对文件管理、存取,以及使用
[嵌入式]
嵌入式PLC芯片组实现kp3-05m06r型运动控制器
1 引言
本文作者利用黄石市科威自控有限公司的嵌入式plc芯片组,设计出了kp3-05m06r型运动控制器。该控制器集plc、can总线、rs485/232等功能于一体,与步进驱动器或伺服驱动器配套使用,具有对步进电机或伺服电机进行点动、定位、脉冲正反插补、脉冲分频等功能。多个运动控制器通过can通信接口互连,其中一台运动控制器作为主站,其余运动控制器均作从站。该系统可接人机界面,实现工艺集中显示、控制和管理,如配备web服务器还可实现控制系统的远程监控和诊断。
2 运动控制器的功能
自2005年至今,kp3-05m06r型运动控制器在纺织、印染行业现场应用了数千台。实践证明该款控制器不但性能优越,而且使用和维护非常简
[嵌入式]