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

发布时间:2015-10-30 15:34    发布者:designapp
关键词: VxWorks , 嵌入式 , TFFS , Flash , MTD
  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。若返回的设备ID是其支持的设备ID,则对FLFlash结构成员进行初始化;否则返回失败。
  Flash地址映射函数将系统传递给map函数的Flash片内地址转换为系统地址。一般直接在片内地址的基础上加上Flash的基地址即可。
  Flash擦除函数主要用于擦除TrueFFS管理的Flash区域。Flash的擦除操作是成块进行的,擦除前先要对扇区进行解锁,然后写入擦除建立和擦除扇区命令,擦除成功后,内容应该均为1,以此来判断是否擦除成功。
  Flash写函数主要实现写Flash操作。写入前首先要对扇区解锁,然后判断是否是改写操作,若是则需要进行擦除操作,否则直接写命令、写数据。最后需要判断数据是否写完。
  MTD驱动文件的编写需要注意几个方面:(1)Flash芯片的数据手册中给出指令地址是按字而言的,在本文中不能直接使用,需要左移一位。(2)擦除和写操作是需要屏蔽中断的,可以用intLock()函数来屏蔽中断,用intUnlock()函数来使能中断。(3)可以在各个操作函数中添加打印信息以方便调试。
  4 嵌入式文件系统的创建
  一旦VxWorks包含了TrueFFS系统,启动时usrRoot()会调用tffsDev()进行设备初始化,通过xxxRegister()函数注册socket驱动。此过程如图 5所示。


  4.1 Flash设备的识别
  在TrueFFS中包含了INCLUDE_TFFS_SHOW 和INCLUDE_SHOW_ROUTINES后,就可以在shell中使用tffsShow()和tffsShowAll()任意一个显示程序来识别Flash设备。
  4.2 格式化TrueFFS
  在实际加载使用TrueFFS之前,需要格式化TrueFFS。格式化是否成功,在于你的MTD驱动代码是否正确。因此可以用格式化操作来调试MTD层。在shell中输入tffsDevFormat命令来格式化TrueFFS,tffsDevFormat最终会调用s29gl512MTDErase()和s29gl512MTDWrite()函数。这两个函数是MTD层的主要的两个函数。格式化成功则返回0,否则返回-1。
  4.3 挂载DOS设备名
  格式化TrueFFS成功之后,就可以给Flash设备挂接DOS设备名了。在usrTffs.c文件中提供了一个标准的初始化函数usrTffsConfig(),可用来在TrueFFS块设备上建立dosFs文件系统。加载完成后,就可以使用加载点来访问文件系统了。
  5 文件系统测试
  一般为了调试MTD驱动的方便,在VxWorks映像中建立文件系统而非在BootRom中建立文件系统。先通过网络加载VxWorks映像。在shell中调试MTD驱动,创建TrueFFS系统。然后使用dosFs文件系统的相关命令如copy等将VxWorks映像拷贝到TrueFFS文件系统中,改变config.h中的启动引导行,从文件系统加载。修改完后,重新编译生成bootrom_uncmp.bin,并把它烧写到Flash中然后重新启动,在超级终端中即可看到如图 6和图 7所示的启动画面。


  6 结束语
  本文首先介绍了VxWorks系统的启动流程和加载方式,分析了网络加载的缺点和建立Flash文件系统的必要性;接着介绍了VxWorks下支持的文件系统,选择了适用于硬件平台和系统需求的TrueFFS文件系统;然后分析了TrueFFS文件系统需要配置的文件以及驱动层的编写;最后在文件配置好的基础上创建TrueFFS文件系统并对文件系统进行了测试,成功基于文件系统加载了VxWorks映像,将系统的启动时间缩短到了20s,提高了产品的用户体验。
                               
               
本文地址:https://www.eechina.com/thread-155201-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表