首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式Linux的DiskOnChip设备驱动开发

嵌入式Linux的DiskOnChip设备驱动开发

1 引 言
在以计算机技术、通讯技术相结合的信息时代的快速发展和互联网广泛应用的形势下,3C(Computer,Communication,Consumer)合一的趋势已经形成,其结果必然就是将计算机工业的中心从计算产品转移到嵌入式信息产品。
然 而由于嵌入式系统的应用要求及成本因素决定了嵌入式系统在系统资源,包括硬件资源和软件资源方面都是非常精简和高效的。因此在嵌入式系统中的存储设备一般 不会采用硬盘等大容量高功耗设备,而改用诸如CompactFlash,EPROM等存储介质。因此本文就M-systems公司开发的新一代闪存 FlashDiskOnChip 2000,介绍在基于嵌入式Linux系统上文件系统和块设备的支持及驱动。
2 硬件系统结构
电 子盘的内部存储介质Flash是近几年来发展最快的一种存储芯片,他具有E2PROM可擦写的特点,又同时具有EPROM廉价的特点,他是一种高性能、低 功耗、电可擦除的存储器件。根据其以上一些特点,电子盘已广泛应用于信息存储、机顶盒、网络计算以及嵌入式计算机等领域。
M- system公司推出的DiskOnChip 2000系列是新一代闪存磁盘(Flash Disk)。为标准32脚DIP封装,他与标准的E2PROM完全兼容。一般的闪存器(FlashMemory)只包含存储器部分,而控制器要另加。为了 对闪存磁盘进行管理,DiskOnChip中已装有MSystem公司的闪存文件系统(TrueFFS)软件。这使得他使用简单,工作中不需要任何其他特 殊复杂的算法。他的读/写与硬盘完全相同,因此他可以作为独立硬盘使用,并与其他磁盘兼容。可以直接引导计算机系统而不需要其他系统盘。他适用于3.3 V和5 V电源,功耗很小,对于那些空间受限,小型便携式装置,DiskOnChip将是最佳选择。DOC2000结构主要由系统接口单元 (SystemIterface)、系统引导模块(BootBlock)、闪存控制单元(FlashControl)以及和Flash存储介质等组成,其 结构如图1所示。
其 中系统接口单元为DOC2000提供了类似SRAM的接口,使之能够通过CPU的本地总线、ISA总线以及SRAM总线建立与操作系统的连接。DOC提供 片选信号(CE#)、读写信号(WE#)、使能信号(OE#)以及13位宽的地址线(A[0:12])和8位宽的数据总线(D[0:7])。系统接口在主 总线信号(读、写、地址和片选)的控制下产生相应的控制信号送入闪存磁盘,其内部的ROM提供一种IPL码,此码在计算机启动过程中将闪存文件系统软件装 入PC内存。他在PC的扩展BIOS中安排了8 kB以上的存储区域,其地址为0C000H~0EFFFH。计算机开机自检后,DiskOnChip作为PC的BIOS标准操作的一部分,BIOS搜寻 ROM扩展码,找到后BIOS执行闪存磁盘内的初始化码,此码将闪存文件系统软件装入内存。闪存磁盘也将被安装为系统的一个磁盘,然后将传输器控制回到 BIOS码。当操作系统要确认适合系统的磁盘时,闪存磁盘软件即模仿一个硬盘做出反应。
3 TrueFFS与Linux的文件系统
TrueFFS 是M-system公司开发出来的专用于电子盘设备的专利技术。TrueFFS是Tornadoll开发环境中的一个集成的快速闪存文件系统,通过 TrueFFS对DOC块设备的磁盘仿真功能,从而方便了嵌入式Linux系统对电子盘的读写、分区、格式化等一系列操作。通过对操作系统的I/O控制调 用。Linux可以通过VFS访问TureFFS的外部接口。
Linux 文件系统最优秀的地方是对多种文件系统的支持(这里的上层结构是指VFS系统和具体的文件系统,即除buffer管理系统以外的部分)。为了实现这种特 色,就必须有一个抽象的层次来统一描述各种文件系统,Linux中就用VFS来实现了这个抽象层;同时,各种具体的文件系统又必须有一个和VFS交互的手 段,如图2所示。
Linux 文件系统管理的最上层模块是文件系统。系统启动时,必须先装入“根”文件系统,然后根据/etc/fstab中的指定,逐个建立文件系统。此外,用户也可 以通过mount,umount操作,随时安装或卸载文件系统。Linux系统调用操作系统的GetDriveHandle()函数得到驱动器的句柄,他 的返回值是一个能够供I/O控制函数调用的TrueFFS驱动的描述符。然后再调用操作系统中文件系统的IOCongtrol()函数,通过VFS的支 持,使TrueFFS具有通用文件系统的特性。当某个进程发布了一个面向文件的系统调用时,核心将调用VFS中相应的函数,这个函数处理一些与物理结构无 关的操作,并且把他重定向为真实文件系统中相应的函数调用,而这些函数调用则用来处理那些与物理结构相关的操作。
继承事业,薪火相传
返回列表