物联网这么火爆,介绍几种嵌入式文件系统
2016年物联网应用越来越受到国内外开发者的关注,一方面说明物联网行业应该具有比较大的潜力,另一方面传统的市场热点正在逐渐趋于成熟和饱和,所有人都期待有一些新的应用可以成为下一个爆发的增长点。
但,无论媒体如何的包装物联网行业,归根结底无联网还是以嵌入式系统为基础的一类应用。
存储系统是嵌入式系统的“基石”
在嵌入式系统中,存储器主要用途是存放Bootloader, 操作系统和各类应用程序文件,以及各类数据文件比如图片,音视频等。booterloader一般存储在NAND或eMMC的最前面几个block,通常不需要特别的文件系统进行管理。除了bootloader外的其他部分,通常会被格式化成某些特定的文件系统,方便操作系统进行管理。
下面是linux的软件结构,可以看到文件系统处于哪一部分。
不同于传统机械硬盘,NAND或者eMMC应该使用更适合Flash的文件系统:
- JFFS/JFFS2:
JFFS是linux上第一个针对于闪存开发的文件系统。初期只针对于NOR Flash,后来在JFFS2上也开始支持NAND Flash。JFFS文件系统是一种log-structured的文件系统,其把flash看作一组circular log,并且自带wear-levelling功能。JFFS最大的问题在于对于flash的擦出操作太过频繁,比其他文件系统更容易耗尽flash的擦写寿命。
- YAFFS:
YAFFS是2002年推出的,针对NAND flash开发的文件系统。YAFFS/YAFFS2在RAM中建立并维护一个tree,用于代表NAND的block。YAFFS最大的特点在于mount或者umount的时间非常短,这是其最大的优势。
- UBIFS:
UBIFS中UBI的全称是Unsorted Block Images,由NOKIA的工程师开发,并专门针对NAND Flash。不同于其他文件系统,UBIFS并不工作在block device上,而是直接作用于raw flash上。这样,UBIFS中就自带逻辑到物理块的映射的功能,并且其自带的wear-levelling可以在整个flash上进行。
- LogFS:
LogFS是linux上最近兴起的一类文件系统,其在flash中创建并管理了一个B+ tree用于garbage collection,即垃圾回收,这样其比较节省RAM的使用。这对于大容量的NAND Flash具有比较大的价值。
- ext4:
ext4是如此大名鼎鼎。其应用于PC,Server等computing应用。但在手机应用中,很多时候eMMC上的分区都会被格式成为ext4格式。
目前常用于嵌入式系统的一些型号如下:
TC58NVG0S3HTA00: 东芝128MByte NAND
TC58NVG1S3HTA00: 东芝256MByte NAND
TC58NVG2S0HTA00: 东芝512MByte NAND
THGBMHG6C1LBAIL: 东芝 8GB eMMC
SDINDR-8G-P:闪迪 8GB eMMC
SDINDR-16G-P: 闪迪16GB eMMC
本文转载自存储之家 原文地址