嵌入式Linux系统的闪存设备和文件系统学习纪要

嵌入式Linux系统的闪存设备和文件系统学习纪要

Linux下的文件系统结构如下:

================================================================================
NAND Flash 是一种非易失性存储器(Non-Volatile Memory),常用于闪存设备和固态硬盘(SSD)中。以下是几种常见的 NAND Flash 种类:

1. SLC(Single-Level Cell):SLC NAND Flash 是最早的 NAND Flash 类型,每个存储单元只能存储一个比特(0 或 1)。它具有较高的耐久性、较低的读取延迟和较高的写入速度,但成本较高。

2. MLC(Multi-Level Cell):MLC NAND Flash 每个存储单元可以存储多个比特,通常是两个或四个比特。相比于 SLC,MLC 具有更高的存储密度,但耐久性较低,读取延迟和写入速度也相对较慢。

3. TLC(Triple-Level Cell):TLC NAND Flash 每个存储单元可以存储三个比特。TLC 具有更高的存储密度,但相对于 MLC,它的耐久性更低,读取延迟和写入速度更慢。

4. QLC(Quad-Level Cell):QLC NAND Flash 每个存储单元可以存储四个比特。QLC 具有更高的存储密度,但相对于 TLC,它的耐久性更低,读取延迟和写入速度更慢。

随着技术的进步,新的 NAND Flash 类型不断涌现,如五级单元(Penta-Level Cell,PLC)和六级单元(Hexa-Level Cell,HLC),它们进一步提高了存储密度,但也伴随着更低的耐久性和较慢的读写速度。选择适合特定应用需求的 NAND Flash 类型时,需要综合考虑存储容量、性能要求和成本等因素。

================================================================================
eMMC(embedded MultiMediaCard)是一种集成了闪存存储器和控制器的嵌入式存储解决方案。它通常用于移动设备、嵌入式系统和消费电子产品中。以下是几种常见的 eMMC 种类:

1. eMMC 4.5:eMMC 4.5 是较早版本的 eMMC 标准,提供了最基本的存储功能和性能。它支持高达52 MHz的时钟频率和8位数据总线宽度。

2. eMMC 5.0:eMMC 5.0 是较新的 eMMC 标准,相比于 4.5 版本有显著的改进。它引入了 HS400 模式,支持高达200 MHz的时钟频率和8位或4位数据总线宽度,从而提供更快的读写速度。

3. eMMC 5.1:eMMC 5.1 在 5.0 的基础上进行了进一步改进。它增加了命令队列和混合写入模式等特性,提高了性能和效率。

4. eMMC 5.1 Plus / eMMC 5.1 Turbo:这些术语通常用来描述经过优化的 eMMC 5.1 存储器,具有更高的性能和速度。

5. eMMC 5.2:eMMC 5.2 是最新的 eMMC 标准,引入了一些新功能和改进。它支持更高的时钟频率、更大的存储容量和更快的数据传输速度。

需要注意的是,不同厂商可能会对 eMMC 进行定制和优化,因此具体的性能和特性可能会有所差异。选择适合特定应用需求的 eMMC 版本时,需要考虑存储容量、读写速度、可靠性和成本等因素。

================================================================================
UBIFS

无序区块镜像文件系统(Unsorted Block Image File System, UBIFS)是用于固态存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一。

开发目的
2006年,UBIFS由IBM与Nokia的工程师Thomas Gleixner,Artem Bityutskiy所设计,专门为了解决MTD(Memory Technology Device)所遇到的瓶颈。由于Nand Flash容量的暴涨,YAFFS等皆无法操控大的Nand Flash空间。UBIFS通过子系统UBI处理与MTD device之间的动作。与JFFS2一样,UBIFS 建构于MTD之上,因而与一般的块设备不兼容。

系统优点
UBIFS在设计与性能上均较YAFFS2、JFFS2更适合MLC NAND FLASH。例如:UBIFS 支持 凑数(write-back), 其写入的数据会被缓存起来, 直到有必要写入时才写到flash, 这样大大降低分散小区块数量,并提高读写效率。UBIFS文件系统目录存储在flash上,UBIFS 挂载时不需要扫描整个存储器来重新创建文件目录。支持实时压缩,而且可选择性压缩部份文件。另外UBIFS使用日志(journal),可减少对flash index的更新频率。

UBIFS 是 Nokia N900 智能手机上的默认文件系统。

以下是关于 UBIFS 的一些要点:

1. 特点:UBIFS 具有良好的可靠性和耐久性,适用于闪存设备的特殊特性。它支持动态扩展和压缩,能够有效地管理存储空间。UBIFS 还具有快速启动时间和低内存占用。

2. 日志型文件系统:UBIFS 是一个基于日志的文件系统,它使用日志来记录文件系统的操作和变化。这种设计可以提供更好的数据完整性和恢复能力,在系统异常断电或崩溃时能够快速恢复文件系统的一致性。

3. 块级别存储:UBIFS 以块为单位进行存储,而不是传统的文件级别存储。每个块都包含多个逻辑页,这样可以减少寻址开销并提高读写性能。

4. 压缩和去重:UBIFS 支持数据压缩和去重功能,可以显著减小存储空间的占用。通过压缩和去重,可以提高存储效率并延长闪存设备的寿命。

5. 可靠性和错误检测:UBIFS 具有强大的可靠性机制,包括校验和、CRC 错误检测和修复、写入日志等。这些机制可以帮助检测和纠正数据损坏或错误,并提供更高的数据完整性。

总之,UBIFS 是一种专为闪存设备设计的高性能文件系统,它通过日志和块级别存储等特性提供了可靠性、耐久性和高效性能。它在嵌入式系统和固态硬盘等应用中被广泛使用。

================================================================================
JFFS

JFFS,Journalling Flash File System的缩写,中文释义:闪存设备日志型文件系统。

简介
Journalling Flash File System(闪存设备日志型文件系统,JFFS)最初是由瑞典的 Axis Communication AB 开发。

主要作用
其目的是作为嵌入式系统免受宕(dang)机和断电危害的文件系统。然而用于NAND设备上JFFS已被JFFS2大量取代。

JFFS2

JFFS2(Journaling Flash File System 2)是一种用于闪存设备的文件系统,它是 JFFS(Journaling Flash File System)的改进版本。

JFFS2的全名为JournallingFlashFileSystemVersion2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。

除了提供具有断电可靠性的日志结构文件系统,JFFS2还会在它管理的MTD设备上实现“损耗平衡”和“数据压缩”等特性。

JFFS2 具有以下特点:

1. 压缩支持:JFFS2 支持对数据进行压缩,可以减少存储空间的使用,并提高读写性能。

2. 日志结构:JFFS2 使用日志结构来记录文件系统的变化,以确保数据的完整性和可靠性。

3. 块擦除:JFFS2 以块为单位进行擦除操作,而不需要整个文件系统的擦除和重写。这使得 JFFS2 在写入大量小文件时更加高效。

4. 动态节点分配:JFFS2 允许在运行时动态创建和删除文件和目录节点,提供了更灵活的文件系统管理。

5. 适用于小容量设备:JFFS2 针对闪存设备的特性进行了优化,适用于小容量的闪存设备。

6. 低内存占用:JFFS2 对内存的需求相对较低,适合资源受限的嵌入式系统。

尽管 JFFS2 在过去被广泛使用,但随着闪存技术的发展,现代文件系统如UBIFS和YAFFS等已经取代了 JFFS2,并提供更好的性能和可靠性。因此,在选择文件系统时,建议考虑使用更先进的文件系统来满足当前的需求。

================================================================================
YAFFS2

YAFFS(Yet Another Flash File System)是由Aleph One公司所发展出来的NAND flash 嵌入式文件系统。

在YAFFS中,最小存储单位为一个页(Page),文件内的数据是存储在固定512 bytes的页中,每一页亦会有一个对应的16 bytes的Spare(OOB,Out-Of-Band)。YAFFS采用树形结构(Tree Node Structure),由多个树节点(Tree Node,Tnode)所组成,树节点又分成内部节点(Internal Tnode)与底层树节点(Lowest Level Tree node),其中内部节点由8个指针(Pointers)所组成,底层树节点由16个入口(Entries)所组成,其时间复杂度(Time Complexity)相当于O(log N),故地址转换时间较迅速。一旦闪存(Flash Memory)挂载(mount)之时,YAFFS会为每个文件在RAM中创建一棵树, 并随时提供Chunk(即Page, 由yaffs_Object所配置),可是 YAFFS并未完全实现耗损平均技术(wear-leveling)算法,因此还是会造成部分的块(Block)过度访问。

YAFFS在将数据(Data)写入闪存时会运行垃圾回收(Garbage Collection),YAFFS 垃圾回收分成两种模式:主动模式(Aggressive Mode)及被动模式(Passive Mode), 而且找寻脏块(Dirtiest Block)(最多Invalid Chunk)及查找空块(Empty Block)都是通过线性搜索(Linear Search)的方式(JFFS2是Link List的方式)。YAFFS2不再使用非全页编程(Partial Page Programming)(YAFFS仍使用)。

应用
YAFFS2 是Aleph1的工程师Charles Manning 开发的NAND Flash 文件系统。YAFFS1和YAFFS2 主要差异还是在于PAGE 读写 size的大小,YAFFS2可支持到2K per page, 远高于YAFFS的512 Bytes, 因此对大容量NAND flash更具优势。其他与YAFFS1不同的是, YAFFS2不再写spare area, sequenceNumber 用29 bits 表示。Yaffs2还拥有YAFFS1所缺乏的SuperBlock, 因此YAFFS1严重依赖文件系统的read_super。

YAFFS 和YAFFS2 皆遵守GNU GPL开放原始码。Android 采用yaffs2作为MTD NAND flash文件系统,位于fs/yaffs2/目录下,由于循序GPL,因此源码是可以看到的。

YAFFS2 的特点:

1. 可靠性:YAFFS2 使用日志和校验和等机制来确保数据的完整性和可靠性,减少数据损坏的风险。

2. 块擦除:YAFFS2 以块为单位进行擦除操作,而不需要整个文件系统的擦除和重写。这使得 YAFFS2 在写入大量小文件时更加高效。

3. 压缩支持:YAFFS2 支持对数据进行压缩,以减少存储空间的使用,并提高读写性能。

4. 快速恢复:YAFFS2 具有快速恢复功能,可以在断电或系统崩溃后快速恢复文件系统的一致性。

5. 适用于小容量设备:YAFFS2 针对闪存设备的特性进行了优化,适用于小容量的闪存设备。

6. 低内存占用:YAFFS2 对内存的需求相对较低,适合资源受限的嵌入式系统。

YAFFS2 是一个成熟且广泛应用的闪存文件系统,特别适用于嵌入式系统和其他资源受限的设备。它提供了可靠性、高效性和适应性,使得数据在闪存设备上的存储和访问更加可靠和高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中期科技:智慧公厕打造智能化城市设施,提升公共厕所管理与服务体验

智慧公厕是利用先进的技术和创新的解决方案来改进公厕的设施和管理。借助物联网、互联网、5G/4G通信、人工智能、大数据、云计算等新兴技术的集成,智慧公厕具备了一系列令人惊叹的应用功能。从监测公厕内部人体活动状态、人体存在状态,到空气质量情况、环…

【k8s】pod集群调度

调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。…

Go语言并发控制:原理与实践

摘要: 本文将深入探讨Go语言的并发控制机制,包括goroutine、channel和sync等关键概念。我们将通过理论阐述和案例分析,揭示Go语言在并发编程中的优势和挑战,并介绍几种常见的并发控制策略。通过本文的学习,你将掌握Go…

注册中心ZK、nameServer、eureka、Nacos介绍与对比

前言 注册中心的由来 微服务架构是存在着很多跨服务调用,每个服务都存在着多个节点,如果有多个提供者和消费者,当提供者增加/减少或者消费者增加/减少,双方都需要感知发现。所以诞生了注册中心这个中间件。 市面上有很多注册中心,如 Zookeeper、NameServer、Eureka、Na…

log4j 日志的简单使用

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 前言 System.out.println("这是我的测…

2023年云栖大会来啦!!(2022年就已经深受震撼)

2023云栖大会已经开始啦,让我们来回顾回顾去年的云栖大会吧。 云栖大会是中国阿里巴巴集团每年举办的一项技术盛会,前身可追溯到2009年的地方网站峰会,2011年演变为阿里云开发者大会,2015年正式更名为“云栖大会”,并且…

暴涨3倍!通过受感染 USB 窃密的事件愈发变多

2023 年上半年,Mandiant 观察到使用受感染 USB 驱动器窃取机密数据的事件至少增加了3倍。此前,Mandiant 披露了在菲律宾的一次攻击行动。本文将会介绍研究人员发现的两外两次基于 USB 驱动器的网络间谍行动。 CSDN大礼包:《黑客&网络安全…

【Verilog】7.2.1 Verilog 并行 FIR 滤波器设计

FIR(Finite Impulse Response)滤波器是一种有限长单位冲激响应滤波器,又称为非递归型滤波器。 FIR 滤波器具有严格的线性相频特性,同时其单位响应是有限长的,因而是稳定的系统,在数字通信、图像处理等领域…

Flutter框架实现登录注册功能,不连接数据库

要在Flutter框架中实现登录和注册功能,而不连接数据库,可以使用本地存储来存储用户信息。以下是一个简单的示例,演示如何使用本地存储来实现登录和注册功能。 首先,我们需要添加 shared_preferences 插件到 pubspec.yaml 文件中&…

nginx 转发数据流文件

1.问题描述 后端服务,从数据库中查询日志,并生成表格文件返回静态文件。当数据量几兆时,返回正常,但是超过几十兆,几百兆,就会超过网关的连接超时时间30秒。 时序图 这里面主要花费时间的地方在&#xff…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测…

领先实践|IDEO 最佳设计思维和策略框架

设计思维是一种以人为本的创新方法,它从人类的角度出发,考虑技术上可行和经济上可行的内容。框架可以成为实现设计思维、策略和系统设计的有用工具。本文由此展开阐述 IDEO 的最佳设计思维和策略框架。 01. 设计思维框架 1.1 设计思维过程 设计思维?是…

python3 阿里云api进行巡检发送邮件

python3 脚本爬取阿里云进行巡检 不确定pip能不能安装上,使用时候可以百度一下,脚本是可以使用的,没有问题的 太长时间了,pip安装依赖忘记那些了,使用科大星火询问了下,给了下面的,看看能不能使…

一行代码搞定禁用web开发者工具

在如今的互联网时代,网页源码的保护显得尤为重要,特别是前端代码,几乎就是明文展示,很容易造成源码泄露,黑客和恶意用户往往会利用浏览器的开发者工具来窃取网站的敏感信息。为了有效防止用户打开浏览器的Web开发者工具…

X64(64位)汇编指令与机器码转换原理

X64(64位)汇编指令与机器码转换原理 1 64位寻址形式下的ModR/M字节1.1 寻址方式1.2 寄存器编号 2 汇编指令转机器码2.1 mov rcx, 1122334455667788h2.2 mov rcx,[r8]与mov [r8],rcx2.3 mov rcx,[r8r9*2] 本文属于《 X86指令基础系列教程》之一&#xff…

HPE Compute Scale-up Server 3200服务器来了!突破算力瓶颈,护航企业数字化转型

在全球数字化步入深水区的同时,伴随AIGC的迅速发展,对计算需求的迅速增长,如何高效灵活地使用算力资源成为开发者和企业发展的关注焦点。 服务器作为重要的算力基础设施之一,能快速处理大量数据,在AI时代其市场价值愈…

网络安全方向相关课题和材料

项目介绍 搜集大量网络安全行业开源项目 项目收集的思路: 一个是关注互联网企业/团队的安全开源项目,经企业内部实践,这些最佳实践值得借鉴。 一个是来自企业安全能力建设的需求,根据需求分类,如WAF、HIDS、Git监控等。 这个收集是一个长期的过程,我在GitHub创建了这…

9.MySQL索引的操作

个人主页:Lei宝啊 愿所有美好如期而遇 目录 索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文索引的创建 删除索引 索引创建原则 索引操作 查询索引 第一种方法: show keys from 表名\G 我们了解其中几个就好。 第二种方法…

双目视觉检测 KX02-SY1000型测宽仪 有效修正和消除距离变化对测量的影响

双目视觉检测的基本原理 利用相机测量宽度时,由于单个相机在成像时存在“近大远小”的现象,并且单靠摄入的图像无法知道被测物的距离,所以由被测物的跳动导致的被测物到工业相机之间距离变化,使测量精度难以提高。 因此测宽仪需…

项目综合实训,vrrp+bfd,以及策略路由的应用

目录 一. 项目需求 二. Visio设备画图 三. 设备选型 三.vlan规划 四.Ip地址规划 五.实验拓扑图 六.配置过程及结果 项目需求 1.S1作为VLAN10的主网关和根桥,S2作为v…