论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf

所需积分/C币:20 2019-08-17 10:06:06 578KB .PDF

基于VxWorks的YAFFS2文件系统移植,郭利军,戴志涛,目前,NAND Flash已经广泛应用在各种嵌入式系统中。VxWorks操作系统使用TFFS软件管理NAND Flash,TFFS使用NFTL转换层将NAND Flash设备模拟成磁盘��
山国武花论文在丝 文件组织结构 将 作为一片连续的 ,通常一个 对应一个页 将 文件组织成固定大小的数据段。每个文件都有一个页面专门存放文件头,用于保存文件的模 式、所有者、组、长度、文件名等信息。为了提高访问文件的性能, 将文件 的数据段组织成一棵 树 树提供 地址到文件地址的映射 在 文件写入时,不能像磁盘文件系统·样,在给定位置直接写入,而是采用异地更新的方式, 即挑选·个空闲页写入数据,旧数据会在垃圾回收时被捺除 物理数据组织及检查点机制 使用备用空间的个字节存放校验和,个字节存放块状态其余的字节 存储文件的元数据。由于文件系统的元数据及块状态信息都存储在备用区,因此在加载 文件系统时需要扫描墼个 设备,如果是大容量 芯片,这会耗费 很长时间,为了加快挂载速度, 使用了 机制。使用了 机制之 后,每次卸载 文件系统时,都会将文件系统的关键信息写入 再次挂 载时,直接将之前保存的信息读入内存即可,避免重建管理数据结构而扌!描整个设备,极大 的提高了挂载速度。 垃圾收集机制 在写入数据时 采用异地更新的方式来替换旧数据,包含旧数据的贞成为无效 页。当系统中存在大量无效页而且此时有数据写入时, 文件系统会触发垃圾回收机 制以释放空间。垃圾回收时, 会选择那些大多数 已经无效的块儿作为清里 目标,将这些块儿中的有效薮据拷贝到·个新的块儿中,然后捺除存放旧数据的块儿,这样 阳块就可以再次被使用 没有明确使用任何一种擦除衡算法,而是使用块刷新技 术达到同样的目的。块刷新关注的焦点并不是块中的无效 数量,而是将块中数据移 动到哪个位置可以使得擦除操作分布的更均匀。一日坎刷新执行后,设备中最老(数据未更 新的时间最长)的块便会成为下次垃圾回收的对象,这种做法类似于区分冷热数据的损耗平 衡算法 文件系统移植平台简介 本文采用交叉编译的开发环境宿主机中编译 内核,通过网络下载到目标板 。宿主机采用风河公司的集成开发环境 目标板为龙芯中和 技术有限公司的 开发板目标板搭载的 芯片是三星 芯片,该芯片一共个块,每一块包含个页,一个页的人小为个字节(数 据区字节备用区)。目标板使用的 是 提供了所有外设的驱 动以及卡富的命令行接口,只有较强的调试功能。本文采用最新版本的 源码,该 源码叮以在 官方网站卜载 文件系统移植步骤 本文采用 )接口整合 文件系统到 内核 中。使用接口,除了 文件系统核心之外,还需要实现三部分代码,分别为: 应用层接口、操作系统相关接口, 设备配置及 驱动,图 是系统结构图 山国武技论文在丝 用程序 子系统 探作系统接口 YAFFS核心 文件管理 垃圾回收 损耗平衡 设备拄载 配置及 驱动 议备 图系统结构图 核心完成如文件管理,垃圾回收等核心功能 核心中使用的基础接口如: 內存分配、信号量等,需要根椐不同操作系统定制实现,对应上图中的操作系统接口部分。 在处理应用程序的读写请求时,最终会调用 驱动提供的读写接口,完 成最终的读写操作,因此移植 时,需要为 提供相应的驱动程序,并向 核心注册驱动提供的读、与及擦除函数。为了能够让应用程序使用 文件系统,需要 向 子系统提供针对 文件系统的 接口实现。应用程序使用 等标准接∏调用 文件。 添加 文件系统核心到 内核 在 目录下建立 目录,并将 核心代码拷贝到新建的 日录中,下面是核心代码的一个简要列表: 文件系统核心文件 文件名称 功能 yaffs allocator.c 分配 及 结构体 yaffs_checkpointc 负责检查点的写入及读取 yaffs_ecc.c 校验,检测写入的数据是否正确 yafts gutsc 实现了 的核心算法 yaffs nand. c 提供与 驱动的交互接口 yaffs gsort.c 扫描时所使用的快排算法实现 yaffs_tagscompat c 模式的兼容代码 yaffs tagsvalidity c 标记的有效性检测代码 yaffs_osglue C 与只体操作系统的粘合代码,实现诸 接口。 实现 应用层接口 子系统定义了个接口,系统初始化时,需要初始化 构体,并通过 接口将针对 文件系统的接口添加到 子系统,如图所示,是 结构体的定义。 山国武技论文在丝 *该结构体包含7个函数指什,代表I/O系统的7个标准接口* t ypedef struct funCT de create create()接口*/ tUncPt de delete /* remove接口水 FUNCPT de open /米open()接口*/ tuncPt de close *c1ose(接口水 funct de read /米read()接口米 uncUt de write /* write()接口水 funCT dc ioctl /米ioct1(接口* DRV ENTRY 图 结构体定义 根据 要求,在注册 的 接口之前,需要向子系统注册 个设备,设备和接口是一一对应的关系。注册设备使用 接口 该接口接收一个字符串作为设备名称。系统启动后,这个设备名称作为 系统的一 个目录出现。之后对该目录的所有操作就会对应到 的 接口 本身也提供了一系列接凵供用户使用,如 等,这些 接凵兼容 标准。因此,在实现 结构体规定的个 接凵时,可 以直接使用 提供的这些内部接口 操作系统层接口实现 文件系统提供了一个叫做 的文件,该文件中的所有数接口都 必须根据具体操作系统重新实现。如表,是 中需要实现的函数列表以及在 系统下的具体实现 表系统接口层实现 数名称 具体实现 yaffsts_malloc yaffsfs free yaffsfs CurrentTime yaffsfs_inItialisation yaffsfs Lock yaffsfs_Unlock 配置及 驱动 核心层和 设备之间的交互,使用 驱动程序完成。 核心是硬件无关的,驱动程序负责只体的 设备的操作。驱动程序需要向 核心注册相应的 设备信息以及具体的操作函数, 核心根据 驱动提供的这些信息完成设备的读、写、擦除及管理。设备信息的保存在 结构体中,而驱动提供的接凵通过 结构体注册。 使用 结构 体、表示一块 设备。图是 及 的关系图。 山国武技论文在丝 struct yaffs param i const YCHAR*name; /*设备名称*/ u32 total bytes per chunk *一个页的字节数* /*一个块的页数 nt spare bytes per chunk; OOB区的字节数* int start block *起始块号*/ int end block. *结束块号* int n reserved block *保留块数 truct yaffs dev struct yaffs param param struct yaffs driver drv struct yaffs driver int (*drv write chunk_ fn)0: nt ("drv read chunk tn)(; /*读取一页* nt (drv fn)o /*擦除一块* nt(drv mark bad fn)(: /*标记为坏块* int (*drv check bad fn)o /*检查是否是坏块* int (*drv_Inltlallse fn *设备初始化“ int ("drv-delnltlallse fn)() *设备卸载“/ 及 的关系图 设备配置参数主要包括:文件系统名、页大小,区大小,块儿包含的页数、 起始块儿号、总块儿数、是否使用等。驱动需要提供的接冂有个,分别为:设 备初始化、设备卸载、读一页、写一页、擦除一个块、检査是否是坏块、标记坏块。系统启 动的时候,申请 结构体,并初始化该结构体中的 结构体和 结构体,最后用 提供的 接口将 添加到核心中 完成设备信息以及接口的注册 文件系统测试 系统启动后,道过可以查看注册到 系统中的所有设备,如图所示, 是命令的输出结果。 ]]]]]]]]]]]] ]]]1]]21] ]]]] ]]]]] ]]]]]1]] T=1 Systen 口ks6,8 KERNEL WIND d Riven 2.1 1984-7008 PU: Loonsson1E. Processor M ite: OxTfrrooo. BSP 工气P1 mod ITTI DD: Read d 图 命令显示当前 的设各 本文在节中,注册了 设备,并实现了针对 文件系统的 接口。 图中的“”目录是本文在节中注册的 设备,因此 接口层已经成功 山国武花论文在丝 注册到 系统中。卜面基于 操作系统,对 文件系统进行功能测试 和性能测试。 )功能测试:功能测试使用的测试案例流程图及测试结果如图所示。 (功能测式 御载设备 功能测试结果 排载设备 yaffs_ unmount!“/nand yaffs mount“/nand”) 200 重新拄载设备 afrs mount“/nand” 在buf1中 1024字节的字符串 打开test文什并溪 在/nand日录下 取文件内容到bu2 创建test文件 对比bu1和buf2的内 ■次数 各bu1的内容写入 容,统计比较结果 删除”/nand/test 失败次数 成功次数 测试次数是 束 图功能测试流程及测试结果 功能测试涉及了 文件系统提供的大部分功能,如:设备挂载、设备卸载、新 建文件、数据写入、删除文件等。测试结果显示, 文件系统工作稳定,没有出现异 常情况。 )性能测试:为了测试 文件系统性能,本文采用 提供的 驱动作为基准 提供了读写 页,擦除块等命令。由于这些命令直接使用 驱动提供的函数操作 设备,不进行任何其他设备相关的操作, 因此可以使用这些命令测量 设备可以提供的最高性能。如图所示,是 的性能测试结果。 性能测试结果(MB/s) 1.而5 1.5 1.25 YA「Ts2 0.75 读性能 写忙能 图 性能测试结果 从性能测试结果来看, 的读性能和 下的 读性能基本上没差别 的写性能是 的 写性能之所以会低于 是因为 除了写入 山国武花论文在丝 应用层数据外,还需要维护口志信息,口志信息也需要写入 ,因此写性能会低 的性能。而读操作并不涉及日志操作,内部实现较简单,基本上没有什么性能损 失 结束语 木文介绍了基于日志的、专门为 存储器设计的、适用」大容量存储 设备的嵌入式文件系统 实现了接∏,利用该接∏,可以方便的移植 到其他平台,本文就是基于这种接∏的实现。本文通过实现 接∏层,进 步将 文件系统整合到 的子系统中,使得应用程序可以用标准 接凵使用 文件系统。在本文最后,基于 系统,完成对 文件系统 的功能和性能测试,测试结果表明 文件系统可以高效、稳定的工作在 平 台下。山于 文件系统的高性能和优异的可移植性,在嵌入式系统中必将得到更加 广泛的应用 参考文献 赵复生 文件系纷及新特性介绍

...展开详情
试读 8P 论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf

评论 下载该资源后可以进行评论 1

king_mystery 资料介绍还可以
2019-11-30
回复
img

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐
    论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf 20积分/C币 立即下载
    1/8
    论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf第1页
    论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf第2页
    论文研究-基于VxWorks的YAFFS2文件系统移植 .pdf第3页

    试读已结束,剩余5页未读...

    20积分/C币 立即下载 >