嵌入式操作系统VxWorks中TFFS文件系统的构建.docx

上传人:b****8 文档编号:12607953 上传时间:2023-06-06 格式:DOCX 页数:7 大小:18.81KB
下载 相关 举报
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第1页
第1页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第2页
第2页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第3页
第3页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第4页
第4页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第5页
第5页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第6页
第6页 / 共7页
嵌入式操作系统VxWorks中TFFS文件系统的构建.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式操作系统VxWorks中TFFS文件系统的构建.docx

《嵌入式操作系统VxWorks中TFFS文件系统的构建.docx》由会员分享,可在线阅读,更多相关《嵌入式操作系统VxWorks中TFFS文件系统的构建.docx(7页珍藏版)》请在冰点文库上搜索。

嵌入式操作系统VxWorks中TFFS文件系统的构建.docx

嵌入式操作系统VxWorks中TFFS文件系统的构建

嵌入式操作系统VxWorks中TFFS文件系统的构建

  摘要:

目前的嵌入式系统多使用FLASH作为主存,因此,如何有效管理FLASH上的数据非常重要。

文章以MX29LV160BT芯片为例,讨论了在VxWorks操作系统下NorFlash上建立TFFS文件系统的一般步骤,从而为FLASH上的数据管理提供了理想的选择方式,同时也为开发者和用户升级程序提供了方便。

关键词:

VxWorksFlashMTDTFFS文件系统

嵌入式系统正随着Internet的发展而在各个领域得到广泛的应用,作为一个优秀的操作系统,VxWorks实现了比其他实时操作系统更好的有效性、商用性、可裁减性以及互操作性,广泛应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

如今越来越多的嵌入式操作系统中,通常都使用FLASH作为主存介质。

许多开发者和用户为了方便以后升级用户程序,通常在FLASH上建立TFFS文件系统,建立文件系统后,我们就可以象在windows操作系统下对硬盘操作一样,进行数据的拷贝、删除以及文件的建立等操作。

NOR和NAND是现在市场上两种主要的非易失闪存技术。

Intel于1988年首先开发出NORflash技术,彻底改变了原先有EPROM和EEPROM一统天下的局面。

NOR的特点是芯片内执行XIPexecuteInPlace,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。

NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,因此在嵌入式系统得到广泛的应用。

一、TFFS文件系统结构简介

Tornado的TrueFFS是和VxWorks兼容的一种M-SystemsFlite实现方式,版本为。

它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。

有了Tornado的TrueFFS,应用程序对flash存储设备的读写就好象它们对拥有MS-DOS文件系统的磁碟设备的操作一样。

如图1所示,TrueFFS由核心层和三个功能层,翻译层,MTD层,socket层组成。

核心层:

核心层主要起相互连接其他几层的功能。

同时它也可以进行碎片回收、定时器和其他系统资源的维护。

通常WindRiver公司将这部分内容以二进制文件提供。

翻译层主要实现TrueFFS和dosFs之间的高级交互功能。

它也包含了控制flash映射到块、wear-leveling、碎片回收和数据完整性所需的智能化处理功能。

目前有三种不同的翻译层模块可供选择。

选择哪一种层要看你所用的flash介质是采用NOR-based,还是NAND-based,或者SSFDC-based技术而定。

  Socket层则是提供TrueFFS和板卡硬件的接口服务。

其名字来源于用户可以插入flash卡的物理插槽。

用来向系统注册socket设备,检测设备拔插,硬件写保护等。

后面将详细讲解它的功能。

  MTD层功能主要是实现对具体的flash进行读、写、擦、ID识别等驱动,并设置与flash密切相关的一些参数。

TrueFFS已经包含了支持Intel,AMD以及samsung部分flash芯片的MTD层驱动。

新的芯片需要新的MTD支持,你可以使用一个标准的接口来加入这些驱动。

  以上四部分,我们通常要的工作就是后两层。

  当在VxWorks下配置TrueFFS时,你必须为每一层至少包含一个软件模块。

后面我们将详细讨论。

二、MX29LV160BT芯片上建立TrueFFS文件系统

1、配置相关文件

在此,我以NorFlashMX29LV160BT为例,开发工具为。

要在VxWorks映像中包含TrueFFS文件系统,首先必须在文件中定义INCLUDE_TFFS。

这使得VxWorks的初始化代码调用tffsDrv()来创建管理TrueFFS所需的结构和全局变量,并为所有挂接了的flash设备注册socket组件驱动。

在链接的时候,通过解析与tffsDrv()相关联的符号可以将TrueFFS所必需的软件模块链接到VxWorks映象中。

为了支持TrueFFS,每一个BSP目录下都必须包含一个文件。

它将TrueFFS所有的层链接到一起并和VxWorks绑定。

因此,我必须编辑这个文件并决定哪一种MTD和翻译层模块应该包含到TrueFFS中。

即:

#defineINCLUDE_MTD_MX29LV/*MX29LV160BTMTDdriver*/

#defineINCLUDE_TL_FTL/*FTLtranslationlayer*/

#defineFLASH_BASE_ADRS0x2a10000/*Flashmemorybaseaddress*/

#undefFLASH_SIZE

#defineFLASH_SIZE0x001f0000/*Flashmemorysize,2M(parameterblock)*/

其他无关的MTDdriver包含头都#undef掉,同时定义Flash在系统中的基地址和大小。

另外,还必须编辑中的sysPhysMemDesc[]数组,将Flash基地址和大小加入到MMU中,以供将来访问Flash,否则访问Flash会失败。

如果BSP目录下没有文件,那么我们可以从其他BSP目录下拷贝一个即可,然后做上述修改,其他的内容基本可以不用修改。

接下来需要修改文件,为了方便管理,通常我们将src/drv/tffs/目录下该文件拷贝到我们BSP目录下,然后再做出修改。

在MTDidentifyRoutinemtdTable[]表中加入如下语句:

  #ifdefINCLUDE_MTD_MX29LV

mx29lvMTDIdentify,

#endif/*INCLUDE_MTD_MX29LV*/

并在该文件开头声明。

#ifdefINCLUDE_MTD_MX29LV

FLStatusmx29lvMTDIdentify(FLFlashvol);

#endif/*INCLUDE_MTD_MX29LV*/

最后就是将我们的flash相关MTD驱动加入到makefile中。

即:

MACH_EXTRA=

为了方便我们调试MTD驱动,应该在重新编译VxWorks映象前将诸如格式化flash、创建TrueFFS块设备、绑定此块设备到dosFs所必要的功能包含到VxWorks映像中。

比如如下定义:

#defineINCLUDE_TFFS

#ifdefINCLUDE_TFFS

#defineINCLUDE_TFFS_DOSFS

#defineINCLUDE_TFFS_SHOW

#defineINCLUDE_DOSFS/*dosFsfilesystem*/

#defineINCLUDE_SHOW_ROUTINES/*showroutinesforsystemfacilities*/

#defineINCLUDE_TL_FTL

#defineINCLUDE_IO_SYSTEM

#defineINCLUDE_DISK_UTIL

#endif/*INCLUDE_DOSFS*/

2、MTD驱动简介

做了上述配置后,进入VxWorks操作系统后,我们在shell上利用tffsShow工具来显示flash的信息。

TffsShow函数最终会调用MTD驱动中的mx29lvMtdIdentiy()函数,在mx29lvMtdIdentiy()函数主要是通过读取MX29LV160BT芯片的设备和厂商ID来识别它,然后对FLFlash结构成员进行初始化,最主要的几个参数是:

type

Flash内存的JEDECID号。

erasableBlockSize

Flash内存的擦除块大小。

设置这个值时应考虑到interleaving。

因此,通常通过如下方法来设置它的大小。

=MX29LV_MTD_SECTOR_SIZE*;

对于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE为64K字节。

chipSize

使用来构建TrueFFS文件系统的flash实际大小。

noOfChips

使用来构建TrueFFS文件系统的flash实际片数。

interleaving

Flash内存交叉因子。

即扩展数据总线的设备数。

比如,一个32位数据总线上,我们可以使用4片8位或2片16位的设备。

map

指向flash内存映射函数。

该函数将flash映射到内存区。

read

指向flash内存的读函数。

在MTD驱动识别函数中,这个成员函数已经被初始化为缺省的读函数。

通常情况下,我们不需要再初始化它,否则还需要修改很多相关的函数。

write

指向flash内存的写函数。

这个成员必须初始化,这是我们要做的一个重要工作。

erase

指向flash内存的擦除函数。

这个成员必须初始化,这也是我们要做的一个重要工作。

针对FLFlash结构成员,我们所关心的两个函数就是写和擦除函数。

在mx29lvMtdIdentiy()函数中必须有如下定义:

=mx29lvWrite;

=mx29lvErase;

在mx29lvWrite()函数中主要是实现将数据写到flash中。

首先需要对扇区进行解锁,然后写入写命令,之后才能进行数据的写入。

最后需要判断数据是否写完。

为了确保操作成功,我们应该在写完每个数据后进行数据的比较,比较正确后方能进行下一个数据的操作。

在mx29lvErase()函数中主要是实现flash扇区的擦除。

如今的flash一般都是按照扇区进行擦除操作的。

在擦除操作之前也应该首先对扇区进行解锁,然后写擦除建立和扇区擦除命令。

擦除成功后,flash中的内容应该是0xffff。

所以为了确保成功,我们还是应该在擦除后进行比较,比较正确后方能进入下一个扇区的擦除操作,否则返回擦除错误标志。

所以,对于MTD驱动的调试,基本上就是调试写和擦除两个函数。

在调试过程中,我们可以在这两个函数相应位置加入打印语句来调试。

为了能调试这两个函数,我们通过在shell上输入命令tffsDevFormat来格式化flash,tffsDevFormat最终会调用mx29lvErase和mx29lvWrite函数,如果成功就会返回0,否则返回-1。

当然也可以调用tffsDevCreate函数来验证我们的写和擦除函数的正确性。

图2说明了tffsDevCreate调用过程。

在shell上利用tffsShow来验证mx29lvMtdIdentiy。

ètffsShow

0:

socket=RFA:

type=0x2249,unitSize=0x10000,mediaSize=0x1f0000

value=49=0x31="1"

说明已正确识别到MX29LV160BT设备,设备号为0x2249。

三、建立TFFS设备挂接设备名

MTD驱动调试成功后,我们就可以给flash设备挂接上dos设备名,如下操作:

格式化:

ètffsDevFormat

value=1

èusrTffsConfig0,0,”/tffs0”

value=0

然后通过devs来查看挂接的设备名。

èdevs

drvname

0/null

1/tyCo

  /0

1/tyCo/1

5host:

6/pty/

7/pty/

3/tffs0/

8/vio

value=25=0x19

看到/tffs0/说明挂接设备已经成功,接下来就可以利用dosFs文件系统相关命令来操作flash了。

如,ls、copy等。

2、从Flash中启动并下载VxWorks映像

要从flash中下载VxWorks映像,首先需要把VxWorks映像拷贝到flash中,在shell中的操作命令为copy“VxWorks”,”/tffs0/VxWorks”,然后修改文件中引导行,

#defineDEFAULT_BOOT_LINE“

"tffs=0,0(0,0)host:

/tffs0/VxWorksh===targetpw=targeto=cpm"

修改完后,重新编译生成bootrom_,并把它烧写到flash中。

然后重新启动,即可看到如下启动画面:

bootdevice:

tffs=0,0

unitnumber:

0

processornumber:

0

hostname:

host

filename:

/tffs0/VxWorks

inetonethernet(e):

hostinet(h):

user(u):

target

ftppassword(pw):

target

flags(f):

0x0

other(o):

cpm

AttachingtoTFFS...done.

Loading/tffs0/VxWorks...894304

Startingat0x10000...

DevelopmentSystem

KERNEL:

CopyrightWindRiverSystems,Inc.,1984-2003

CPU:

#0.

MemorySize:

/5.

WDBCommType:

WDB_COMM_END

WDB:

Ready.

到此,说明引导成功。

flash整个TFFS文件系统就已经建立成功。

四、结论

VxWorks操作系统中支持TFFS文件系统,我们将VxWorks映像作为文件放到flash上,这就有利于开发者和用户更新应用程序而不需要影响bootrom,直接更新VxWorks映像或者将应用程序直接copy到flash中,然后装载到RAM中运行。

参考文献

’sGuide.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2