CN109597580B - 适用于智能电表负荷曲线存储的flash操作方法 - Google Patents
适用于智能电表负荷曲线存储的flash操作方法 Download PDFInfo
- Publication number
- CN109597580B CN109597580B CN201811464442.6A CN201811464442A CN109597580B CN 109597580 B CN109597580 B CN 109597580B CN 201811464442 A CN201811464442 A CN 201811464442A CN 109597580 B CN109597580 B CN 109597580B
- Authority
- CN
- China
- Prior art keywords
- now
- data
- image
- storage
- load curve
- 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.)
- Active
Links
- 230000004048 modification Effects 0.000 claims abstract description 4
- 238000006011 modification reaction Methods 0.000 claims abstract description 4
- 230000000875 corresponding Effects 0.000 claims description 15
- ZXJFZSBPAUJZNO-UHFFFAOYSA-N N-(1-adamantyl)-3,4-dihydroxybenzamide Chemical compound C1=C(O)C(O)=CC=C1C(=O)NC1(C2)CC(C3)CC2CC3C1 ZXJFZSBPAUJZNO-UHFFFAOYSA-N 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本发明公开了一种适用于智能电表负荷曲线存储的flash操作方法,通过建立镜像区、数据存储指针和数据分段缓存的方法,实现了flash中对负荷曲线数据的循环存储、数据读取和向前修改时间点的数据操作。本发明大大简化了负荷曲线应用层的设计逻辑,避免了对整个sector擦写造成的数据丢失,减少了RAM开销,延长了flash的使用寿命,在极端情况下也完全满足寿命要求。
Description
技术领域
本发明涉及一种适用于智能电表负荷曲线存储的flash操作方法。
背景技术
随着智能电表的推广,用户对其功能提出了越来越高的要求。负荷曲线存储是一种很常用且非常重要的功能。电表按某一固定间隔周期(如1分钟、5分钟、10分钟等)记录电表运行过程中的电压、电流、电量等信息,然后将这些信息按时间顺序绘制成负荷曲线。
负荷曲线占用的存储空间非常大,假设每隔15分钟记录一次负荷信息,那么记录90天的数据就需要1M以上的空间。因此,在智能电表设计中一般采用flash作为负荷曲线的存储器件。
flash的擦除操作一般按照sector进行,即每次至少擦除一个sector占用的空间,flash的一个sector一般为4K字节,flash每个sector的擦写寿命一般为10万次。
负荷曲线数据需要进行循环存储,即负荷曲线数据记录到存储区的末尾时,下一次存储负荷曲线数据会覆盖最早的一条记录。负荷曲线数据的另一个特点是,如果用户向前修改智能电表的时间,负荷曲线需要擦除修改时间点之后的所有数据,并从该修改的时间点继续记录。
源于flash的操作特点,目前负荷曲线存储处理存在以下缺陷:
1)负荷曲线数据进行循环存储的时候,每次擦除时整个sector的数据都会被擦除掉,导致数据丢失;
2)如果用户向前修改智能电表的时间,在智能电表的单片机中需要开辟一个sector大小的RAM区域(一般为4K字节),用于缓存要修改的时间点所在的sector内的数据,在开辟的缓存区域中,将修改的时间点之前的数据保留,时间点之后的数据清除,再将数据写回相应的sector中,这对RAM较小的单片机,比如51系列单片机,开销是巨大的。
发明内容
本发明提出了一种适用于智能电表负荷曲线存储的flash操作方法,其目的在于:(1)避免擦除整个sector时丢失数据;(2)减小RAM开销。
本发明技术方案如下:
一种适用于智能电表负荷曲线存储的flash操作方法,步骤为:
1)对flash按N:1的比例建立存储区和镜像区,N为正整数,所述镜像区包含若干镜像块,所述存储区包含数量为镜像块N倍的存储块,每N个存储块共用一个镜像块,镜像块与存储块的大小一致;
2)建立存储指针Psave,用于标识当前负荷曲线数据的存储地址,存储指针在上电时刻加载至RAM中;
3)在RAM中建立缓存区,存储块的大小为缓存区大小的整数倍;
4)在负荷曲线发生循环存储时,按照如下步骤进行:根据Psave定位到记录当前负荷曲线数据的存储块Snow以及Snow所对应的镜像块Simage,然后将Simage擦除,再将Snow中的数据通过缓存区分批存入Simage中,然后将Snow的数据擦除,此后直接将负荷曲线数据写入到Snow中,直至Snow写满后再次根据Psave定位新的Snow与Simage继续存储。
作为本发明的进一步改进:读取负荷曲线数据时,判断要读取的地址Addr是否在当前的Snow中:
如果在Snow中,则先读取Snow中Addr所指向的数据,如果读出的数据为0xff,表明Snow当前已经被擦除,则继续读取Snow所对应的Simage中Addr对应位置的数据,并将Simage的数据作为正确数据,如果读出的数据不是0xff,则继续读取且将Snow的数据作为正确数据;
如果读取的地址不在Snow中,则直接读取Addr地址所指向的数据。
作为本发明的进一步改进:在负荷曲线发生向前修改时间的操作时,步骤为:查找要修改的时间点所在的负荷曲线记录地址Addr′,根据Addr′计算出要修改的时间点所在的存储块Snow’以及Snow’对应的镜像块Simage’,再将Simage’擦除,然后从Snow’起始地址至Addr′之间的数据通过缓存区分批存入Simage’中,再将Snow’的数据擦除,然后将Simage’中的数据通过缓存区分批写回Snow’中,而后从Addr′处继续写入。
作为本发明的进一步改进:所述根据Psave定位到记录当前负荷曲线数据的存储即Snow以及Snow所对应的镜像块Simage的具体步骤为:
相对于现有技术,本发明具有以下积极效果:(1)大大简化了负荷曲线应用层的设计逻辑,循环存储时,所擦除的是镜像sector中的数据,该数据只是上一轮存储时放置在镜像sector中的旧数据,而非当前连续的负荷曲线数据的起始数据,同时当前的起始数据会被写入镜像sector后再对待写入的sector进行擦除,避免了数据丢失;(2)通过缓存区分批进行sector间的数据转移,减少了RAM开销。
附图说明
图1是本发明负荷曲线循环存储的流程示意图。
图2是本发明读取负荷曲线数据的流程示意图。
图3是本发明向前修改时间flash的操作流程示意图。
具体实施方式
下面结合附图详细说明本发明的技术方案:
不失一般性,假设flash的存储空间为4M字节,每个sector即块的大小为4K字节。为方便计算,假设flash共包含1000个4K字节sector。
一种适用于智能电表负荷曲线存储的flash操作方法,步骤为:
1)对flash按4:1的比例建立存储区和镜像区,所述镜像区包含若干镜像块,所述存储区包含数量为镜像块4倍的存储块,每4个存储块共用一个镜像块,4M字节的flash芯片分配800K字节的镜像区,每个镜像块的大小为4K字节即一个sector,共包含200个镜像块,剩余空间是用于数据存储的存储块,共800个存储块;
为存储块与镜像块分别按顺序编号,将存储块编号用Index表示,对应的镜像块编号用Indeximage表示,则:
2)建立存储指针Psave,用于标识当前负荷曲线数据的存储地址,存储指针在上电时刻加载至RAM中,占用4字节空间,;
3)在RAM中建立缓存区,缓存区的大小可根据单片机的实际内存分配,本实施例为512字节;
4)如图1,在负荷曲线发生循环存储时,按照如下步骤进行:
4b)根据Index求得对应的Indeximage即为Snow所对应的镜像块Simage的编号;
4c)将Simage擦除;
4d)将Snow中的数据通过缓存区分8次存入Simage中;
4e)将Snow的数据擦除为0xff;
4f)此后直接将负荷曲线数据写入到Snow中,直至Snow写满后再次根据Psave定位新的Snow与Simage继续存储。
5)如图2,读取负荷曲线数据时,步骤为:
5a)判断要读取的地址Addr是否在当前的Snow中,如果不在,执行5b),否则执行5c);
5b)直接读取Addr地址所指向的数据作为正确数据返回;
5c)读取Snow中Addr所指向的数据,如果读出的数据不为0xff,执行5d);否则表明Snow当前已经被擦除,执行5e);
5d)直接读取Snow在Addr处的数据作为正确数据返回;
5e)计算Addr地址相对于Snow起始地址的偏移,继续读取Snow所对应的Simage中相同偏移位置的数据,并作为正确数据返回;
6)如图3,在负荷曲线发生向前修改时间的操作时,步骤为:
6a)查找要修改的时间点所在的负荷曲线记录地址Addr′;
6b)根据Addr′计算出要修改的时间点所在的存储块Snow’;
6c)根据Snow’定位到对应的镜像块Simage’;
6d)将Simage’擦除;
6e)从Snow’起始地址至Addr′之间的数据通过缓存区分8次存入Simage’中;
6f)将Snow’的数据擦除为0xff;
6g)将Simage’中的数据通过缓存区分8次写回Snow’中,而后从Addr′处继续写入。
按照电能表20年寿命设计,负荷曲线按照极端情况下1分钟记录一次,采用本发明的方案,对flash的sector最大擦写次数是1.5万次,满足flash寿命设计需要。
Claims (4)
1.一种适用于智能电表负荷曲线存储的flash操作方法,其特征在于步骤为:
1)对flash按N:1的比例建立存储区和镜像区,N为正整数,所述镜像区包含若干镜像块,所述存储区包含数量为镜像块N倍的存储块,每N个存储块共用一个镜像块,镜像块与存储块的大小一致;
2)建立存储指针Psave,用于标识当前负荷曲线数据的存储地址,存储指针在上电时刻加载至RAM中;
3)在RAM中建立缓存区,存储块的大小为缓存区大小的整数倍;
4)在负荷曲线发生循环存储时,按照如下步骤进行:根据Psave定位到记录当前负荷曲线数据的存储块Snow以及Snow所对应的镜像块Simage,然后将Simage擦除,再将Snow中的数据通过缓存区分批存入Simage中,然后将Snow的数据擦除,此后直接将负荷曲线数据写入到Snow中,直至Snow写满后再次根据Psave定位新的Snow与Simage继续存储;
在负荷曲线发生向前修改时间的操作时,步骤为:查找要修改的时间点所在的负荷曲线记录地址Addr′,根据Addr′计算出要修改的时间点所在的存储块Snow’以及Snow’对应的镜像块Simage’,再将Simage’擦除,然后从Snow’起始地址至Addr′之间的数据通过缓存区分批存入Simage’中,再将Snow’的数据擦除,然后将Simage’中的数据通过缓存区分批写回Snow’中,而后从Addr′处继续写入。
2.如权利要求1所述的适用于智能电表负荷曲线存储的flash操作方法,其特征在于:读取负荷曲线数据时,判断要读取的地址Addr是否在当前的Snow中:
如果在Snow中,则先读取Snow中Addr所指向的数据,如果读出的数据为Oxff,表明Snow当前已经被擦除,则继续读取Snow所对应的Simage中Addr对应位置的数据,并将Simage的数据作为正确数据,如果读出的数据不是Oxff,则继续读取且将Snow的数据作为正确数据;如果读取的地址不在Snow中,则直接读取Addr地址所指向的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811464442.6A CN109597580B (zh) | 2018-12-03 | 2018-12-03 | 适用于智能电表负荷曲线存储的flash操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811464442.6A CN109597580B (zh) | 2018-12-03 | 2018-12-03 | 适用于智能电表负荷曲线存储的flash操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109597580A CN109597580A (zh) | 2019-04-09 |
CN109597580B true CN109597580B (zh) | 2021-10-29 |
Family
ID=65959515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811464442.6A Active CN109597580B (zh) | 2018-12-03 | 2018-12-03 | 适用于智能电表负荷曲线存储的flash操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109597580B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767037B (zh) * | 2020-06-28 | 2023-09-12 | 烟台东方威思顿电气有限公司 | 一种脚本化的智能电表事件判断方法 |
CN113220692B (zh) * | 2021-06-01 | 2022-09-13 | 烟台东方威思顿电气有限公司 | 负荷曲线数据存取方法 |
CN113220668B (zh) * | 2021-06-01 | 2022-05-27 | 烟台东方威思顿电气有限公司 | 基于分组的负荷曲线数据存取方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354678A (zh) * | 2008-09-10 | 2009-01-28 | 浪潮齐鲁软件产业有限公司 | 基于NorFlash的数据滚存方法 |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
US8040727B1 (en) * | 1989-04-13 | 2011-10-18 | Sandisk Corporation | Flash EEprom system with overhead data stored in user data sectors |
CN102339254A (zh) * | 2011-06-17 | 2012-02-01 | 杭州炬华科技股份有限公司 | 用于智能电能表的flash数据存储方法 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
EP2793132A2 (en) * | 2007-11-21 | 2014-10-22 | Violin Memory, Inc. | Method and system for recovery of metadata in a flash memory system |
CN105677383A (zh) * | 2015-12-28 | 2016-06-15 | 北京华大智宝电子系统有限公司 | 一种智能卡数据更新方法 |
CN106383693A (zh) * | 2016-08-30 | 2017-02-08 | 武汉阿迪克电子股份有限公司 | 一种智能集中器及以测量点为标签的数据处理方法 |
CN106646333A (zh) * | 2016-12-21 | 2017-05-10 | 烟台东方威思顿电气股份有限公司 | 智能电能表在线监测及远程控制系统 |
CN108279852A (zh) * | 2017-12-27 | 2018-07-13 | 浙江恒业电子有限公司 | 用于智能电能表中提高norflash使用寿命的方法 |
-
2018
- 2018-12-03 CN CN201811464442.6A patent/CN109597580B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8040727B1 (en) * | 1989-04-13 | 2011-10-18 | Sandisk Corporation | Flash EEprom system with overhead data stored in user data sectors |
EP2793132A2 (en) * | 2007-11-21 | 2014-10-22 | Violin Memory, Inc. | Method and system for recovery of metadata in a flash memory system |
CN101354678A (zh) * | 2008-09-10 | 2009-01-28 | 浪潮齐鲁软件产业有限公司 | 基于NorFlash的数据滚存方法 |
CN102169420A (zh) * | 2011-04-18 | 2011-08-31 | 杭州海康威视系统技术有限公司 | 缓冲区循环读写方法及装置 |
CN102339254A (zh) * | 2011-06-17 | 2012-02-01 | 杭州炬华科技股份有限公司 | 用于智能电能表的flash数据存储方法 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
CN105677383A (zh) * | 2015-12-28 | 2016-06-15 | 北京华大智宝电子系统有限公司 | 一种智能卡数据更新方法 |
CN106383693A (zh) * | 2016-08-30 | 2017-02-08 | 武汉阿迪克电子股份有限公司 | 一种智能集中器及以测量点为标签的数据处理方法 |
CN106646333A (zh) * | 2016-12-21 | 2017-05-10 | 烟台东方威思顿电气股份有限公司 | 智能电能表在线监测及远程控制系统 |
CN108279852A (zh) * | 2017-12-27 | 2018-07-13 | 浙江恒业电子有限公司 | 用于智能电能表中提高norflash使用寿命的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109597580A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109597580B (zh) | 适用于智能电表负荷曲线存储的flash操作方法 | |
US9747202B1 (en) | Storage module and method for identifying hot and cold data | |
KR101002978B1 (ko) | 플래시 메모리 관리 시스템 및 방법 | |
CN101354681B (zh) | 存储器系统、非易失性存储器的磨损均衡方法及装置 | |
US7526600B2 (en) | Data management device and method for flash memory | |
US8015346B2 (en) | Memory system having hybrid density memory and methods for wear-leveling management and file distribution management thereof | |
US7689761B2 (en) | Data storage system with complex memory and method of operating the same | |
US11232041B2 (en) | Memory addressing | |
US8060684B2 (en) | Memory control apparatus, memory control method and program | |
KR101784893B1 (ko) | 컨트롤러, 플래시 메모리 장치, 데이터 블록 안정성을 확인하는 방법, 그리고 플래시 메모리 장치에 데이터를 저장하는 방법 | |
US20100088482A1 (en) | Process and Method for Erase Strategy in Solid State Disks | |
CN111033477A (zh) | 逻辑到物理映射 | |
US20090125668A1 (en) | Management of erased blocks in flash memories | |
CN112231244B (zh) | 应用于SoftSIM的SIM卡文件擦写系统、方法和可读存储介质 | |
CN109284252B (zh) | 一种通信设备中轻量级文件系统管理方法 | |
CN108595345A (zh) | 管理闪存中所储存的数据的方法及相关记忆装置与控制器 | |
JPWO2009107393A1 (ja) | アクセス装置、情報記録装置、コントローラ、及び情報記録システム | |
US10545876B2 (en) | Control unit for data storage system and method for updating logical-to-physical mapping table | |
CN110377599A (zh) | 键值存储装置及其操作方法 | |
US20070294467A1 (en) | Multi-Channel Flash Memory Data Access Method | |
KR20020092261A (ko) | 멀티-플레인 구조의 플래시 메모리 관리 방법 | |
CN110286848B (zh) | 数据处理方法及装置 | |
US11126624B2 (en) | Trie search engine | |
CN104391804B (zh) | 一种nand flash数据存储方法 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |