微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于TFFS的成像声呐文件系统设计

基于TFFS的成像声呐文件系统设计

时间:04-29 来源:电子产品世界 点击:

1 VxWorks系统的启动流程

嵌入式VxWorks操作系统的启动包括两个阶段,一是BootRom引导,二是VxWorks操作系统映像的启动。BootRom映像也叫做启动映像,它主要是初始化串口、网口等很少的硬件系统来下载VxWorks映像。VxWorks映像包含完整的VxWorks OS,是真正在目标板上运行的操作系统。它启动后会重新初始化几乎所有的硬件系统,这样操作系统才可以在目标板上正常运行。两种映像的区别如表 1所示。

VxWorks内核有多种启动流程。本文基于的声呐原型机采用了最常见的一种启动方法,将BootRom映像存放在Flash中,负责初始化一些简单的硬件如网口、串口等,然后下载VxWorks映像到RAM中并将控制权交由操作系统开始执行。VxWorks映像存放在干端主机上,通过网络加载到目标机中,启动时还需要打开FTP进行配置。图 1所示为基于网络加载的VxWorks启动方式。此种启动方法比较繁琐,而且需要网络的支持,启动速度也比较慢。

产品定型之后,BootRom映像和VxWorks映像不再需要进行修改,本文建立基于Flash的文件系统,将VxWorks映像拷贝到文件系统中,通过Flash文件系统加载VxWorks映像,不需要网络和FTP软件的支持,提高了启动速度。基于Flash文件系统的加载的VxWorks启动方式如图 2所示。

2 Flash文件系统

2.1 文件系统比较与选择

文件系统的选择与存储设备的物理特性和系统的要求密切相关。I/O系统、文件系统和块设备之间的联系如图 3所示。

dosFs文件系统是一种与MS_DOS文件系统相兼容的文件系统,具有能够满足实时应用的多种要求;支持可扩展的目录结构;支持使用连续文件;支持存储盘缓存,提高数据读写效率的特点。

TrueFFS(简称TFFS)旨在提高闪存的使用效率。它具有线程安全、可重入的特点,忽略了底层存储介质的不同,使得用户可以像操作磁质设备一样操作存储介质。通过wear-leveling技术、磨损均衡及碎片回收等机制平衡所有存储单元的使用频率,以此来达到延长存储介质使用寿命的目的。但是TrueFFS不能单独使用,需要DOS文件系统的支持。

因此本文选择在嵌入式VxWorks操作系统下基于Flash建立TFFS系统,在TFFS上挂载dosFs文件系统来进行I/O操作。如此一来,对Flash设备中文件和数据的读取就像对磁盘操作一样,方便快捷。

2.2 TrueFFS系统分析

VxWorks下的TFFS位于dosFs文件系统和底层硬件之间,由一个核心层和翻译层、MTD层、Socket层三个功能层组成。要在VxWorks下包含TFFS系统,每一层至少有一个软件模块与之对应。图4为TFFS结构图。

核心层(Core Layer)的主要作用是将其它三层有机结合起来,同时还控制着碎片回收、定时器和其他一些系统资源。翻译层(Translation Layer)是TrueFFS系统的核心,主要实现TrueFFS和DOS文件系统(dosFs)之间的高级交互功能。MTD(Memory Technology Drivers)层针对具体Flash存储器件,提供读、写、擦除、ID识别、映射等基本操作。Socket层(Socket Layer),又称套接层,提供TrueFFS和硬件系统之间的接口,用来向系统注册socket设备、检测设备插拔、硬件写保护等。

3 TrueFFS系统设计

3.1 功能层的实现

为了使生成的VxWorks映像支持TrueFFS系统,需要对如下文件进行配置:

config.h用来定义系统包含的配置,这使得VxWorks的初始化代码调用tffsDrv()来创建管理TrueFFS所需的结构和全局变量,并在运行MTD确认程序之前为所有挂接了的Flash设备注册socket组件驱动。在链接时,通过解析与tffsDrv()相关联的符号可以将TrueFFS所必须的软件模块链接到VxWorks映像中。

xxxMtd.c是MTD驱动文件,主要包含了针对所使用的具体Flash设备所编写的底层驱动函数,由于我们使用的Flash是SPANSION公司的S29GL512P10TFIR20芯片,Tornado或者Workbench并未提供相应的MTD驱动,需要自己编写,具体在3.2节中进行了阐述。

sysTffs.c文件将TrueFFS三个功能层链接到一起,并与VxWorks关联并决定应该包含哪个翻译层和MTD模块,本文Flash芯片采用的是NOR-based技术,包含INCLUDE_TL_FTL组件即可。

tffsConfig.c文件在mtdTable[]表中注册自己的MTD。如果你新写了一个MTD并希望TrueFFS可以识别它,就需要在此表中添加它的注册信息。

Makefile文件用来添加TrueFFS的目标文件。

3.2 MTD驱动的编写

MTD和具体的Flash存储器相关,实现读、写、擦除、映射等操作,这里我们针对S29GL512P10TFIR20芯片编写了驱动文件的入口函数、Flash映射函数、Flash擦除函数、Flash写函数。擦除和写函数是编写MTD驱动时最关键的两个函数。

MTD入口函数主要用来探测设备并识别设备ID。若返回的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top