VxWorks提供了多种文件系统,今天先了解一下都有啥,等到用的时候,再详细分析
VRFS
组件INCLUDE_VRFS,virtual root file system。这是一个虚拟的文件系统,仅是提供了一个POSIX风格的虚拟根目录"/"。在这个目录里,可以看到其它以"/"开始,且只包含一个"/"的设备
DosFS
组件INCLUDE_DOSFS,MS-DOS-compatible file system
文件名最长255个字符,不过路径名最长1024个字符,而Windows默认的最长路径应该只有260个字符
DosFS支持多种本地存储设备,例如硬盘、软盘、优盘等。系统启动时,自动调用xxxDevCreate()来创建XBD(extended block device)设备。然后用户可以使用xbdCreatePartition()分区,并使用dosfsDiskFormat()格式化
例如我当前的配置是:在VxWorks 6.9里包含Intel Serial/Parallel ATA驱动INCLUDE_DRV_STORAGE_PIIX,并在X86的Target里添加一个新的IDE硬盘
系统启动后,可以看到多了一个设备
使用xbdCreatePartition()进行分区
例如分为两个分区,各占50%
使用dosfsDiskFormat()将分区格式化为dosFS
使用dosFsShow()可以看到DosFS的卷配置
HRFS
组件INCLUDE_HRFS,Highly Reliable File System,针对实时系统而设计的一种事务性文件系统,具有容错能力,并兼容POSIX
使用方式类似于DosFS,先用xbdCreatePartition()进行分区,然后使用hrfsDiskFormat()格式化
使用hrfsChkDsk()可以看到文件系统的基本信息
TRFS
组件INCLUDE_XBD_TRANS,transaction-based reliable file system。为DosFS提供一个容错的IO层
创建流程: 先在XBD设备上创建TRFS,然后再创建DosFS
在TRFS上进行的文件操作,必须提交后,才能永久生效。而事务的提交是以整个分区为单位的,并不是提交某个文件。因此,提交时,整个分区的状态需要一致,不能有正在进行中的文件操作。有两个函数可以用于提交
注意:尽管usrTransCommitFd()的参数是TRFS上某个文件的fd,但提交的是整个分区的文件系统
TRFS的操作示例如下
RawFS
组件INCLUDE_RAWFS,raw file system,将整个分区当作一个文件来处理。新创建的XBD设备,默认就挂载RawFS,也不需要格式化。通过基本IO函数来操作即可
cdromFS
组件INCLUDE_CDROMFS,ISO 9660 standard file system,支持CD-ROMs, CD-Rs, CD-RWs
例如有张CD,可以在Windows里打开
把它放到VxWorks的Target后,VxWorks启动时自动加载cdromFS,然后可以使用open()、close()、read()、ioctl()、readdir()、stat()等函数来访问它。使用cdromFsVolConfigShow()可以查看cdrom的卷配置
RomFS
组件INCLUDE_ROMFS,Read-Only Memory File System,将任意文件存放到操作系统中,不需要本地存储设备或网络设备
使用流程是: 在Workbench中新建ROMFS File System Project
创建时选择Add reference to VIP project
或者创建之后,在工程上右击选择Add as Project Reference
在工程的Contents里可以添加文件、文件夹
然后直接build VIP,重启Target,就可以看到VxWorks里多出来的设备/romfs,里面就包含之前添加的文件
TSFS
组件INCLUDE_WDB_TSFS,Target Server File System,是的WDB的成员之一,在Target端创建一个叫做/tgtsvr的文件系统,但实际上操作的是Host端的文件
在Target Connection的属性中配置Target Server File System的Root路径,默认值是当前的workspace
启动VxWorks,连接Target Connection后,就可以在VxWorks中通过/tgtsvr访问Host的文件了。这个例子里,访问的是Host端Windows的C:/目录
TrueFFS
组件INCLUDE_TFFS,Flash File System。通过TrueFFS,可以使用DosFS或HRFS来访问Flash设备
NFS
Network File System,详见《Component之NFS》