Linux文件系统和FLASH

一、基本知识

1.1、NOR Flash、NAND Flash和EMMC Flash

1、NAND一般以存储数据为主,晶片容量大,容量可以达到2Gb甚至更大,NAND的读取是以一次读取一块的形式来进行的,通常一次读取512个字节,采用这种技术的Flash比较廉价。

2、NOR采用内存的随机读取技术,允许随机寻址,不需要纠错以及较高的每比特成本。如果我们只是利用闪存来存储小量代码,那无疑NOR是非常合适的。NOR 的传输效率(注意是效率,并不是速度)很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能(因为NOR和内存一样基本存储单元是字节)。NOR的一大特点是应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。

3、EMMC = NAND + 控制器 + 标准封装接口。功能包括存储以及取代NOR Flash的开机功能,不需要处理NAND Flash相容性和管理问题。

1.2、文件系统

     在LINUX系统中有一个重要的概念:一切都是文件。目前大多Linux发行版本默认使用的文件系统一般是ext4,另外,新一代的btrfs也呼之欲出。

用户层(目录树)

内核层(虚拟文件系统-》常见文件系统)

底层驱动(MTD字符设备、MTD块设备-》MTD设备驱动)

硬件层(NOR FLASH、NAND FLASH、RAM)

1.3、虚拟文件系统(VFS)

     VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。

二、文件系统

Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

2.1、 基于FLASH  

       不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

2.1.1 一般文件系统   

 1、JFFS文件系统主要用于NOR型闪存

     2、yaffs/yaffs2自带NAND芯片的驱动

     3、Cramfs一种只读的压缩文件系统。

2.1.2、UBIFS文件系统

       UBIFS是UBI file system的简称,用于裸的flash设备,作为jffs2的后继文件系统之一。UBIFS通过UBI子系统处理与MTD设备之间动作。UBIFS文件系统更适合MLCNAND FLASH。需要注意的是UBIFS并不是为SSD,MMC,SD,Compact Flash等之类的基于flash的存储设备,其是针对于裸flash设备。

       UBIFS通过子系统UBI 处理与MTD device之间的动作。与JFFS2 一样,UBIFS 建构于MTD device 之上,而与一般的block device不兼容。它在设计与性能上均较YAFFS2、JFFS2更能适用于MLC NAND FLASH上面。

1、配置内核支持UBIFS

2、将一个MTD分区4挂载为UBIFS格式 
● flash_eraseall /dev/mtd4 //擦除mtd4 
● ubiattach /dev/ubi_ctrl -m 4 //和mtd4关联 
● ubimkvol /dev/ubi0 -N rootfs -s 100MiB //设定volume 大小(不是固定值,可以用工具改变)及名称 
● mount -t ubifs ubi0_0 /mnt/ubi或mount -t ubifs ubi0:rootfs /mnt/ubi 

2.2、基于RAM

Ramdisk、ramfs/tmpfs。

2.3、NFS

NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。

三、常见命令

3.1、df命令

管理磁盘分区时经常会使用 df (disk free) 命令,df -k 命令可以用来查看磁盘空间的使用情况(以千字节计)。

3.2、挂载文件系统

查看当前系统所挂载的硬件设备可以使用 mount 命令。例如,

mount -t file_system_type device_to_mount directory_to_mount_to

可以通过 umount 命令来卸载文件系统。

3.3、软链接和硬链接

ln命令:创建硬链接。ln -s命令可以创建软链接

四、参考网址

https://blog.csdn.net/wc_wc_8613/article/details/86636830

https://www.cnblogs.com/alantu2018/p/8461749.html

https://blog.csdn.net/kunkliu/article/details/78464205

你可能感兴趣的:(Linux下编程)