在U-Boot中使用以上三条命令,将名为test.yaffs的Yaffs文件系统镜像下载到内存中,然后擦除一块FLASH空间,最后用Nand Write.yaffs命令将其写入NAND FLASH。烧写完毕后会提示:
Writing data at 0xd67200-100%complete.
3663264 bytes written:OK
另外,由于没有使用ECC,烧写过程中会有大量如下提示:
Writing data without ECC to NAND_FLASH is not recom-mended
事实上,ECC数据在生成Yaffs镜像时已经包含在镜像里,因此这里的提示并没有关系。在drivers/nand/nand_basec.c文件中,将nand_write_page函数中case NAND_ECC_NONE:语句分支中的printk函数注释掉即可消除此提示。
3 Yaffs文件系统的性能
在实际使用中,一般CPU的运行速度远大于FLASH的读写速度,所以yaffs文件系统的读写速度主要由具体FLASH芯片的读写时间延迟来决定。
对于常使用的Yaffs 2,写操作的速度为1.5~4.5 MB/S,读操作的速度为7.6~16.7 MB/S,删除操作为7.8~62.5 MB/s,垃圾回收为2.1~7.7 MB/s。由于一般嵌入式系统数据交换量不大,所以该文件系统完全能够满足一般实时性操作的要求。
此外,作为日志型文件系统,Yaffs文件系统能够有效地保护数据完整性,避免系统掉电等情况对数据产生的破坏。同时,与其他FLASH文件系统相比, Yaffs文件系统的实现给NAND型FLASH带来了很多优化,在速度、内存占用以及能耗等方面都有更好的表现。
4 结 语
这里在分析Yaffs文件系统基本结构的基础上,通过为U-Boot已有命令添加新的参数,实现了U- Boot读写Yaffs文件系统镜像的支持。最后通过一个简单试验进行了验证。结果表明,烧写入FLASH中的文件系统镜像可以被嵌入式Linux等操作系统的内核挂载使用。方便了嵌入式系统的Yaffs根文件系统镜像的创建和调试。