延长Flash存储器使用寿命的研究

news2024/9/22 7:30:04

发布时间:2009年12月15日  

引 言

  随着嵌入式系统在数码相机、数字摄像机、移动电话、MP3音乐播放器等移动设备中越来越广泛的应用,Flash存储器已经逐步取代其他半导体存储元件,成为嵌入式系统中主要数据和程序载体。Flash存储器又称闪存,是一种可在线多次擦除的非易失性存储器NVM(Non-Volatile Memo-ry),即掉电后数据不会丢失。Flash存储器还具有体积小、功耗低、抗振性强等优点,是嵌入式系统的首选存储设备。

  世面上常用的Flash存储设备有两种:NOR Flash和NAND Flash。根据存储容量,NOR一般为1~16 MB,而NAND为8~512 MB,现在的大容量NAND已经可以达到4 GB;读取速度NOR较NAND快,写入速度NOR比NAND慢一些;擦除速度NOR需要2~5 s,而NAND仅仅需要2~5 ms;NAND的价格比NOR低很多。由于种种原因,较常用的是NAND Flash。但是由于NANDFlash的工艺不能保证NAND的存储阵列(memory ar-ray)在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。其表现是:当编程/擦除这个块时,不能将某些位拉高,这会造成页编程(page program)和块擦除(block erase)操作时的错误;相应地,反映到状态寄存器(status register)的相应位。

  总体上,坏块可以分为两大类:第一类为固有坏块,这是生产过程中产生的坏块,一般芯片原厂都会在出厂时将坏块第一个页的扩展区域(Spare Area)的第6个字节标记为不等于0xff的值;第二类为使用坏块,这是在NANDFlash使用过程中,如果块擦除或者页编程错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。为了和固有坏块信息保持一致,将新发现坏块的第一个页的扩展区域的第6个字节标记为非0xff的值。由于Flash写入数据的时候是先擦除块,这样这个块里面的数据将全部变成0xff,写入1时,该位不变;写入0时,该位由1变为0。如果将扩展区域的第6个字节标记为非0xff之后,将不可能再恢复为0xff,除非格式化有可能恢复。

  我们已经了解到,坏了的块是无法擦除和写人数据的,而在嵌入式系统中,启动的第一步就是将Flash里面的前4KB数据自动复制到SRAM里面去运行。如果仅仅Flash的第一块坏了,而导致引导程序无法下载进去,那么这个块不是不能读取数据,而是读不出我们想再要放入的数据,这样这个Flash设备就报废了。本文就这个问题作了深入的讨论,用一种基于Flash的地址重映射的方法解决这个问题。本文采用三星(Samscrag)公司的S3C2440 ARM处理器和NAND Flash存储设备K9F1208UOM讨论地址重映射的思想。

  1 S3C2440使用NAND Flash引导系统的方法

  自动启动模式顺序:

  ①复位完成;

  ②当设置为自动启动模式,NAND Flash的开始4 KB被拷贝到Steppingstone的4 KB内部缓冲器;

  ③Steppingstone映射到nGCS0;

  ④CPU开始在Steppingstone执行启动代码程序。

  由系统引导顺序看出,如果Flash的第一块坏了,那么读出的数据不一定是引导程序,这样,系统将无法启动。而在这种情况下,就只能换一块完好的Flash了,这样就造成了很大的浪费。

  2 Flash存储器的内部结构

  K9F1208UOM型Flash芯片内部存储器结构如图1所示。

  典型的NAND Flash由4 096块组成,每一个块包含32页,而每页是512+16=528字节。对于一个页,0~511字节为主存储区,即通常所说的用户可设定地址区,用来存储数据;512~527共16字节为扩展存储区,用来存储页的信息。扩展区的16字节用于描述主存储区的512字节。而对于坏块,也仅仅是将这16字节的第6字节设置为不等于0xff,来标示坏块。[page]

  在NANDFlash使用过程中可能会出现这样的问题:产生坏块或坏页、由此引发的数据丢失、对一些扇区或块的过分磨损导致NANDFlash寿命缩短等。为了能更好地使用NAND Flash,在其损坏时使损失最小化,需要一种方法,使用相同的地址可以屏蔽掉坏了的块,而指针指向好块。即使第一块坏了,还可以使用O地址去操作一个好块。

  3 Flash存储器的读取方法

  K9F11208UOM型Flash芯片内部与外部引脚关系如图2所示。对于每一个块的访问,都需要一个固定的物理地址,基于这个固定的物理地址来操作Flash存储器,在对块进行操作的时候,一个块地址对应一个块,如果这个块坏了,那么这个地址的存在就没有意义了。就像ARM芯片在引导的时候,需要复制Flash的前4 KB的数据,这样需要固定块的数据。如果这个块坏了,系统将无法引导。

  下面通过地址重映射的方法,即在Flash固件里面加入一个地址重映射的区域来解决这一问题。

  4 基于地址重映射的读取方法

  在实现地址重映射的时候,可以从块逻辑地址O开始,查看相对应的物理块。如果损坏,将地址从最后一个开始向前指,而相应的逻辑块被标示为坏块。例如图3,物理块0损坏,逻辑块地址0指向物理块4095的地址,而逻辑块地址4095被标示为坏块。可以看出,即使块0掼坏,仍然可以通过逻辑地址O进行操作,其内部的变化,并不会影响外部的使用。唯一不同的是,Flash的整体空间变小了。不过即使这样,也不会像以前那样,第一块坏了,就去换一个Flash。

  5 性能分析

  很明显,在数据读取的时候增加了一步地址重映射的计算。这样使整体性能会略微下降。下面分析一下加入地址重映射之后的性能影响(这里仅仅分析数据的读取性能,因为对Flash操作最多的是数据的读取,用户使用时也是读取最多)。[page]

  地址重映射是根据输入的地址计算操作地址的。从图4可以看出,地址重映射的计算是加在地址A25输入之后的,因其在内部操作,延时相对很小。而这个地址重映射在整个块操作之中只操作一次,且其使用时间很短,故在这里可以忽略不计,其对数据的读取操作基本没有影响。

  加入地址重映射之后,坏块全部集中到了整个Flash设备的最后。也就是说,即使这个Flash中有1024个块坏了,仍然可以当其为一个32 MB的Flash来使用,即其有效块为第0~1 023块;不像前面所描述的那样,就算只有第一个块坏了,这个Flash也就报废了。经过加入地址重映射之后的Flash,即使就剩下一块没有损坏的块了,这个Flash仍然可以作为引导系统使用。

  6 结 论

  通过在Flash内部加入地址重映射机制,对于使用Flash将会有很大的方便,并且,即使第一个块坏了,仍可以继续使用这个Flash,而无需厂家保证第一个块是好的。这样大大延长了Flash的使用寿命,仅仅在坏块达到一定数量的时候才需要换一个。

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

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

相关文章

黑马最新MybatisPlus教程!帮你实现快速开发

天下武功,唯快不破。在互联网世界中,更甚。产品更新要快、迭代要快、开发速度那必须得快。 在追求“快”的这条路上,大佬们都会使用上好的开发工具,来帮助自己实现高效开发,其中MybatisPlus便是提速的重要角色。 我们…

selenium+find_elements用法

1、假如我们遇到多个标签的class一样,比如像下面这样的 我们可以采用js语法去定位,比如: document.getElementsByClassName("ant-calendar-picker-input ant-input")[0]

【Vue3 知识第二讲】Vue3新特性、vue-devtools 调试工具、脚手架搭建

文章目录 一、Vue3 新特性1.1 重写双向数据绑定1.1.1 Vue2 基于Object.defineProperty() 实现1.1.2 Vue3 基于Proxy 实现 1.2 优化 虚拟DOM1.3 Fragments1.4 Tree shaking1.5 Composition API 二、 vue-devtools 调试工具三、环境配置四、脚手架目录介绍五、SFC 语法规范解析附…

打包——使用pyinstaller打包解决dll丢失问题

我们通常使用pyinstaller或者其对应的图形化的auto-py-to-exe来生成exe可执行文件时,换了一个电脑经常会出现报错,特别是我们当前开发大多数使用温室操作系统,而很多用户使用的是win7操作系统,这就造成了会提示缺少dll文件。如下图: 笔者总结了解决此问题的经验总结如下。…

做外贸的时候意见不被上级采纳真的错了吗

某日晚上,听了一场直播,然后有一个小伙伴在直播间里说自己很苦恼,为什么自己所有的意见老板都不采纳,都要给否决掉,感觉老板是故意针对她自己的。 事情的起因是因为这个业务员自己通过社媒开发出了一个客户&#xff0…

为什么选择搭建虚拟展会?如何搭建虚拟展会能给企业带来帮助

引言: 在当今数字化时代,宣传策略正在不断演变,企业需要跟上时代的脚步,这为企业带来了更多的机会和挑战。虚拟展会作为一种创新性的宣传手段,正逐渐受到企业的重视和青睐。 一.为什么选择搭建虚拟展会&am…

循环购模式:白酒企业的电商新机遇

白酒是中国传统的酒类,也是社交场合的必备佳品。白酒的品牌众多,竞争激烈,如何在电商市场中脱颖而出,提升销量和品牌影响力呢?循环购模式或许是一个新的答案。 循环购模式是一种新型的电商营销方式,它让消费…

day 44 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 此外,在返回的时候,由于状态234都是卖出的状态,所以要比较其最大值进行返回。 func maxProfit(prices []int) int {dp : make([][]int, len(prices))dp[0] make([]int, 4)dp[0][0] -prices[0]for i : 1; i &…

经纬恒润预期功能安全(SOTIF)解决方案为自动驾驶安全保驾护航

近年来,“安全”被普遍认为是智能驾驶汽车被用户接受或者得到商业应用最大的问题,ISO26262功能安全旨在避免由E/E系统功能失效导致的不可接受的风险,主要是针对系统性失效/随机硬件失效导致的风险进行分析和控制,然而传感器和感知…

安防监控/视频存储/视频汇聚平台EasyCVR接入海康Ehome车载设备出现收流超时的原因排查

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚平台既具…

2024河南太阳能光伏展览会|郑州光伏展会|郑州太阳能展会

2024第四届中国(郑州)太阳能光伏及储能产业展览会 时间:2024年2月26-28日 地点:郑州.中原国际博览中心 太阳能光伏及储能产业是未来能源发展的趋势,随着全球气候变化和能源危机的加剧,越来越多的国家开始…

ExpressLRS开源代码之工程结构

ExpressLRS开源代码之工程结构 1. 源由2. 工程3. 开发环境安装4. pio命令5. ExpressLRS配置6. 硬件认证过程7. 参考资料 1. 源由 ExpressLRS开源代码基于Arduino框架设计,在所支持的硬件环境下,提供900/2400发射机和接收机硬件方案。 该设计提供了一个…

25.选择排序,归并排序,基数排序

目录 一. 选择排序 (1)简单选择排序 (2)堆排序 二. 归并排序 三. 基数排序 四. 各种排序方法的比较 (1)时间性能 (2)空间性能 (3)排序方法的稳定性能…

港联证券|股票过户费是什么意思?

股票过户费是指在股票商场中,由于股份所有权的转让,双方需求付出的一种买卖费用。这种费用首要是为了付出证券公司和证券中介机构转让股票所发生的各项费用,如代理费、登记费、买卖税等。股票过户费的数额一般是按照股票的数量和买卖金额来核…

ffmpeg 配合Fiddler抓包获取视频操作

一.获取普通网站视频 1.安装Fiddler软件,直接点击绿色软件中Fiddler.exe,打开即可 2.打开后需要设置一下https解码 3.打开普通视频,获取视频链接在网页打开即可 二.获取一级反爬网站视频 1.随便找一个video/mp…

Redis主从复制的搭建及原理分析

目录 一、Redis主从复制 1.1 搭建主从复制架构 1.1.1 主从复制架构简介 1.1.2 搭建主从复制架构 1.2 主从复制工作流程 1.2.1 建立连接阶段 1.2.2 数据同步阶段 1.2.2.1 工作流程 1.2.2.2 增量同步原理 1.2.3 命令传播阶段 1.2.3.1 偏移量(offset&#xf…

固定资产太多怎么管理好

固定资产太多时,可以采取以下措施进行管理:  分类管理:将固定资产按照种类、用途等进行分类,便于管理和查询。  建立台账:建立固定资产台账,记录每项资产的名称、编号、购置日期、购买价格、使用部门、…

keil在点击debug无法运行(全速运行)

1、今天发现我之前可以debug的程序,在板子上无法debug了,打断点完全没用 2、换了电脑,带板子过去也这样,之前可以运行的代码都debug不了 3、按照网上的方法,都不行,全速运行,单步执行都是灰色…

nodejs pkg打包生成exe,设置自定义图标和产品信息

一、使用node开发应用程序,通常采用express框架进行功能扩展,当系统开发完成后,直接的方式就是采用gulp压缩后,在服务端运行node app.js命令执行,to C的系统这样开发部署没有问题。 二、而在to B,to G的项目中,采用源码的方式运行,一方面部署不太友好,需要拷贝的文件很…

Python随机森林、线性回归对COVID-19疫情、汇率数据预测死亡率、病例数、失业率影响可视化...

全文链接:https://tecdat.cn/?p33536 自2019年12月以来,传染性冠状病毒疾病2019(COVID-19)迅速席卷全球,并在短短几个月内达到了大流行状态(点击文末“阅读原文”获取完整代码数据)。 相关视频…