1. ubi 和yaffs文件系统的区别
近日,阅读著名通讯半导体公司——博通公司(broadcom)的资料时,发现他们提供的linux系统中使用了一种名为ubi的文件系统。怀着好奇心,在网上搜索下ubi文件系统的资料。网上关于ubi文件系统的介绍,大多数是华清远见刘洪涛老师所写的文章。该文章主要介绍了ubi文件系统产生的背景和用法。不过,本文将从一个认识的角度来了解ubi文件系统。一、 UBI/UBIFS产生背景FLASH具有的逗先擦除再写入地、坏块、逗有限的读写次数地等特性,目前管理FLASH的方法主要有:1、 采用MTD+FTL/NFTL(flash 转换层/nand flash转换层)+ 传统文件系统,如:FAT、ext2等。FTL/NFTL的使用就是针对FLASH的特有属性,通过软件的方式来实现日志管理、坏块管理、损益均衡等技 术。但实践证明,由于知识产权、效率等各方面因素导致本方案有一定的局限性。2、采用硬件翻译层+传统文件系统的方案。这种方法被很多存储卡产品采用,如:SD卡、U盘等。这种方案对于一些产品来说,成本较高。3、采用MTD+ FLASH专用文件系统,如JFFS1/2,YAFFS1/2等。它们大大提高了FLASH的管理能力,并被广泛应用。JFFS2、YAFFS2等专用文件系统也存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等。在此背景下内核加入了UBI文件系统的支持。二、UBI/UBIFS简单介绍由于超大容量Nand Flash的普及,YAFFS等皆无法再去控制Nand Flash的空间,于是在2006年由IBM与Nokia的工程师Thomas Gleixner,Artem Bityutskiy设计开发了UBI及其UBIFS文件系统,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。UBIFS通过子系统UBI处理与MTD device之间的动作。与JFFS2一样,UBIFS 建构于MTD device 之上,因而与一般的block device不兼容。其中,UBI是一种类似于LVM的逻辑卷管理层。主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等。而UBIFS是一种基于UBI的FLASH日志文件系统。一句话解读就是,UBIFS及其使用的UBI子系统,是一种用在大容量flash上的文件系统。三、UBI/UBIFS的特点
2. 嵌入式的文件系统是什么意思 NFS和yaffs的区别、
嵌入式的文件系统是所有嵌入式系统所应用的文件系统。
大多数嵌入式系统采用了Linux。
嵌入式系统对文件系统的要求
要求文件系统在频繁的文件操作(例如,新建,删除,截断)下能够保持较高的读写性能,要求低碎片化。
日志文件系统(XFS,ReiserFS,Ext3等)能保持数据的完整性,但消耗过多系统资源的弱点使之不能成为嵌入式系统中的主流应用。并且这些都是专门为硬盘这类的存储设备优化,对于flash这类的存储介质并不适用。
嵌入式文件系统的载体是以Flash为主的存储介质,Flash的擦除次数是有限的,所以为了延长Flash的使用寿命,应该尽量减少对Flash的写入操作。
嵌入式文件系统的载体是以Flash为主的存储介质,Flash的擦除次数是有限的,所以为了延长Flash的使用寿命,应该尽量使对Flash的写入操作均匀分布在整个Flash上。
NFS是Net File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,它允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。
YAFFS(Yet Another Flash File System)是第一个专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备;并且是在GPL(General Public License)协议下发布的,可在其网站免费获得源代码。
3. 嵌入式Linux系统启动时,YAFFS2文件系统坏块问题
跟坏块没关系首先看一下内核配置支持jffs2 yaffs2还有两个文件系统制作是否成功uboot bootarg 参数是否配对想修复坏区很简单在u-boot 下命令 nand scrub 不过u-boot 就没了坏区不多的话 修复意义不大
4. [讨论]关于使用EXT2,EXT4文件系统,为什么没有用yaffs2
9# hanhan624624 帮顶。也有这个困惑,为什么有的nand设备还能直接用ext4. 期待大牛的回答。
5. 如何让kernel支持yaffs2 文件系统
1。修改内核源码根目录下的Makefile文件#ARCH ?= arm#CROSS_COMPILE ?=arm-linux-2。修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息。这里的分区一定要和你的bootloader的一致,你可以参考smdk_default_nand_part[]这个数据结构的做法。3。还是2中用到的文件,修改static struct s3c2410_platform_nand smdk_nand_info = { .tacls = 0, .twrph0 = 30, //这 三个数字要改的 以前是20 60 20 .twrph1 = 0, .nr_sets = ARRAY_SIZE(smdk_nand_sets), .sets = smdk_nand_sets,};4。修改drivers/mtd/nand/s3c2410.c中s3c2410_nand_init_chip函数的NAND_ECC_SOFT为NAND_ECC_NONE。5。晶振频率:修改arch/arm/mach-s3c2440/mach-smdk2440.c static void __init smdk2440_map_io(void){ s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_clocks(12000000);//改成和你的一样 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));}6。添加对yaffs2文件系统的支持:下载yaffs2的源码包,解压后进入其中,其加入Linux内核(打补丁的方式) #cd yaffs2 #./patch-ker.sh c $you_kernel_path(你的内核代码的目录)7。配置内核 先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程 # cp arch/arm/configs/s3c2410_defconfig .config # make menuconfig1.General setup —> [*] Configure standard kernel features (for small systems) —> 2. System Type —-> [*] S3C2410 DMA support [*] Support ARM920T processor S3C2410 Machines —> [*] SMDK2410/A9M2410 S3C2440 Machines —> [*] SMDK2440 [*] SMDK2440 with S3C2440 CPU mole3.Boot options —> 将 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string改成 (noinitrd root=/dev/mtdblock2 console=ttySAC0,115200 init=/linuxrc )这里要特别注意root=/dev/mtdblock2 这个参数,mtdblock2是你的根文件系统所在的位置,和你在bootloader的分配有关,当然也和上述2。步骤的密切相关。不行的话多试几次。4.[*] Enable loadable mole support —> [*] Mole unloading [*] Automatic kernel mole loading 选择这两个,剩下的可以去掉5.Device Drivers —> <*> Memory Technology Device (MTD) support —> [*] MTD partitioning support <*> NAND Device Support —> <*> NAND Flash support for S3C2410/S3C2440 SoC [ ] S3C2410 NAND Hardware ECC //这个要去掉6.File systems—–> Miscellaneous filesystems —> <*>YAFFS2 file system support7.make zImage
6. FAT JFFS YAFFS文件系统的区别是什么
FAT: DOS,Windows最初使用的文件系统。后换为FAT32,NTFS.JFFS: Linux使用的一种文件系统。可支持读写。YAFFS:Linux使用的一种文件系统。可支持读写。其实文件系统还有很多,例如Linux常有的还有:ext2,ext3…
7. YAFFS2文件系统只读是怎么造成的
我是自己重新移植的一遍文件系统,串口这块我没改它,源代码是怎么就怎么的,我主要就是测试U-BOOT+KERNEL+YAFFS2文件系统启动,结果就出现了只读现象,其它的设备方面我还没做什么移植需要我这边的源代码附件包供版主测试么?U-BOOT和KERNEL和文件系统都是我重新做的,用于TQ2440上运行网上看到说KERNEL默认挂载是只读的,我在想是不是这里的问题,请问怎么才能更改挂载文件系统时的读写权限呢?另外也不像某篇网友所诉,他出现只读现象是因为内核分区未按其页大小的倍数来分,从而造成只读,我检查过我这个,也不是这个问题,我是成倍数的。你的文件系统属性是只读的。而且你没有s3c2410_serial0这个设备节点. 你先检查一下你的串口设备驱动
8. ntfs 和 yaffs2文件系统在掉电保护方面有什么区别
FAT: DOS,Windows最初使用的文件系统。后换为FAT32,NTFS.JFFS: Linux使用的一种内文件系统。可支持读容写。YAFFS:Linux使用的一种文件系统。可支持读写。其实文件系统还有很多,例如Linux常有的还有:ext2,ext3…
9. windows操作系统如何支持yaffs文件系统
1、修改内核源码根目录下的Makefile文件#ARCH ?= arm#CROSS_COMPILE ?=arm-linux-2、修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改Nand Flash的分区信息和Nand Flash的硬件信息。这里的分区一定要和你的bootloader的一致,你可以参考smdk_default_nand_part[]这个数据结构的做法。3、还是2中用到的文件,修改static struct s3c2410_platform_nand smdk_nand_info = {.tacls = 0,.twrph0 = 30, //这 三个数字要改的 以前是20 60 20.twrph1 = 0,.nr_sets = ARRAY_SIZE(smdk_nand_sets),.sets = smdk_nand_sets,};4、修改drivers/mtd/nand/s3c2410.c中s3c2410_nand_init_chip函数的NAND_ECC_SOFT为NAND_ECC_NONE。5、晶振频率:修改arch/arm/mach-s3c2440/mach-smdk2440.cstatic void __init smdk2440_map_io(void){s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));s3c24xx_init_clocks(12000000);//改成和你的一样s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));}6、添加对yaffs2文件系统的支持:下载yaffs2的源码包,解压后进入其中,其加入Linux内核(打补丁的方式)#cd yaffs2#./patch-ker.sh c $you_kernel_path(你的内核代码的目录)7、配置内核先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程# cp arch/arm/configs/s3c2410_defconfig .config# make menuconfig1.General setup —>[*] Configure standard kernel features (for small systems) —>2. System Type —->[*] S3C2410 DMA support [*] Support ARM920T processorS3C2410 Machines —>[*] SMDK2410/A9M2410S3C2440 Machines —>[*] SMDK2440[*] SMDK2440 with S3C2440 CPU mole3.Boot options —>将 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string改成 (noinitrd root=/dev/mtdblock2 console=ttySAC0,115200 init=/linuxrc )这里要特别注意root=/dev/mtdblock2 这个参数,mtdblock2是你的根文件系统所在的位置,和你在bootloader的分配有关,当然也和上述2。步骤的密切相关。不行的话多试几次。4.[*] Enable loadable mole support —>[*] Mole unloading[*] Automatic kernel mole loading选择这两个,剩下的可以去掉5.Device Drivers —><*> Memory Technology Device (MTD) support —>[*] MTD partitioning support<*> NAND Device Support —><*> NAND Flash support for S3C2410/S3C2440 SoC[ ] S3C2410 NAND Hardware ECC //这个要去掉6.File systems—–>Miscellaneous filesystems —><*>YAFFS2 file system support7.make zImage
未经允许不得转载:山九号 » yaffs文件系统|ubi 和yaffs文件系统的区别