论文部分内容阅读
本人实习所在的公司是一家专注于移动通信和多媒体终端的Soc设计的高科技外商独资企业。公司掌握多项有关移动通信和多媒体方面的核心技术,有多名在硅谷十年以上资深的IC设计专家提供芯片设计方案;积累了从算法仿真、系统设计、协议、软件平台及生产测试工具的开发,直至客户化终端的多方面成熟的行业和专业经验,为广大生产厂家提供了多种解决方案,赢得了较高的声誉。公司产品主要涉及GSM/GPRS终端手机,CD/MP3/WMA播放器。同时,公司的产品线还覆盖了WCDMA/TD-SCDMA手机以及多媒体手机等。本课题来源于公司实际开发的一个项目:CSW Platform,这个项目是开发一个GSM/GPRS通讯软件平台,其主要应用于移动电话及AT模块。本人所在的开发小组在项目中负责的是文件系统模块及对于Flash存储的抽象化管理。随着手机上的Flash存储器容量的扩大和要处理的对象(音频,视频,图片,铃声等)的增加,实现嵌入式文件系统是一种必然的趋势。文件系统内部又划分为上层的VFS(Virtual File System)及下层的FAT。该文件系统实现了支持Microsoft的FAT12/16/32文件系统,并可挂载多个不同类型的文件系统及存储设备。Flash存储器具有不同于磁盘的硬件特性,而我们设计的Flash储存管理系统则借鉴了虚拟内存管理及Java的垃圾回收机制,通过对各种不同类型的Flash存储器进行抽象和封装,从而让文件系统(或者其他应用)能够像访问硬盘那样访问Flash存储器,并保证了数据的安全及完整性。CSW Platform的最初设计是以Flash为存储介质的Application(SMS,Reg,FS等)都直接操作Flash,这意味着这些Application都需要考虑flash的硬件特性。这带来了两个方面的问题:工作重复(每个Application都要完成类似的工作),从而导致维护成本相对较高;实现难度加大,稳定性降低(实现和Flash的硬件特性相关)。为解决这两个问题,我们提出虚拟磁盘系统(VDS,Virtual Disk System)方案。VDS是在Application(SMS,Reg,FS等)和Flash存储介质之间引入的一个抽象层,这层界面向上层用户屏蔽Flash存储器的物理特性,当上层Application传来写数据命令时,VDS为Application提供了称为Virtual Disk的存储介质访问接口。换言之,对Application来说,Vritual Disk和真正的Hard Disk没有区别(或者说无法区分):(1)整个Virtual Disk被划分为多个block,Application根据block的index来访问block;多个连续的block构成一个分区(partition);(2)Application访问block的最小单位是block;(3)在同一个block上可以重复写。VDS方案将对存储介质的管理和对Application本身的对象的管理分割开来,屏蔽了Flash设备的硬件特性,提高了整个CSW Platform的模块性;易于移植基于Hard Disk的Application到我们的系统上。同时这样还能对Flash存储空间充分的利用,能保证Flash区块的平均磨损,延长Flash设备的使用寿命。本文将详细阐述关于如何管理Flash存储的虚拟磁盘系统(VDS,Virtual DiskSystem)的设计与实现。在这个虚拟磁盘系统中,我们为上层用户提供了一个虚拟磁盘,上层用户可以不考虑Flash的特性,而是在我们提供的虚拟磁盘上运行其操作及数据的存储,从而大大提高了CSW Plattform的兼容性。所有的VDS的应用接口我们是采用C语言进行编码,并且在论文中将详细描述接口的流程,以及关于垃圾回收机制、断电保护机制的实现。