新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于TFFS的成像声呐文件系统设计

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

作者:董琎琎 金雪 夏伟杰 蒋鹏飞时间:2015-04-29来源:电子产品世界收藏

  3 TrueFFS系统设计

本文引用地址:http://www.eepw.com.cn/article/273339.htm

  3.1 功能层的实现

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

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

  xxxMtd.c是驱动文件,主要包含了针对所使用的具体设备所编写的底层驱动函数,由于我们使用的是SPANSION公司的S29GL512P10TFIR20芯片,Tornado或者Workbench并未提供相应的驱动,需要自己编写,具体在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__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,提高了产品的用户体验。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程


热成像仪相关文章:热成像仪原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭