CN102736981A - 提高nor flash擦写寿命的方法 - Google Patents
提高nor flash擦写寿命的方法 Download PDFInfo
- Publication number
- CN102736981A CN102736981A CN2011100880741A CN201110088074A CN102736981A CN 102736981 A CN102736981 A CN 102736981A CN 2011100880741 A CN2011100880741 A CN 2011100880741A CN 201110088074 A CN201110088074 A CN 201110088074A CN 102736981 A CN102736981 A CN 102736981A
- Authority
- CN
- China
- Prior art keywords
- address
- sector
- logical
- physical address
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种提高NOR FLASH擦写寿命的方法,通过将4K物理地址映射为1K的逻辑地址,在对同一个逻辑地址进行写操作时,只有在第5次写操作中才涉及到对NOR FLASH的擦除操作,提升了写操作的速度,并将NOR FLASH的擦写操作寿命延长了4倍。
Description
技术领域
本发明涉及闪存领域,具体而言,涉及一种提高NOR FLASH擦写寿命的方法。
背景技术
NOR FLASH是目前市场上主要的非易失闪存技术之一,NOR FLASH的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能,NOR FLASH的擦写次数是十万次。EEPROM是电子擦除式只读存储器,它是一种非挥发性存储器,电源消失后,储存的数据依然存在,要消除储存在其中的内容,以电子信号直接消除即可,EEPROM的擦写次数是百万次。从NOR FLASH和EEPROM的特点上能够看出,二者的擦写寿命差距很大。
在嵌入式***设计过程中,根据功能需要进行相应的软硬件设计,芯片选型满足主要需求后,***资源的安排要考虑成本等各种因素,有的设计需要EEPROM存储器,主要芯片内没有EEPROM存储资源,但是有NORFLASH存储资源,这种情况下如果能够通过设计改进把NOR FLASH资源当作EEPROM资源来使用,则可以省去增加EERPOM存储器的成本,并且硬件结构也比较精简。
发明内容
本发明提供一种提高NOR FLASH擦写寿命的方法,用以延长NORFLASH的擦写寿命,降低硬件的成本。
为达到上述目的,本发明提供了一种提高NOR FLASH擦写寿命的方法,其包括以下步骤:
S102,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表T[m][n],将NOR FLASH的物理地址映射为逻辑地址,其中,m是逻辑地址页号,m的取值为0、1、2.....,n是有效数据的逻辑编号,T[m][n]的数值是有效数据存放的扇区号;
S104,当进行逻辑写操作时,通过逻辑地址计算出m和n,查询逻辑映射表得到扇区编号,计算出物理地址并读出该物理地址的数据,并判断该数据是否为0xFFFF,若是,进入步骤S106,否则转入步骤S108;
S106,将该数据写入该物理地址;
S108,判断当前所在扇区是否为最后一个扇区,若当前所在扇区不是最后一个扇区,进入步骤S110,否则转入步骤S112;
S110,将该数据写入当前所在扇区的下个扇区,并且更新逻辑映射表;
S112,将所有m个扇区的有效数据都拷贝到内存中,擦除m个扇区的数据,再把有效数据从内存拷贝到第一个扇区,同时更新逻辑映射表。
较佳的,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表T[m][n],将NOR FLASH的物理地址映射为逻辑地址步骤包括:
a,计算物理地址,并通过该物理地址读出1个半字数据,其中,物理地址=物理基地址+4×1024×m+p×1024+2×n,p为扇区编号,其初始值为3;
b,判断步骤a中读出的数据是否为0xFFFF,若是则进入步骤d,否则进入步骤c;
c,将该扇区编号赋值给T[m][n],并将扇区编号减一,即p=p-1,转入步骤a;
d,若p等于0,则将T值赋为0。
较佳的,上述提高NOR FLASH擦写寿命的方法还包括以下步骤:
当进行逻辑读操作时,通过逻辑地址算出m和n,其中m=(逻辑地址+1)/1024,n=(逻辑地址%1024)/2,通过查询逻辑映射表得到扇区编号,并计算出该逻辑地址对应的物理地址,根据该物理地址读出数据。
在上述实施例中,通过将4K物理地址映射为1K的逻辑地址,在对同一个逻辑地址进行写操作时,只有在第5次写操作中才涉及到对NOR FLASH的擦除操作,提升了写操作的速度,并将NOR FLASH的擦写操作寿命延长了4倍,克服了现有技术中存在的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明一实施例的提高NOR FLASH擦写寿命的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为根据本发明一实施例的提高NOR FLASH擦写寿命的方法流程图。如图1所示,该方法包括以下步骤:
S102,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表 T[m][n],将NOR FLASH的物理地址映射为逻辑地址,其中,m是逻辑地址页号,m的取值为0、1、2.....,n是有效数据的逻辑编号,T[m][n]的数值是有效数据存放的扇区号;
S104,当进行逻辑写操作时,通过逻辑地址计算出m和n,查询逻辑映射表得到扇区编号,计算出物理地址并读出该物理地址的数据,并判断该数据是否为0xFFFF,若是,进入步骤S106,否则转入步骤S108;
S106,将该数据写入该物理地址;
S108,判断当前所在扇区是否为最后一个扇区,若当前所在扇区不是最后一个扇区,进入步骤S110,否则转入步骤S112;
S110,将该数据写入当前所在扇区的下个扇区,并且更新逻辑映射表;
S112,将所有m个扇区的有效数据都拷贝到内存中,擦除m个扇区的数据,再把有效数据从内存拷贝到第一个扇区,同时更新逻辑映射表。
其中,采用4K物理地址对应1K逻辑地址,用于将4K NO R FLASH模拟为1K EEPROM,逻辑地址用于存放有效数据。把NOR FLASH的4K划分为4个扇区,分别标识为0、1、2、3。由于NOR FLASH是16位,所以内部数据存储管理逻辑以半字为最小单元,1K逻辑地址内的有效数据为512个半字,逻辑编号从0到511,逻辑编号对应半字在扇区中的偏移量,有效数字存放在哪个扇区是不确定的。通过建立逻辑映射表来确定每个有效数据的存储扇区。
在本实施例中,通过将4K物理地址映射为1K的逻辑地址,在对同一个逻辑地址进行写操作时,只有在第5次写操作中才涉及到对NOR FLASH的擦除操作,提升了写操作的速度,并将NOR FLASH的擦写操作寿命延长了4倍,克服了现有技术中存在的问题。
例如,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表 T[m][n],将NOR FLASH的物理地址映射为逻辑地址步骤包括:
a,计算物理地址,并通过该物理地址读出1个半字数据,其中,物理地址=物理基地址+4×1024×m+p×1024+2×n,p为扇区编号,其初始值为3;
b,判断步骤a中读出的数据是否为0xFFFF,若是则进入步骤d,否则进入步骤c;
c,将该扇区编号赋值给T[m][n],并将扇区编号减一,即p=p-1,转入步骤a;
d,若p等于0,则将T值赋为0。
其中,建立映射区要从最高逻辑扇区向最低逻辑扇区依次查找。
例如,上述提高NOR FLASH擦写寿命的方法还包括以下步骤:
当进行逻辑读操作时,通过逻辑地址算出m和n,其中m=(逻辑地址+1)/1024,n=(逻辑地址%1024)/2,通过查询逻辑映射表得到扇区编号,并计算出该逻辑地址对应的物理地址,根据该物理地址读出数据。
以下为本发明的一个较佳实施例:
用AC2512TSSX45芯片的128K NOR FLASH来模拟32KEEPROM。128KNOR FLASH的物理地址为:0x85F000~0x87EFFF,模拟32KEEPROM的逻辑地址为0x0000~0x7FFF。
首先建立逻辑映射表T[32][512],首次创建时,T[m][n]数组的值均为0。
假设对逻辑地址0x200重复写入一字节数据。首次写入数值0x01。
首先根据逻辑地址计算出映射表的m和n。根据前面相关公式计算出m=0,n=256。通过查逻辑映射表得到逻辑地址0x200的扇区编号p是T[0][256],初始值T[0][256]为0。
计算物理地址,物理地址=物理基地址+4×1024×m+p×1024+n(p为 扇区编号)=0x85F000+4×1024×0+0×1024+2×256=0x85F200。
读出该物理地址的数值为0xFFFF,则把0x01写入0x85F200。
第二次对逻辑地址0x200写入数值0x02。计算物理地址,物理地址仍为0x85F200,读出该物理地址,数值为0x01,数值不等于0xFFFF,并且当前扇区号为0,不是最后一个扇区,则把新数据写入当前所在扇区的下个扇区,即p=1,计算物理地址,物理地址=物理基地址+4×1024×m+1×1024+n(p为扇区编号)=0x85F000+4×1024×0+1×1024+2×256=0x85F600,更新逻辑映射表,即T[0][256]由0更新至1。
第三次对逻辑地址0x200写入数值0x03。计算物理地址,物理地址为0x85F600,读出该物理地址,数值为0x02,数值不等于0xFFFF,并且当前扇区号为1,不是最后一个扇区,则把新数据写入当前所在扇区的下个扇区,即p=2,计算物理地址,物理地址=物理基地址+4×1024×m+2×1024+n(p为扇区编号)=0x85F000+4×1024×0+2×1024+2×256=0x85FA00,更新逻辑映射表,即T[0][256]由1更新至2。
第四次对逻辑地址0x200写入数值0x04。计算物理地址,物理地址为0x85FA00,读出该物理地址,数值为0x03,数值不等于0xFFFF,并且当前扇区号为2,不是最后一个扇区,则把新数据写入当前所在扇区的下个扇区,即p=3,计算物理地址,物理地址=物理基地址+4×1024×m+2×1024+n(p为扇区编号)=0x85F000+4×1024×0+3×1024+2×256=0x85FE00,更新逻辑映射表,即T[0][256]由2更新至3。
第五次对逻辑地址0x200写入数值0x05。计算物理地址,物理地址为0x85FE00,读出该物理地址,数值为0x04,数值不等于0xFFFF,并且当前扇区号为3,且当前所在扇区是最后一个扇区,则把4个扇区的有效数据都拷贝到内存(在此用例中只有0x200逻辑地址的数据是有效数据,即把0x05拷贝内存),擦除4个扇区数据(即擦除0x85F000~0x85FFFF),计算第一 个扇区的物理地址,物理地址=物理基地址+4×1024×m+p×1024+n(p为扇区编号)=0x85F000+4×1024×0+0×1024+2×256=0x85F200,再把有效数据0x05从内存拷贝到0x85F200,同时更新逻辑映射表,即T[0][256]由3更新至1。
在本实施例中,利用128K NOR FLASH模拟32K EEPROM,对于同一个逻辑地址0x200进行写操作,只有在第五次写操作中才涉及NOR FLASH的擦除操作,因此,写速度得到了提升,擦写寿命也相应延长了4倍。在实例中,经过测试,单字节的平均写速度是27微秒,与EEPROM的单字节写速度相当。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术 方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (3)
1.一种提高NOR FLASH擦写寿命的方法,其特征在于,包括以下步骤:
S102,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表T[m][n],将NOR FLASH的物理地址映射为逻辑地址,其中,m是逻辑地址页号,m的取值为0、1、2.....,n是有效数据的逻辑编号,T[m][n]的数值是有效数据存放的扇区号;
S104,当进行逻辑写操作时,通过逻辑地址计算出m和n,查询逻辑映射表得到扇区编号,计算出物理地址并读出该物理地址的数据,并判断该数据是否为0xFFFF,若是,进入步骤S106,否则转入步骤S108;
S106,将该数据写入该物理地址;
S108,判断当前所在扇区是否为最后一个扇区,若当前所在扇区不是最后一个扇区,进入步骤S110,否则转入步骤S112;
S110,将该数据写入当前所在扇区的下个扇区,并且更新逻辑映射表;
S112,将所有m个扇区的有效数据都拷贝到内存中,擦除m个扇区的数据,再把有效数据从内存拷贝到第一个扇区,同时更新逻辑映射表。
2.根据权利要求1所述的提高NOR FLASH擦写寿命的方法,其特征在于,按照4K物理地址对应1K逻辑地址的原则,建立逻辑映射表T[m][n],将NOR FLASH的物理地址映射为逻辑地址步骤包括:
a,计算物理地址,并通过该物理地址读出1个半字数据,其中,物理地址=物理基地址+4×1024×m+p×1024+2×n,p为扇区编号,其初始值为3;
b,判断步骤a中读出的数据是否为0xFFFF,若是则进入步骤d,否则进入步骤c;
c,将该扇区编号赋值给T[m][n],并将扇区编号减一,即p=p-1,转入步骤a;
d,若p等于0,则将T值赋为0。
3.根据权利要求1或2所述的提高NOR FLASH擦写寿命的方法,其特征在于,还包括以下步骤:
当进行逻辑读操作时,通过逻辑地址算出m和n,其中m=(逻辑地址+1)/1024,n=(逻辑地址%1024)/2,通过查询逻辑映射表得到扇区编号,并计算出该逻辑地址对应的物理地址,根据该物理地址读出数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110088074.1A CN102736981B (zh) | 2011-04-08 | 2011-04-08 | 提高nor flash擦写寿命的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110088074.1A CN102736981B (zh) | 2011-04-08 | 2011-04-08 | 提高nor flash擦写寿命的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102736981A true CN102736981A (zh) | 2012-10-17 |
CN102736981B CN102736981B (zh) | 2016-02-03 |
Family
ID=46992522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110088074.1A Active CN102736981B (zh) | 2011-04-08 | 2011-04-08 | 提高nor flash擦写寿命的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102736981B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512047A (zh) * | 2014-09-26 | 2016-04-20 | 上海东软载波微电子有限公司 | Flash闪存的写操作、擦除操作方法及装置 |
CN107608630A (zh) * | 2017-09-07 | 2018-01-19 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN108319433A (zh) * | 2018-03-19 | 2018-07-24 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN111208950A (zh) * | 2020-01-15 | 2020-05-29 | 山西银河电子设备厂 | 一种基于单片机的提升norflash使用周期的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN101288054A (zh) * | 2004-07-30 | 2008-10-15 | M-***快闪盘开拓者公司 | 快闪文件***中的虚拟至物理地址翻译 |
-
2011
- 2011-04-08 CN CN201110088074.1A patent/CN102736981B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN101288054A (zh) * | 2004-07-30 | 2008-10-15 | M-***快闪盘开拓者公司 | 快闪文件***中的虚拟至物理地址翻译 |
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512047A (zh) * | 2014-09-26 | 2016-04-20 | 上海东软载波微电子有限公司 | Flash闪存的写操作、擦除操作方法及装置 |
CN105512047B (zh) * | 2014-09-26 | 2018-08-28 | 上海东软载波微电子有限公司 | Flash闪存的写操作、擦除操作方法及装置 |
CN107608630A (zh) * | 2017-09-07 | 2018-01-19 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN107608630B (zh) * | 2017-09-07 | 2020-09-04 | 四川九洲北斗导航与位置服务有限公司 | 数据读写方法及装置 |
CN108319433A (zh) * | 2018-03-19 | 2018-07-24 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN108319433B (zh) * | 2018-03-19 | 2021-02-02 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN111176579B (zh) * | 2019-12-30 | 2023-05-30 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN111208950A (zh) * | 2020-01-15 | 2020-05-29 | 山西银河电子设备厂 | 一种基于单片机的提升norflash使用周期的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102736981B (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232041B2 (en) | Memory addressing | |
US8180953B2 (en) | Data accessing method for flash memory, and storage system and controller system thereof | |
US8239614B2 (en) | Memory super block allocation | |
US8407397B2 (en) | Block management method for flash memory and controller and storage system using the same | |
CN101288054B (zh) | 闪存管理方法、***、存储设备、以及闪存设备 | |
US8230160B2 (en) | Flash memory storage system and flash memory controller and data processing method thereof | |
CN101154190B (zh) | 映射信息管理设备和方法 | |
US11288019B2 (en) | Memory management method and storage controller | |
CN108710578B (zh) | 基于闪存的数据存储方法和装置 | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
US8892812B2 (en) | Flash memory device and data writing method for a flash memory | |
CN104102585A (zh) | 映射信息记录方法、存储器控制器与存储器储存装置 | |
US8433844B2 (en) | Method for managing a memory device having multiple channels and multiple ways, and associated memory device and controller thereof | |
CN105808156A (zh) | 将数据写入固态硬盘的方法及固态硬盘 | |
US10168951B2 (en) | Methods for accessing data in a circular block mode and apparatuses using the same | |
CN102736981B (zh) | 提高nor flash擦写寿命的方法 | |
CN103365786A (zh) | 数据存储方法、装置和*** | |
US20130054877A1 (en) | Data writing method, memory controller and memory storage apparatus | |
CN101499316B (zh) | 快闪存储器区块管理方法及使用此方法的控制器 | |
CN102200946B (zh) | 资料存取方法、记忆体控制器与储存*** | |
CN114036079B (zh) | 映射表压缩方法、***、存储器控制器、固态硬盘及数据读取方法 | |
CN102541753B (zh) | 一种嵌入式存储器的读写优化方法 | |
CN110532195A (zh) | 存储器***的工作负荷分簇及执行其的方法 | |
CN102543184B (zh) | 存储器储存装置、其存储器控制器与数据写入方法 | |
US20130326120A1 (en) | Data storage device and operating method for flash memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |