第8章vxworks文件系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式操作系统
第8章 VxWorks文件系统
主要内容
1、文件系统结构 2、文件系统类型
嵌入式操作系统
嵌入式操作系统
1、 文件系统结构
应用通过I/O系统提供的标准接口来访问文件系统
I/O系统
设备
open()
字符设备 设备A
create()
应
read()
用
程
write()
序
close()
ioctl()
嵌入式操作系统
– 掉电安全:要求块擦除,块中原来数据的保存就比 较麻烦,因此数据写入、垃圾回收等操作对系统异 常中止都非常敏感,极易造成数据丢失和数据垃圾
– 低空间消耗:这部分空间用于上层软件抽象,而不 能用于实际数据的存储。而一般嵌入式系统中存储 空间有限,低空间消耗可以提高数据存储空间
• TFFS为了将Flash抽象为普通的块设备,将 Flash存储器映射为一系列连续的块,并且使用 block-to-flash转换系统,方便的将块编号直接 转换为flash地地址
– TFFS已经包含了支持Intel、AMD以及samsung部分 flash芯片的MTD驱动。新的芯片需要新的MTD支持, 可以使用一个标准的接口来加入这些驱动
• Socket层提供TFFS和板卡硬件的接口,用来向系 统注册socket设备,实现电压控制,基地址设置、 写保护控制等
– Socket这名称来源于flash存储器的插座(如flash卡)
用于支持远程文件系统
嵌入式操作系统
1.1文件系统的应用接口
• 处于最上层的应用对文件系统的操作接口包括:
– ioLib – ansiStdio – fioLib – dirLib – usrFsLib
嵌入式操作系统
• 除了7个标准接口外,ioLib还提供与文件系统相 关的特殊接口
嵌入式操作系统
嵌入式操作系统
• Flash特点:
– 优点:没有运动机械部件,具有寿命长、可靠性高、 耗能少和体积小等优点,适合嵌入式系统
– 缺点:写入数据前需要擦除操作,并且只能进行块擦 除;有限的擦除和写入次数,一般约为10万次;擦除 和写入操作比较耗时,且不能同时读取
• 对flash不能像RAM一样直接写入,需要执行系列 命令
嵌入式操作系统
• Flash的存储特性使得其对上层软件有特别的 要求:
– 平均使用:flash扇区的擦除次数都有限制,最好能 均匀使用flash的每个扇区,以延长flash的使用寿命
– 高效的垃圾回收:为保证存储器空间的高效使用, 需要进行垃圾(碎片)回收,flash的擦除以扇区为 单位,垃圾的回收也应以扇区为单位,先移动扇区 数据,再擦除整个扇区
TrueFFS
嵌入式操作系统
• TrueFFS(简称TFFS)为各种Flash存储器提供通 用的块设备接口,是M-Systems公司为 VxWorks操作系统所作的定制实现
– 它为种类繁多的flash存储设备提供了统一的块设备 接口
– 具有可重入、线程安全的特点,支持大多数流行的 cpu架构
• TFFS对NOR和NAND的Flash存储器都提供支 持,用户自己特殊的flash芯片驱动可根据类似 型号的代码修改
TFFS区
嵌入式操作系统
在某flash芯片上建立TFFS文件系统
• 配置相关文件,让映像中包含TFFS文件系统
– 在config.h中定义INCLUDE_TFFS:这可使得映像初 始化代码调用tffsDrv初始化TrueFFS 系统
– 每个BSP目录下必须要包含一个sysTffs.c文件:它将 TFFS所有层链接到一起并于VxWorks绑定。要编辑此 文件将支持此flash的MTD和FTL模块包含到TrueFFS 中
嵌入式操作系统
• 在VxWorks中,FTL以库形式提供,包括tffsDrv、 tffsLib以及ftl和fl开头的目标模块
• MTD以源代码形式提供,在”\target\src\drv\tffs” 目录下
• Socket层以源代码提供, 在”\target\src\drv\tffs\sockets”目录下
文件系统 DOS
驱动程序
标准接口
块设备
设备B 设备C
remove()
Raw
驱动程序 设备D
文件系统和字符设备 一样挂接在I/O系统上
dosFs,rt11Fs,rawFs, tapeFs,cdromFs
块设备通过文件系统访问, 也可以选择不同的文件系统
嵌入式操作系统
文件系统的调用关系
为应用提供了丰富的接口
– 文件系统接口在驱动表注册后, dosfsDevCreate中调用iosDevAdd,传入设备 结构指针、设备名称和驱动号为参数,将设 备结构添加到设备链表中
– 设备名为文件系统名,如”/tffs0/” – 文件系统安装到IO系统中后,就可以用上层
库提供的接口函数进行操作了
嵌入式操作系统
2、文件系统类型
– tffsConfig为VxWorks提供了TFFS配置接口
嵌入式操作系统
• TFFS库提供一种共享机制,可以实现bootrom 和TFFS同时存于同一flash存储器
– 调用tffsDevFormat中可以指定保留一段存储区, – 调用tffsBootImagePut来操作这块保留存储区,将
bootrom存放到此区域 – 利用flash驱动提供的命令将VxWorks映像存放到
• dirLib库提供目录文件列表读取的功能,它应建 立在ioLib之上
嵌入式操作系统
• dirLib还提供用于获取文件或文件系统状态信息 的函数接口:
嵌入式操作系统
• usrFsLib在ioLib和dirLib之上做了更实用的抽象, 提供了用户熟悉的命令
嵌入式操作来自百度文库统
• VxWorks提供usrFsLib源代码,位于 “target\src\usr\” 目录下
• 文件系统与存储设备的硬件特性、系统需求等密 切相关
– 在嵌入式应用中,主要的存储设备为RAM(DRAM, SDRAM)、ROM和FLASH存储器
– Linux下常用的文件系统类型包括: cramfs, romfs, yaffs, jffs2, ramdisk, ramfs/tmpfs等
– VxWorks下常用的文件系统有TrueFFS,dosFs, rawFs,tr11Fs,tapesFs,cdromFs
– 编辑sysPhysMemDesc[],将flash加入到MMU中 – BSP目录下还需要tffsConfig.c文件(src/drv/tffs),要
修改它,支持此flash – 将此flash的驱动程序(MTD)添加到BSP目录下
嵌入式操作系统
• 映像启动后,检测此flash是否成功驱动
– 可以在shell下利用tffsShow来显示flash信息(tffsShow 最终会调用flash驱动程序中提供的函数)
嵌入式操作系统
1.2 文件系统如何加入到I/O系统中
• 文件系统和IO系统的挂接同字符设备类似
– 把文件系统看作是一个字符设备驱动
• 以dosFs文件系统为例看文件系统如何加载?
– 在dosFsLib库中实现了I/O系统规定的7个标准函数
嵌入式操作系统
– dosFsLibInit中调用iosDrvInstall将7个函数指针填入 驱动程序表中,并得到一个驱动号 • 表中各函数的入口对应文件系统提供的相应函数
• 在为自己的硬件定制TFFS时,可以将xxmtd.c、 tffsConfig.c和sysTffs.c直接添加到自己的BSP目录 中,方便代码管理
嵌入式操作系统
• VxWorks提供tffsDrv和tffsConfig两个库支持 TFFS
– tffDrv为VxWorks提供了创建TFFS设备的接口
• 调用tffsDevFormat格式化flash
– 若格式化成功,则FTL结构形成
• 调用tffsDevCreate创建标准块设备
– 设备创建成功后,就可以跟其他块设备一样来加载 dosFs文件系统
• 调用usrTffsConfig加载dosFs文件系统
嵌入式操作系统
TFFS的层次结构
• TFFS由3层实现:翻译层(FTL)、MTD层和
Socket层
TFFS与上层
与具体的Flash
文件系统的接口
密切相关
• FTL为上层软件提供标准块设备接口,实现前面 描述的各种算法,如块映射、平均使用、垃圾回 收和数据保护等
嵌入式操作系统
• MTD层和具体芯片相关,主要是实现对具体flash 进行读、写、擦、ID识别等驱动,并设置与flash 密切相关的一些参数
第8章 VxWorks文件系统
主要内容
1、文件系统结构 2、文件系统类型
嵌入式操作系统
嵌入式操作系统
1、 文件系统结构
应用通过I/O系统提供的标准接口来访问文件系统
I/O系统
设备
open()
字符设备 设备A
create()
应
read()
用
程
write()
序
close()
ioctl()
嵌入式操作系统
– 掉电安全:要求块擦除,块中原来数据的保存就比 较麻烦,因此数据写入、垃圾回收等操作对系统异 常中止都非常敏感,极易造成数据丢失和数据垃圾
– 低空间消耗:这部分空间用于上层软件抽象,而不 能用于实际数据的存储。而一般嵌入式系统中存储 空间有限,低空间消耗可以提高数据存储空间
• TFFS为了将Flash抽象为普通的块设备,将 Flash存储器映射为一系列连续的块,并且使用 block-to-flash转换系统,方便的将块编号直接 转换为flash地地址
– TFFS已经包含了支持Intel、AMD以及samsung部分 flash芯片的MTD驱动。新的芯片需要新的MTD支持, 可以使用一个标准的接口来加入这些驱动
• Socket层提供TFFS和板卡硬件的接口,用来向系 统注册socket设备,实现电压控制,基地址设置、 写保护控制等
– Socket这名称来源于flash存储器的插座(如flash卡)
用于支持远程文件系统
嵌入式操作系统
1.1文件系统的应用接口
• 处于最上层的应用对文件系统的操作接口包括:
– ioLib – ansiStdio – fioLib – dirLib – usrFsLib
嵌入式操作系统
• 除了7个标准接口外,ioLib还提供与文件系统相 关的特殊接口
嵌入式操作系统
嵌入式操作系统
• Flash特点:
– 优点:没有运动机械部件,具有寿命长、可靠性高、 耗能少和体积小等优点,适合嵌入式系统
– 缺点:写入数据前需要擦除操作,并且只能进行块擦 除;有限的擦除和写入次数,一般约为10万次;擦除 和写入操作比较耗时,且不能同时读取
• 对flash不能像RAM一样直接写入,需要执行系列 命令
嵌入式操作系统
• Flash的存储特性使得其对上层软件有特别的 要求:
– 平均使用:flash扇区的擦除次数都有限制,最好能 均匀使用flash的每个扇区,以延长flash的使用寿命
– 高效的垃圾回收:为保证存储器空间的高效使用, 需要进行垃圾(碎片)回收,flash的擦除以扇区为 单位,垃圾的回收也应以扇区为单位,先移动扇区 数据,再擦除整个扇区
TrueFFS
嵌入式操作系统
• TrueFFS(简称TFFS)为各种Flash存储器提供通 用的块设备接口,是M-Systems公司为 VxWorks操作系统所作的定制实现
– 它为种类繁多的flash存储设备提供了统一的块设备 接口
– 具有可重入、线程安全的特点,支持大多数流行的 cpu架构
• TFFS对NOR和NAND的Flash存储器都提供支 持,用户自己特殊的flash芯片驱动可根据类似 型号的代码修改
TFFS区
嵌入式操作系统
在某flash芯片上建立TFFS文件系统
• 配置相关文件,让映像中包含TFFS文件系统
– 在config.h中定义INCLUDE_TFFS:这可使得映像初 始化代码调用tffsDrv初始化TrueFFS 系统
– 每个BSP目录下必须要包含一个sysTffs.c文件:它将 TFFS所有层链接到一起并于VxWorks绑定。要编辑此 文件将支持此flash的MTD和FTL模块包含到TrueFFS 中
嵌入式操作系统
• 在VxWorks中,FTL以库形式提供,包括tffsDrv、 tffsLib以及ftl和fl开头的目标模块
• MTD以源代码形式提供,在”\target\src\drv\tffs” 目录下
• Socket层以源代码提供, 在”\target\src\drv\tffs\sockets”目录下
文件系统 DOS
驱动程序
标准接口
块设备
设备B 设备C
remove()
Raw
驱动程序 设备D
文件系统和字符设备 一样挂接在I/O系统上
dosFs,rt11Fs,rawFs, tapeFs,cdromFs
块设备通过文件系统访问, 也可以选择不同的文件系统
嵌入式操作系统
文件系统的调用关系
为应用提供了丰富的接口
– 文件系统接口在驱动表注册后, dosfsDevCreate中调用iosDevAdd,传入设备 结构指针、设备名称和驱动号为参数,将设 备结构添加到设备链表中
– 设备名为文件系统名,如”/tffs0/” – 文件系统安装到IO系统中后,就可以用上层
库提供的接口函数进行操作了
嵌入式操作系统
2、文件系统类型
– tffsConfig为VxWorks提供了TFFS配置接口
嵌入式操作系统
• TFFS库提供一种共享机制,可以实现bootrom 和TFFS同时存于同一flash存储器
– 调用tffsDevFormat中可以指定保留一段存储区, – 调用tffsBootImagePut来操作这块保留存储区,将
bootrom存放到此区域 – 利用flash驱动提供的命令将VxWorks映像存放到
• dirLib库提供目录文件列表读取的功能,它应建 立在ioLib之上
嵌入式操作系统
• dirLib还提供用于获取文件或文件系统状态信息 的函数接口:
嵌入式操作系统
• usrFsLib在ioLib和dirLib之上做了更实用的抽象, 提供了用户熟悉的命令
嵌入式操作来自百度文库统
• VxWorks提供usrFsLib源代码,位于 “target\src\usr\” 目录下
• 文件系统与存储设备的硬件特性、系统需求等密 切相关
– 在嵌入式应用中,主要的存储设备为RAM(DRAM, SDRAM)、ROM和FLASH存储器
– Linux下常用的文件系统类型包括: cramfs, romfs, yaffs, jffs2, ramdisk, ramfs/tmpfs等
– VxWorks下常用的文件系统有TrueFFS,dosFs, rawFs,tr11Fs,tapesFs,cdromFs
– 编辑sysPhysMemDesc[],将flash加入到MMU中 – BSP目录下还需要tffsConfig.c文件(src/drv/tffs),要
修改它,支持此flash – 将此flash的驱动程序(MTD)添加到BSP目录下
嵌入式操作系统
• 映像启动后,检测此flash是否成功驱动
– 可以在shell下利用tffsShow来显示flash信息(tffsShow 最终会调用flash驱动程序中提供的函数)
嵌入式操作系统
1.2 文件系统如何加入到I/O系统中
• 文件系统和IO系统的挂接同字符设备类似
– 把文件系统看作是一个字符设备驱动
• 以dosFs文件系统为例看文件系统如何加载?
– 在dosFsLib库中实现了I/O系统规定的7个标准函数
嵌入式操作系统
– dosFsLibInit中调用iosDrvInstall将7个函数指针填入 驱动程序表中,并得到一个驱动号 • 表中各函数的入口对应文件系统提供的相应函数
• 在为自己的硬件定制TFFS时,可以将xxmtd.c、 tffsConfig.c和sysTffs.c直接添加到自己的BSP目录 中,方便代码管理
嵌入式操作系统
• VxWorks提供tffsDrv和tffsConfig两个库支持 TFFS
– tffDrv为VxWorks提供了创建TFFS设备的接口
• 调用tffsDevFormat格式化flash
– 若格式化成功,则FTL结构形成
• 调用tffsDevCreate创建标准块设备
– 设备创建成功后,就可以跟其他块设备一样来加载 dosFs文件系统
• 调用usrTffsConfig加载dosFs文件系统
嵌入式操作系统
TFFS的层次结构
• TFFS由3层实现:翻译层(FTL)、MTD层和
Socket层
TFFS与上层
与具体的Flash
文件系统的接口
密切相关
• FTL为上层软件提供标准块设备接口,实现前面 描述的各种算法,如块映射、平均使用、垃圾回 收和数据保护等
嵌入式操作系统
• MTD层和具体芯片相关,主要是实现对具体flash 进行读、写、擦、ID识别等驱动,并设置与flash 密切相关的一些参数