没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式系统/ARM技术中的嵌入式系统中闪存设备I/O软件的设计与实现
0 下载量 174 浏览量
2020-12-08
12:43:10
上传
评论
收藏 98KB PDF 举报
温馨提示
试读
2页
摘 要 闪存作为最常用的嵌入式存储设备,其管理和访问技术对整个系统的性能有着较大的影响。目前嵌入式系统中广泛采用的闪存管理软件在可移植性、灵活性方面都存在不足。因此本文在分析了这些管理软件现存问题的基础上提出了一种比较合理的闪存I/O软件分层结构,并通过对软件的模块化设计与实现证明了该分层结构在移植性、通用性方面的优势。 关键词 嵌入式系统 闪存 I/O软件 策略与机制分离 1、引言 随着嵌入式系统应用领域的不断扩大,系统复杂性也在不断提高。闪存作为广泛使用的嵌入式存储设备,其管理技术和访问方式经历了一个由开发人员直接控制到由操作系统的I/O软件间接控制的过程。然而目前
资源详情
资源评论
资源推荐
嵌入式系统嵌入式系统/ARM技术中的嵌入式系统中闪存设备技术中的嵌入式系统中闪存设备I/O软件的设软件的设
计与实现计与实现
摘 要 闪存作为最常用的嵌入式存储设备,其管理和访问技术对整个系统的性能有着较大的影响。目前嵌入式系
统中广泛采用的闪存管理软件在可移植性、灵活性方面都存在不足。因此本文在分析了这些管理软件现存问题
的基础上提出了一种比较合理的闪存I/O软件分层结构,并通过对软件的模块化设计与实现证明了该分层结构在
移植性、通用性方面的优势。 关键词 嵌入式系统 闪存 I/O软件 策略与机制分离 1、引言 随着嵌入式系统
应用领域的不断扩大,系统复杂性也在不断提高。闪存作为广泛使用的嵌入式存储设备,其管理技术和访问方
式经历了一个由开发人员直接控制到由操作系统的I/O软件间接控制的过程。然而目前
摘摘 要要 闪存作为最常用的嵌入式存储设备,其管理和访问技术对整个系统的性能有着较大的影响。目前嵌入式系统中广泛
采用的闪存管理软件在可移植性、灵活性方面都存在不足。因此本文在分析了这些管理软件现存问题的基础上提出了一种比较
合理的闪存I/O软件分层结构,并通过对软件的模块化设计与实现证明了该分层结构在移植性、通用性方面的优势。
关键词关键词 嵌入式系统 闪存 I/O软件 策略与机制分离
1、引言、引言
随着嵌入式系统应用领域的不断扩大,系统复杂性也在不断提高。闪存作为广泛使用的嵌入式存储设备,其管理技术和访
问方式经历了一个由开发人员直接控制到由操作系统的I/O软件间接控制的过程。然而目前现有的这些闪存管理方案都不能提
供一种方便、统一且移植性好的I/O软件接口,增加了嵌入式产品的研发周期。因此,本文旨在针对一般的嵌入式应用,设计
并实现一种更合理的闪存I/O软件。该软件遵循策略与机制分离的原则,采用分层的体系结构,能够更好得适应底层硬件的变
化,可大大提高代码的可移植性。
2、闪存设备管理技术的现状及存在的问题、闪存设备管理技术的现状及存在的问题
闪存设备不同于一般的非易失性存储设备,它有很多特殊的存取特性,其中最主要的是在执行写入操作之前必须先擦除目
标单元的内容[1]。因此,闪存设备的管理最基本也应该包含对读、写操作以及擦除操作的控制。
对于那些用于工控领域的嵌入式系统,由于它们没有配置操作系统,整个系统的软件部分仅由主控程序和一些辅助功能例
程构成,所以用户只能通过系统提供的闪存读写例程直接对闪存进行访问,同时擦除操作执行的时机也需要由用户自己控制。
这样一来,访问闪存的应用程序就必须了解闪存的物理特性,如尺寸、擦除块的地址、大小和操作时间等,从而增加了开发难
度,降低了代码的可移植性。此外,由于闪存的无结构性,应用程序还需要自己管理存储空间,并按照需要构造数据的存储格
式[2]。
而对于那些配置了操作系统的复杂嵌入式系统(例如嵌入式Linux系统),闪存设备的管理则主要是通过操作系统中的I/O软
件来实现。该I/O软件遵循Linux通用设备的管理方法[3],实现了字符访问与块访问的接口,为应用程序访问闪存提供了一个通
用接口。但问题是,该方案在设计软件结构时没有很好地遵循策略与机制分离的原则,从而使得软件结构的层次不够分明,模
块化程度不高。
另外,在嵌入式Linux系统中还有一种与使用闪存相关的技术,即Ramdisk[4]技术。准确地说,该技术不涉及闪存的管理问
题,而是一种通过将计算机的 RAM 用作设备来创建和挂装文件系统的机制。本文在此提及该技术的原因是它能够帮助只含闪
存和RAM的嵌入式系统使用文件系统(主要指ext2fs类型),并且该技术的存在大大降低了嵌入式系统对闪存的访问操作,从
而简化了系统对闪存的管理。但是,由于Ramdisk技术不能直接在闪存上使用文件系统,使得修改后的数据不能立刻保存到闪
存中,所以在系统异常时容易造成数据的丢失。
经过分析,我们发现上述三种方法在闪存管理方面各有优缺点并各有适用范围。但是随着JFFS这种闪存专用文件系统的出
现和不断完善以及嵌入式Linux操作系统应用的不断深入,越来越多的嵌入式系统开始采用第二种方式管理闪存设备。该方案
在一定程度上简化了应用程序对闪存的访问操作,但由于其不清晰的软件结构造成了软件移植性能差的缺点。
3、闪存设备、闪存设备I/O软件的分层结构软件的分层结构
为了解决上述第二种闪存管理软件存在的问题,我们在遵循策略与机制分离原则的基础上,设计出一种更合理的闪存I/O软
件体系结构。具体内容如下(图1):
我们设计的闪存I/O软件自下而上被划分为四个层次,分别为硬件驱动层、原始设备层、设备层以及设备节点。其中硬件驱
动层代码主要负责在系统启动时驱动闪存硬件。从抽象层次上看,它是通过使用底层的硬件机制,建立了若干基本的使用闪存
硬件的策略代码。具体过程由芯片探测模块和操作方法模块来实现的。其中芯片探测模块主要负责探测CFI接口闪存芯片的器
件参数信息[5],包括芯片大小、芯片编程电压、编程时间、擦除时间、擦除区域分布情况等,并利用这些信息创建出描述芯
片物理特性的数据结构。而操作方法模块则负责实现最基本的闪存读、写及擦除例程。该模块在芯片探测模块的基础上,利用
硬件的物理信息就能够实现特定闪存芯片的管理和访问方法。
接下来原始设备层代码就把闪存存储区从软件上划分为几个不同的区域,并用设备的概念对各分区进行软件上的封装,使
每个分区设备都拥有包含自身信息的数据结构及设备操作例程。这样设计的原因,一方面是为了模拟硬盘的物理分区,方便系
统对闪存的管理和使用;另一方面又为上层软件以字符方式和块方式访问闪存提供了基础。具体过程需要通过原始设备实现模
块、设备分区实现模块来实现,而闪存配置管理模块则为开发人员根据自身需要任意划分闪存分区提供了配置接口,提高了系
统的灵活性。需要说明的是这三个模块的实现具有一定的依赖关系,其中箭头的起始端模块要依赖于该箭头指向的模块。
接着闪存设备层代码在低层软件分区的基础上,用字符设备和块设备两种方式来使用闪存原始设备。具体说,该层主要实
现字符设备与块设备的通用接口例程,即文件操作的通用方法,如打开、关闭、定位、读、写等。
weixin_38643307
- 粉丝: 8
- 资源: 925
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0