基于TFFS的成像声呐文件系统设计
设备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,提高了产品的用户体验。
VxWorks 嵌入式 TFFS Flash MTD 相关文章:
- 蓝牙无线耳机设计及VxWorks移植方法(07-21)
- 军事指挥系统中VxWorks下汉字显示技术(07-16)
- 基于VxWorks的文件系统的研究与实现(09-18)
- 嵌入式语音通信系统中VxWorks BSP的设计实现(09-18)
- 嵌入式系统的VxWorks安全性问题研究(11-06)
- VxWorks下的多重定时器设计(02-16)