1、NAND一般以存储数据为主,晶片容量大,容量可以达到2Gb甚至更大,NAND的读取是以一次读取一块的形式来进行的,通常一次读取512个字节,采用这种技术的Flash比较廉价。
2、NOR采用内存的随机读取技术,允许随机寻址,不需要纠错以及较高的每比特成本。如果我们只是利用闪存来存储小量代码,那无疑NOR是非常合适的。NOR 的传输效率(注意是效率,并不是速度)很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能(因为NOR和内存一样基本存储单元是字节)。NOR的一大特点是应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。
3、EMMC = NAND + 控制器 + 标准封装接口。功能包括存储以及取代NOR Flash的开机功能,不需要处理NAND Flash相容性和管理问题。
在LINUX系统中有一个重要的概念:一切都是文件。目前大多Linux发行版本默认使用的文件系统一般是ext4,另外,新一代的btrfs也呼之欲出。
用户层(目录树)
内核层(虚拟文件系统-》常见文件系统)
底层驱动(MTD字符设备、MTD块设备-》MTD设备驱动)
硬件层(NOR FLASH、NAND FLASH、RAM)
VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。
不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。
1、JFFS文件系统主要用于NOR型闪存
2、yaffs/yaffs2自带NAND芯片的驱动
3、Cramfs一种只读的压缩文件系统。
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
Ramdisk、ramfs/tmpfs。
NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。
管理磁盘分区时经常会使用 df (disk free) 命令,df -k 命令可以用来查看磁盘空间的使用情况(以千字节计)。
查看当前系统所挂载的硬件设备可以使用 mount 命令。例如,
mount -t file_system_type device_to_mount directory_to_mount_to
可以通过 umount 命令来卸载文件系统。
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