基于cc-ccs的flash文件系统设计论文

基于cc-ccs的flash文件系统设计论文

ID:10366804

大小:53.00 KB

页数:3页

时间:2018-07-06

基于cc-ccs的flash文件系统设计论文_第1页
基于cc-ccs的flash文件系统设计论文_第2页
基于cc-ccs的flash文件系统设计论文_第3页
资源描述:

《基于cc-ccs的flash文件系统设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于CC/CCS的Flash文件系统设计论文摘要:在深入分析TI为开发DSP提供的RTS.LIB(RTS.SRC为源泉代码)的基础上,介绍对自定义的文件和设备的操作方法;设计一个简易的Flash文件系统,极大地方便了应用编程。关键词:DSPCC/CCSFlash文件系统1概述在开发DSP的应用程序过程中,经常需要处理一些数据文件。这些数据文件可以是实际采集到的数据集合,也可以是用模拟仿真软件产生的数据集合,一般是以文件的形式存放在主机磁盘上的。一般的开发环境(如TI的CCS和CC)都提供了ANSIC标准

2、操作文件格式,如打开一个文件fopen("盘符:/路径/文件名",“打开模式”)。嵌入式系统一般都外挂Flash。我们希望能够和读写主机磁盘文件一样操作Flash读写时序等问题.freelsg()函数发送数据和参数到主机。Readmsg()函数从主机读取数据到目标机。Codeposer再与主机进行交互,利用主机文件系统的支持,屏蔽了具体的物理地址读写问题。在调试阶段,当要在主机上建立文件、读取文件和存储数据时,只需用标准的ANSIC函数操作就可以,从而极大方便了编程调试。3Flash文件系统的实现嵌入式

3、文件系统一般有集中管理文件系统,存储空间的使用信息集中存在存储器的某个地方,如DOS的FAT,Unix的inode表。线性文件系统,又称为连续文件系统,每个文件相关的所有信息都连续存放在存储器中。与集中式文件系统相比,实现更简单,读写更快,特别是将文件的关键系统分布存放。日志文件系统顺序写入文件系统的修改,如同日志记录一样,可加速文件写入和崩溃修复。采用Log唯一结构,Log包含索引信息、名称和数据。嵌入式系统不可能带硬盘,一般都是基于Flash存储器的。3.1Flash特点及其相应处理Flash的读操

4、作与普通RAM时序一样,但是写和擦除操作则具有自身的特点。同一地址不能同时写入两次,必须进行费时的擦除操作。执行擦除的方式有三种:一是片擦除,即一次性全部擦除所有内容(这个相当于格式化功能,在第一次使用时可以执行这种操作);二是块擦除;三是扇区擦除。以SST39VF400A为例,块Block的大小是32KB,扇区的大小是2KB,块擦除一次擦除一个块内容;扇区类似。如果一个文件内容被改动,且改动的内容不足一个扇区的话,则更新文件时必须重写这个扇区的所有内容;在重写前必须擦除该扇区的所有内容。因此基于Fla

5、sh的文件系统不能完全套用已有的文件系统,但可以在其基础上进行改动。Flash能够擦除的范围越小,对文件的改动就越小,所执行的I/O操作就越小,从而减少I/O时间,提供文件系统的实时性能。我们使用的SST39VF400A的扇区大小是2KB,也就是2048B(1K=1024)。用常数定义,#defineFileUnit2048。3.2Flash文件系统的层次性与ANSIC标准相对应,我们将Flash文件系统分为3个层次。第一层次,API层。API层是文件系统与用户应用程序之间的接口,包含一个与文件函数相关

6、的函数库,如FS_FOpen、FS_Fe8;//文件名,在第一簇有效charFileExName3;//文件扩展名,在第一簇有效unsignedintSizeOfFile;//文件的字节数,在第一簇有效unsignedintNextCluster;//下一簇的簇号。当为0xffffffff时,说明这是当前文件的最后一簇}FlashFAT;文件句柄结构体:typedefstruct{unsignedintBufferCLUSTER_BLOCK_SIZE;//文件缓冲区unsignedintfilebloc

7、k;//文件当前簇的位置unsignedintfilemode;//打开支持的模式unsignedintfilebufnum;//文件缓冲区中已被/写的字节数unsignedintfileCurpos;//文件读写的当前位置unsignedintfilesize;//文件的大小}FlashFILE;3.4DeviceLevel驱动函数SST39VF400A标准设备级驱动函数如下:voidProgram_One_设备加入设备表中(最开始假设Flash中没有任何文件),读入Flash文件表。下面简述系统工作

8、流程。(1)加入FlashROM设备add_device("FlashROM",_MSA,flash_open,flash_close,flash_read,flash_e);其中flash_open、flash_close、flash_read、flsh_e是最底层的flash驱动函数名称。针对不同的Flash,需要不同的驱动函数。intflash_open(char*path,unsignedflags,.freel:/路径/文件名",

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。