基于nand flash的文件系统的整理

一、            Nandflash简介

基本概念:flash芯片、block、page、附加页

1.1结构

Flash芯片的擦除以块为单位写以页为单位。在每个flash芯片中包括非常多的块,同款芯片上每个块的大小相同(2MB、4MB..),在每个块上包含多个页,每个页大小相同。在每个页面后都跟随着一个附加页,用来对对应页面进行标记或者对页上的数据进行校验,页面通常的大小为2Kb+64byte、512byte+32byte、1024byte+64byte等。结构如图1.1所示:


图1.1,nand flash结构示意图

1.2   特点(对于flash的研究主要是针对其特点优化其性能或者克服其缺点)

1.        Nand flash不是通常意义上的块设备,块设备的特点是可以对数据块进行读、写操作(如磁盘,文件系统等),但是对于Nand flash来说有三种操作分别是:读、写、擦除。只有对已擦除的块才能进行写操作。所以为了使其兼容传统的硬件和系统,需要对其进行特殊处理;

2.        当一个闪存处在干净状态时(被擦除过,但是还没有写操作发生),这块flash上的每一位(bit)都是逻辑1;

3.         nand flash不可以片上执行,但是存储密度大,因此常作为存储介质使用;

4.         Nand flash是按位寻址的,意味着可以从一块闪存的任意偏移地址读数据;

5.         闪存的使用寿命是有限的,具体来说,闪存的使用寿命是由擦除块的最大可擦除次数来决定的。超过了最大可擦除次数,这个擦除块就成为坏块(bad block)了。因此要避免某个擦除块被过度使用,以至于先于其他擦除块变成坏块,应该在尽量少影响性能的前提下,使擦写操作均匀分布在每个擦除块上,叫做损耗均衡(wear leveling)。

 

二、文件系统简介

文件系统是对于文件和存储空间的组织和管理,并对内核提供调用接口。主要是对数据结构的设计。在一定程度上类似数据库ACID(原子性、一致性、隔离性、持久性)的设计理念。

2.1文件系统结构

传统文件系统ext2与基于flash设备的文件系统在系统中的位置对比图。


图2.1各文件系统对比图

2.2 目前成熟的可以使用在非易失存储器上的典型的文件系统

为了在掉电或者系统崩溃情况数据的一致性,很多文件系统都增加了日志的功能。日志文件系统(journaling file system)一般执行步骤如下:

1.        预备:当系统要写入一个文件时,会现在日志记录块中记录某个文件准备要写入的信息;

2.        实际写入:开始写入文件的权限与数据;开始更新meta data的数据;

3.        结束:完成数据与meta data的更新后,在日志记录块中完成该文件的记录

在日志系统的帮助下,万一的记录过程中发生了问题,那么系统只需要检查日志记录块就可以知道哪个文件发生了问题,针对该问题做一致性检查即可,不必对整个文件系统做检查,从而达到快速修复文件系统的目的。

 

2.2.1  Ext2\ext3\ext4文件系统

Ext2可以通过FTL实现对flash的支持,FTL可以将闪存flash模拟成磁盘结构,从而实现对基于磁盘的文件系统的支持,但是效率比较低。Ext2文件系统结构如图2.2.1.1所示


图2.2.1.1 ext2文件系统结构图

各名词解释如下:

1.        超级块(super block):记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息;

2.        i节点(inode):记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

3.        block:实际记录文件的内容,若文件太大时会占用多个block。

由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。Inode索引结构如

  • 13
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于FPGA的NAND Flash读写是一种常见的存储器读写方式。FPGA通过控制NAND Flash的控制信号和数据信号,实现对NAND Flash的读写操作。这种读写方式具有速度快、可靠性高、容量大等优点,被广泛应用于嵌入式系统、存储器控制器等领域。 ### 回答2: FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,具有高度可定制性和可重构性,由于它可以实现复杂的算法和处理器实现,因此可以广泛应用于数字电路设计和嵌入式系统。 NAND Flash是一种非易失性存储器,一般应用于嵌入式系统中以提供数据存储。在使用FPGA来读写NAND Flash时,需要进行以下几个步骤: 1、初始化FPGA 和 NAND Flash: 在使用FPGA读写NAND Flash之前,需要对FPGA进行初始化。这包括设置引脚、时钟、控制器和其他必要的组件。此外,还需要初始化NAND Flash,包括读写保持时间、NAND Flash interface protocol等。 2、检测NAND Flash状态: 在读写NAND Flash之前,需要首先检测NAND Flash的状态,以确认其是否可用。如果NAND Flash不可用,则需要重新初始化NAND Flash。 3、执行读NAND Flash操作:FPGA读取NAND Flash是通过控制器来完成的。控制器通过读地址信号和控制信号到达NAND Flash。读方案实际上是从NAND Flash中读取块,页面和数据。在读过程中,FPGA通过读取NAND Flash的请求来检索块的数据。 4、执行写NAND Flash操作:写NAND Flash是通过控制器来完成的。FPGA需要将数据和页面地址发送到控制器,然后控制器将数据写入NAND Flash中。在写入期间,必须确保数据的正确性和完整性,即将相应的错误检查和纠正操作应用于数据。 5、结束操作:最后,读写操作完成后,必须对FPGA和NAND Flash进行适当的清理,以确保下一次正常操作。 总之,使用FPGA读写NAND Flash是一项复杂的任务,需要仔细考虑并遵循正确的设计程序。使用FPGA可实现高速读写操作,增加系统的快速响应能力,提高系统的性能。 ### 回答3: 基于FPGA的NAND Flash读写技术,是指在FPGA芯片上通过内部逻辑电路实现对NAND Flash的控制和数据传输。这种技术在嵌入式系统、存储器设计和其他领域中应用广泛,并且具有许多优势。 首先,基于FPGA的NAND Flash读写技术可以提高读写速度。由于FPGA芯片本身就是一种高性能逻辑芯片,能够在毫秒级别内完成复杂的计算和处理。同时,该技术采用并行传输方式,大大提高了数据传输速度。 其次,此技术可以简化传统存储器控制电路的设计和系统集成。NAND Flash的控制需要大量的硬件资源,如地址线、数据线、控制线等,而FPGA则具有可编程性,可以按照需要灵活配置与重新布线,因此可以有效地减少系统的复杂度和成本。 第三,基于FPGA的NAND Flash读写技术具有较高的可靠性。由于FPGA芯片内部的逻辑电路可以通过同步时钟方式进行控制和管理,使得数据传输更为准确可靠。同时,FPGA芯片本身还具有自我监测与自我调整的能力,能够及时检测和修复系统中存在的故障。 总之,基于FPGA的NAND Flash读写技术在性能、灵活性和可靠性等方面都具有许多优势,并且已广泛应用于嵌入式系统、存储器设计、以及其他领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值