首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
在U-Boot中实现对Yaffs镜像的支持
来源:本站整理  作者:佚名  2009-08-26 11:50:15



0 引 言
    U-Boot是目前广泛使用的嵌入式操作系统通用引导程序,具有功能丰富强大,支持多种操作系统和 CPU体系,易于功能扩展和移植,源码开放等多种优点。U-Boot能够同时支持启动加载模式和下载模式。在下载模式下,可以通过U-Boot自带的 nand read/write等命令,配合.Jffs 2等参数,实现cramfs,Jffs 2等文件系统镜像的读写,方便开发过程的调试。Yaffs文件系统是专门针对NAND FLASH设计的可读写型文件系统,在NAND FLASH上性能稳定优异。U-Boot自身没有实现对Yaffs文件系统镜像读写的直接支持。由于Yaffs文件系统的特殊结构,需要对nand命令做一定的修改,从而实现其在NANDFLASH上对Yaffs镜像的读写。

1 相关工作简介
1.1 Yaffs文件系统结构简述
    目前,嵌入式系统中常用的FLASH文件系统有Cramfs,Jffs 2,Yaffs,exfat等。Cramfs是一种压缩型只读型文件系统,其在系统启动时解压至内存中运行。Jffs 2,Yaffs,Exfat等是可读写型文件系统,Jffs 2一般应用于NOR型FLASH;Exfat不是开源的文件系统实现,一般应用于Windows CE操作系统中。Yaffs是一种专门针对NAND FLASH设计的可读写型文件系统,它能针对嵌入式存储器的功能要求提供损耗平衡、掉电保护等。Yaffs文件系统的源代码开放,在多种嵌入式操作系统中移植十分方便。
    通常一个NAND FLASH存储设备由若干块组成;1个块由若干页组成。一般128 MB以下容量的NAND FLASH芯片,一页大小为528 B,依次分为2个256 B的主数据区和16 B的额外空间;128 MB以上容量的NAND FLASH芯片,一页大小通常为2 KB。由于NAND FLASH出现位反转的概率较大,一般在读写时需要使用ECC进行错误检验和恢复。
    Yaffs文件系统的设计充分考虑到NAND FLASH以页为存取单位等的特点,将文件组织成固定大小的段(Chunk)。以528 B的页为例,Yaffs文件系统使用前512 B存储数据、16 B的额外空间,用以存放数据的ECC和文件系统的组织信息等(称为OOB数据)。通过OOB数据,不但能实现错误检测和坏块处理;同时可以避免加载时对整个存储介质的扫描,加快了文件系统的加载速度。一个页面的具体结构如表1所示。

    由此可知,与其他文件系统相比,在生成Yaffs镜像时就包含了OOB数据,所以在烧写Yaffs镜像时,不需要计算ECC,仅依次写入512 B的数据和16 B的OOB数据即可。同时,Yaffs镜像要使用分区上的第一个块来存储一个名为Yaffs_ObjectHeader的结构体。该结构体记录了该分区中的文件、路径以及相关的链接,所以在烧写时还需要跳过第一个可用的块。Yaffs文件系统目前常用的版本为Yaffs 2,性能在许多方面都有了很大的提高。
1.2 U-Boot对常见文件系统的支持
    在实际开发过程中,一般使用引导程序,比如U-Boot,完成文件向FLASH中的烧写和启动引导等工作。U-Boot能够支持Cramfs,Jffs 2文件系统的烧写。这些文件系统是针对NOR型FLASH设计的,所有文件数据就是简单的线性表组织形式。对于目前大量使用的NAND型FLASH,由于带有用于数据校验等功能的OOB区,所以Yaffs文件系统的数据组织形式不再是线性表的形式。
    U-Boot没有提供对Yaffs文件系统的读写支持。但由于该文件系统的读写过程与其他文件系统的读写类似,因此可以通过修改U-Boot的FLASH读写命令,增加处理00B区域数据的功能,即可以实现对Yaffs文件系统的读写支持。

[1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:257,464.80000 毫秒