CN108874298B - 一种数据存储的方法及装置 - Google Patents
一种数据存储的方法及装置 Download PDFInfo
- Publication number
- CN108874298B CN108874298B CN201710337844.9A CN201710337844A CN108874298B CN 108874298 B CN108874298 B CN 108874298B CN 201710337844 A CN201710337844 A CN 201710337844A CN 108874298 B CN108874298 B CN 108874298B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- stored
- block
- flash
- 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
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/0608—Saving storage space on 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明适用于电子技术领域,提供了一种数据存储的方法及装置,所述方法包括:获取待存储数据;确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器。本发明的技术方案通过将频繁存储的数据存储在外部存储器,能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势,同时将非频繁存储的数据存储在内部flash存储器中,减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。
Description
技术领域
本发明属于电子技术领域,尤其涉及一种数据存储的方法及装置。
背景技术
目前,电力产品均需要支持非易失性存储功能,即在电力系统出现故障停电的情况下,能够保证电能等电力相关参数和记录的实时数据不会丢失。
通常,电力产品的非易失性存储功能采用外部铁电存储器或者内部flash存储器的方式实现。但是,仅使用外部铁电存储器保存所有实时数据,需要较大的铁电容量,成本较高;仅使用内部flash存储器进行保存,对于电能等需要每秒存储一次的数据,通过flash存储器进行频繁存储时可能会导致同一类数据被存储在不同的地址,不便于读取,无法满足实际需要,并且频繁擦写flash也会影响数据的实时性。
发明内容
有鉴于此,本发明实施例提供了一种数据存储的方法及装置,以解决现有技术中单独采用外部铁电存储器成本较高和单独采用内部flash存储器无法满足对实时数据的频繁存储需求的问题。
本发明实施例的第一方面提供了一种数据存储的方法,包括:
获取待存储数据;
确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器。
本发明实施例的第二方面提供了一种数据存储的装置,包括:
获取模块,用于获取待存储数据;
确定模块,用于确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
外部存储模块,用于若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
内部存储模块,用于若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器。
本发明实施例与现有技术相比存在的有益效果是:通过获取待存储的数据,确定待存储数据的数据类型以及该数据类型对应的存储属性,并根据存储属性对待存储数据进行分类存储,使得需要频繁存储的数据被存储在外部存储器中,不需要频繁存储的数据被存储在内部flash存储器中,将频繁存储的数据存储在外部存储器能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势,同时将非频繁存储的数据存储在内部flash存储器中,减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种数据存储的方法的实现流程图;
图2是本发明实施例二提供的一种数据存储的方法的实现流程图;
图3是本发明实施例二提供的一种数据存储的方法中外部存储器的存储区域的结构示意图;
图4是本发明实施例二提供的一种数据存储的方法中内部flash存储器的flash页的存储示意图;
图5是本发明实施例三提供的一种数据存储的装置的结构框图;
图6是本发明实施例四提供的一种数据存储的装置的结构框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1是本发明实施例一提供的一种数据存储的方法的流程图,本发明实施例的执行主体为电力设备,其具体可以是监控仪表等,图1示例的一种数据存储的方法具体可以包括步骤S101至步骤S104,详述如下:
S101、获取待存储数据。
具体地,电力设备获取待存储数据。
S102、确定待存储数据的数据类型以及该数据类型对应的存储属性。
具体地,待存储数据的数据类型根据实际应用环境,可以分为普通参数、定值参数、电能、最值、电压合格率、事件记录,以及故障波形等。在这些数据类型中,有一些数据类型的数据是需要进行频繁存储的,例如电能、最值、电压合格率等,这些数据的存储频率比较高,例如每秒存储一次等,不同类型的数据其存储频率可能相同也可能不相同;而另一些数据类型的数据不需要进行频繁存储,只需要在数据发生变化需要修改,或者通过事件触发的时候才需要进行存储,这些数据的存储频率比较低,例如普通参数、事件记录、故障波形等。
每种数据类型对应一个存储属性,用于标识该数据类型的数据是否需要进行频繁的存储。例如,对于电能等需要每秒存储一次的数据类型,其对应的存储属性即为频繁存储;而普通参数等不需要进行频繁存储的数据类型,其对应的存储属性即为非频繁存储。
S103、若存储属性为频繁存储,则将待存储数据保存到外部存储器。
具体地,如果步骤S102确定的存储属性为频繁存储,则认定待存储数据为需要进行频繁存储的数据,将该待存储数据保存到外部存储器。该外部存储器具体可以是外部铁电存储器(ferromagnetic random access memory,FRAM),还可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)等非易失性存储器。
FRAM是利用铁电晶体的铁电效应实现数据存储。EEPROM是用户可更改的只读存储器,其可通过高于普通电压的作用来擦除和重写。这些外部存储器均具有非易失性数据存储特性,以及读写寿命长、高速读写以及低功耗等优势。
S104、若存储属性为非频繁存储,则将待存储数据保存到flash存储器。
具体地,如果步骤S102确定的存储属性为非频繁存储,则认定待存储数据为不需要进行频繁存储的数据,将待存储数据保存到微控制器的内部flash存储器。
本实施例中,通过获取待存储的数据,确定待存储数据的数据类型以及该数据类型对应的存储属性,并根据存储属性对待存储数据进行分类存储,使得需要频繁存储的数据被存储在外部存储器中,不需要频繁存储的数据被存储在内部flash存储器中,将频繁存储的数据存储在外部存储器能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势,同时将非频繁存储的数据存储在内部flash存储器中,减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。
实施例二:
图2是本发明实施例二提供的一种数据存储的方法的流程图,本发明实施例的执行主体为电力设备,其具体可以是监控仪表等,图2示例的一种数据存储的方法具体可以包括步骤S201至步骤S213,详述如下:
S201、获取待存储数据。
具体地,电力设备获取待存储数据。
S202、确定待存储数据的数据类型以及该数据类型对应的存储属性。
具体地,待存储数据的数据类型根据实际应用环境,可以分为普通参数、定值参数、电能、最值、电压合格率、事件记录,以及故障波形等。在这些数据类型中,有一些数据类型的数据是需要进行频繁存储的,例如电能、最值、电压合格率等,这些数据的存储频率比较高,例如每秒存储一次等,不同类型的数据其存储频率可能相同也可能不相同;而另一些数据类型的数据不需要进行频繁存储,只需要在数据发生变化需要修改,或者通过事件触发的时候才需要进行存储,这些数据的存储频率比较低,例如普通参数、事件记录、故障波形等。
每种数据类型对应一个存储属性,用于标识该数据类型的数据是否需要进行频繁的存储。例如,对于电能等需要每秒存储一次的数据类型,其对应的存储属性即为频繁存储;而普通参数等不需要进行频繁存储的数据类型,其对应的存储属性即为非频繁存储。
S203、若存储属性为频繁存储,则根据待存储数据的数据类型,将该待存储数据保存到外部存储器中该数据类型对应的存储区域;其中,外部存储器被预先划分为预设个数的存储区域,每个存储区域对应不同的数据类型。
具体地,如果步骤S202确定的存储属性为频繁存储,则认定待存储数据为需要进行频繁存储的数据,将该待存储数据保存到外部存储器对应的存储区域。该外部存储器具体可以是FRAM,还可以是EEPROM等非易失性存储器。
FRAM是利用铁电晶体的铁电效应实现数据存储。EEPROM是用户可更改的只读存储器,其可通过高于普通电压的作用来擦除和重写。这些外部存储器均具有非易失性数据存储特性,以及读写寿命长、高速读写以及低功耗等优势。
外部存储器被预先划分为预设个数的存储区域,每个存储区域用于存储一种数据类型的数据,不同存储区域对应不同的数据类型。
图3为外部存储器的存储区域的结构示意图,每个存储区域对应一种数据类型,在划分外部存储器的存储区域时,每个存储区域的起始地址即被确定下来,并将该起始地址与对应的数据类型进行关联。在对待存储数据进行存储时,采用固定地址存储的方式,即根据待存储数据的数据类型即可确定与该数据类型关联的存储区域的起始地址,将待存储数据保存到该起始地址所在的存储区域中。
需要说明的是,对同一个数据类型的待存储数据采用覆盖存储的方式,即该数据类型对应的存储区域中存储的是最近一次存储的该数据类型的数据。
在将待存储数据保存到外部存储器对应的存储区域后,流程跳转到步骤S211。
S204、若存储属性为非频繁存储,则根据页状态,确定flash存储器中有效的flash页,作为第一flash页。
具体地,如果步骤S202确定的存储属性为非频繁存储,则认定待存储数据为不需要进行频繁存储的数据,需要将待存储数据保存到微控制器的内部flash存储器。
在将待存储数据保存到微控制器的内部flash存储器时,可以采用flash循环存储的方式,例如两页循环写的方式。在存储数据的过程中,无需频繁的擦写,仅写满一页数据时,才需擦除已经写满的flash页,并该flash页的有效数据和待存储数据拷贝到新的flash页面。采取这样的方式能够有效延长flash的使用时间。
需要说明的是,采用flash循环存储方式,需对flash存储器的数据结构进行预先设置。详述如下:
flash存储器可以包括预设个数的flash页,该预设个数可以为2个,即两页flash循环存储。但并不限于此,具体flash页的数量可以根据实际应用进行设置,此处不做限制。
flash页包括页状态、控制块区域和数据块区域,控制块区域由控制块组成,数据块区域由数据块组成,控制块与数据块唯一对应,控制块包括块状态、对应数据块中数据的数据标识和存储信息。
图4为内部flash存储器中flash页的存储示意图,如图4可知,存储在flash存储器中的数据是从flash页结束地址向flash页起始地址的方向进行存储。
表1为具体的flash页的数据结构。如表1所示,从flash页起始地址开始,使用2个字节标识页状态,当页状态为0xFFFF(ERASED)时,表示当前flash页中没有数据,即当前flash页已经被擦除,当页状态为0xEEEE(RECEIVE_DATA)时,表示当前flash页正在与其他flash页进行数据拷贝,即当前flash页已经写满,当页状态为0x0000(VALID_PAGE)时,表示当前flash页有效,可以在当前flash页进行数据存储。控制块向flash页结束地址的方向增长,数据块想flash页起始地址的方向增长。每个数据块的长度不固定,在数据块与数据块之间使用2个字节的数据块边界进行区分,该数据块边界设为0xCCCC。
表1
表2为具体的控制块的数据结构。如表2所示,控制块的起始2个字节用于标识块状态,当块状态为0xAAAA(VALID_BLOCK)时,即块状态为有效状态,表示该控制块记录的内容有效,当块状态为0x0000(EXPIRED_BLOCK)时,即块状态为无效状态,表示该控制块记录的内容无效。数据标识用于标识该控制块对应的数据块中存储的数据的数据类型,存储信息可以包括校验和、数据偏移地址以及数据长度,通过校验和能够对所存储的数据进行校验,提高数据可靠性,通过数据偏移地址能够快速定位到对应的数据块的位置。
表2
可以理解的是,flash页的数据结构和控制块的数据结构并不限于上述表1和表2的定义,其结构和参数均可以根据实际应用的需要进行设置,此处不做限制。
基于预先确定的flash存储器中flash页和控制块的数据结构,如果flash存储器中flash页的页状态为0x0000,则表示该flash页有效,可以在该falsh页中进行数据存储,将该flash页作为第一flash页。继续执行步骤S206。
如果flash存储器中的flash页的页状态不合法,即页状态不属于上述表1中定义的页状态的类型,则返回flash页不合法的错误,流程结束。
S205、对第一flash页的控制块进行遍历。
具体地,若第一flash页有效,则对该第一flash页的控制块进行遍历,查询在第一flash页中是否已经存储过待存储数据的数据类型的数据。
S206、若控制块的块状态为有效状态,并且待存储数据的数据类型与该控制块的数据标识相同,则确认该数据类型的数据已经被存储,将该控制块的块状态设置为无效状态。
具体地,由于对同一个数据类型的数据采用覆盖存储的方式,即在flash存储器中只需要保留该数据类型的最新数据即可,因此,在对控制块进行遍历的过程中,如果当前控制块的块状态为有效状态,并且待存储数据的数据类型与该当前控制块的数据标识相同,则说明该数据类型的数据之前已经进行被存储过,由于待存储数据是该数据类型的最新数据,因此当前控制块对应的数据块的数据不再需要,将当前控制块的块状态设置为无效状态。
S207、若遍历完成并且第一flash页未写满,则写入待存储数据和该待存储数据对应的控制块。
具体地,若对控制块的遍历完成后,第一flash页尚未写满,即仍有空闲的空间,该空闲的空间大于或者等于待存储数据和该待存储数据对应的控制块所要占用的空间,则按照上述表1和表2定义的数据结构,将该待存储数据对应的控制块和该待存储数据写入第一flash页中。
写入完成后,流程跳转到步骤S211。
S208、若遍历完成并且第一flash页已经写满,则将块状态为有效状态的控制块和对应的数据块搬运到没有数据的第二flash页。
具体地,若对控制块的遍历完成后,第一flash页已经写满,即已经没有空闲的空间,或者空闲的空间小于待存储数据和该待存储数据对应的控制块所要占用的空间,则将第一flash页中块状态为有效状态的控制块和对应的数据块搬运到第二flash页中,该第二flash页的页状态为0xFFFF,即该第二flash页已经被擦除,没有数据。
S209、擦除第一flash页的内容。
具体地,当步骤S208的搬运完成后,对第一flash页进行擦除,其页状态变为0XFFFF。
S210、在第二flash页中为待存储数据分配数据块和控制块,将该待存储数据写入该数据块,并根据该数据块填写该控制块的内容。
具体地,在第二flash页中按照上述表1和表2定义的数据结构,为待存储数据分配数据块和控制块,将该待存储数据写入该数据块,并根据该数据块填写该控制块的内容。
S211、接收包含待读取数据的数据类型的数据读取请求。
具体地,当需要读取数据时,接收包含待读取数据的数据类型的数据读取请求。
S212、若待读取数据的数据类型对应的存储属性为频繁存储,则从外部存储器中读取该待数据数据。
具体地,如果待读取数据的数据类型对应的存储属性为频繁存储,则根据外部存储器中数据类型与存储区域的起始地址的关系,确定待读取数据的数据类型对应的存储区域的起始地址,通过访问该起始地址读取待读取数据。
S213、若待读取数据的数据类型对应的存储属性为非频繁存储,则从flash存储器中读取该待读取数据。
具体地,从flash存储器中读取该待读取数据可以通过步骤S2131至步骤S2134实现,详细说明如下:
S2131、根据flash页的页状态,确定flash存储器中的有效flash页。
具体地,如果flash存储器中flash页的页状态为0x0000,则表示在该flash页中存储了有效数据,该flash页为有效flash页。
如果flash存储器中的flash页的页状态不合法,即页状态不属于上述表1中定义的页状态的类型,则返回flash页不合法的错误,流程结束。
S2132、遍历有效flash页中的控制块。
具体地,对步骤S2131确定的有效flash页中的控制块进行遍历,查询待读取数据的数据类型对应的控制块。
S2133、若控制块的块状态为有效状态,并且待读取数据的数据类型与该控制块的数据标识相同,则根据控制块中的存储信息,确定该待读取数据在有效flash页中的存储位置。
具体地,在对控制块进行遍历的过程中,如果当前控制块的块状态为有效状态,并且待读取数据的数据类型与该当前控制块的数据标识相同,则该控制块记录了待读取数据对应的信息,根据该控制块中保存的数据偏移地址和数据长度,确定该待读取数据在有效flash页中的存储位置。
如果对控制块的遍历完成后,仍然没有找到满足“控制块的块状态为有效状态,并且待读取数据的数据类型与该控制块的数据标识相同”这一条件的控制块,则认定读取出错,返回读取失败的错误,流程结束。
S2134、根据存储位置读取待读取数据。
具体地,根据步骤S2133确定的存储位置,从有效flash页的该存储位置读取待读取数据,并根据步骤S2133得到的控制块中记录的校验和信息,对读取出的待读取数据进行校验,若校验成功,则返回待读取数据,若校验失败,则认定读取出错,返回校验失败的错误提示。
本实施例中,通过获取待存储的数据,确定待存储数据的数据类型以及该数据类型对应的存储属性,若存储属性为频繁存储,则根据待存储数据的数据类型,将该待存储数据保存到外部存储器中该数据类型对应的存储区域,通过将频繁存储的数据以固定地址存储的方式存储在外部存储器,能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势;若存储属性为非频繁存储,则根据预先设置的flash页和控制块的数据结构,首先根据页状态,确定flash存储器中有效的flash页,作为第一flash页,然后对第一flash页的控制块进行遍历,确定在第一flash页中是否已经存储过待存储数据的数据类型的数据,若已经存储过,则已经存储过的数据对应的控制块的块状态置为无效,以确保在flash存储器中存储的该数据类型的数据是最新数据,若遍历完成并且第一flash页未写满,则写入待存储数据和该待存储数据对应的控制块,若遍历完成并且第一flash页已经写满,则将块状态为有效状态的控制块和对应的数据块搬运到没有数据的第二flash页,擦除第一flash页的内容,在第二flash页中为待存储数据分配数据块和控制块,将该待存储数据写入该数据块,并根据该数据块填写该控制块的内容,通过将非频繁存储的数据以循环存储的方式存储在内部flash存储器,能够减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。并且,在对非频繁存储的数据进行存储时,通过flash循环存储的方式,使得在存储数据的过程中,无需频繁的擦写,仅写满一页数据时,才需擦除已经写满的flash页,并该flash页的有效数据和待存储数据拷贝到新的flash页面,从而有效延长flash的使用时间;通过控制块和数据块唯一对应的存储方式,能够满足不定长数据的存储需求;通过在控制块中增加校验和信息,在读取数据时根据校验和进行数据校验,能够满足对复杂数据的存储,提高数据可靠性。
实施例三:
图5是本发明实施例三提供的一种数据存储的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图5示例的一种数据存储的装置可以是前述实施例一提供的数据存储的方法的执行主体。图5示例的一种数据存储的装置包括:获取模块31、确定模块32、外部存储模块33和内部存储模块34,各功能模块详细说明如下:
获取模块31,用于获取待存储数据;
确定模块32,用于确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
外部存储模块33,用于若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
内部存储模块34,用于若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器。
本实施例提供的一种数据存储的装置中各模块实现各自功能的过程,具体可参考前述图1所示实施例的描述,此处不再赘述。
从上述图5示例的一种数据存储的装置可知,本实施例中,通过获取待存储的数据,确定待存储数据的数据类型以及该数据类型对应的存储属性,并根据存储属性对待存储数据进行分类存储,使得需要频繁存储的数据被存储在外部存储器中,不需要频繁存储的数据被存储在内部flash存储器中,将频繁存储的数据存储在外部存储器能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势,同时将非频繁存储的数据存储在内部flash存储器中,减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。
实施例四:
图6是本发明实施例四提供的一种数据存储的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图6示例的一种数据存储的装置可以是前述实施例二提供的数据存储的方法的执行主体。图6示例的一种数据存储的装置包括:获取模块41、确定模块42、外部存储模块43和内部存储模块44,各功能模块详细说明如下:
获取模块41,用于获取待存储数据;
确定模块42,用于确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
外部存储模块43,用于若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
内部存储模块44,用于若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器。
进一步地,外部存储模块43还用于:
根据所述数据类型,将所述待存储数据保存到所述外部存储器中该数据类型对应的存储区域;其中,所述外部存储器被预先划分为预设个数的所述存储区域。
进一步地,所述flash存储器包括预设个数的flash页,所述flash页包括页状态、控制块区域和数据块区域,所述控制块区域由控制块组成,所述数据块区域由数据块组成,所述控制块与所述数据块唯一对应,所述控制块包括块状态、对应数据块中数据的数据标识和存储信息,内部存储模块44包括:
第一flash页确定单元441,用于根据所述页状态,确定所述flash存储器中有效的flash页,作为第一flash页;
第一遍历单元442,用于对所述第一flash页的控制块进行遍历;
无效设置单元443,用于若所述控制块的块状态为有效状态,并且所述待存储数据的数据类型与所述控制块的数据标识相同,则确认该数据类型的数据已经被存储,将所述控制块的块状态设置为无效状态;
第一写入单元444,用于若所述遍历完成并且所述第一flash页未写满,则写入所述待存储数据和所述待存储数据对应的控制块;
搬运单元445,用于若所述遍历完成并且所述第一flash页已经写满,则将所述块状态为所述有效状态的控制块和对应的数据块搬运到没有数据的第二flash页;
擦除单元446,用于擦除所述第一flash页的内容;
第二写入单元447,用于在所述第二flash页中为所述待存储数据分配数据块和控制块,将所述待存储数据写入该数据块,并根据该数据块填写所述控制块的内容。
进一步地,所述装置还包括:
接收模块45,用于接收包含待读取数据的数据类型的数据读取请求;
第一读取模块46,用于若所述数据类型对应的存储属性为所述频繁存储,则从所述外部存储器中读取所述待读取数据;
第二读取模块47,用于若所述数据类型对应的存储属性为所述非频繁存储,则从所述flash存储器中读取所述待读取数据。
进一步地,第二读取模块47包括:
有效flash页确定单元471,用于根据所述页状态,确定所述flash存储器中的有效flash页;
读取遍历单元472,用于遍历所述有效flash页中的控制块;
位置确定单元473,用于若所述控制块的块状态为所述有效状态,并且所述待读取数据的数据类型与所述控制块的数据标识相同,则根据所述控制块中的所述存储信息,确定所述待读取数据在所述有效flash页中的存储位置;
读取单元474,用于根据所述存储位置读取所述待读取数据。
本实施例提供的一种数据存储的装置中各模块实现各自功能的过程,具体可参考前述图2所示实施例的描述,此处不再赘述。
从上述图6示例的一种数据存储的装置可知,本实施例中,通过获取待存储的数据,确定待存储数据的数据类型以及该数据类型对应的存储属性,若存储属性为频繁存储,则根据待存储数据的数据类型,将该待存储数据保存到外部存储器中该数据类型对应的存储区域,通过将频繁存储的数据以固定地址存储的方式存储在外部存储器,能够有效发挥外部存储器读写寿命长,并且读写速度快功耗低的优势;若存储属性为非频繁存储,则根据预先设置的flash页和控制块的数据结构,首先根据页状态,确定flash存储器中有效的flash页,作为第一flash页,然后对第一flash页的控制块进行遍历,确定在第一flash页中是否已经存储过待存储数据的数据类型的数据,若已经存储过,则已经存储过的数据对应的控制块的块状态置为无效,以确保在flash存储器中存储的该数据类型的数据是最新数据,若遍历完成并且第一flash页未写满,则写入待存储数据和该待存储数据对应的控制块,若遍历完成并且第一flash页已经写满,则将块状态为有效状态的控制块和对应的数据块搬运到没有数据的第二flash页,擦除第一flash页的内容,在第二flash页中为待存储数据分配数据块和控制块,将该待存储数据写入该数据块,并根据该数据块填写该控制块的内容,通过将非频繁存储的数据以循环存储的方式存储在内部flash存储器,能够减少对外部存储器的空间需求,从而在保证数据实时存储的同时,降低硬件成本。并且,在对非频繁存储的数据进行存储时,通过flash循环存储的方式,使得在存储数据的过程中,无需频繁的擦写,仅写满一页数据时,才需擦除已经写满的flash页,并该flash页的有效数据和待存储数据拷贝到新的flash页面,从而有效延长flash的使用时间;通过控制块和数据块唯一对应的存储方式,能够满足不定长数据的存储需求;通过在控制块中增加校验和信息,在读取数据时根据校验和进行数据校验,能够满足对复杂数据的存储,提高数据可靠性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据存储的方法,其特征在于,所述方法包括:
获取待存储数据;
确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器;
所述flash存储器包括预设个数的flash页,所述flash页包括页状态、控制块区域和数据块区域,所述控制块区域由控制块组成,所述数据块区域由数据块组成,所述控制块与所述数据块唯一对应,所述控制块包括块状态、对应数据块中数据的数据标识和存储信息,所述将所述待存储数据保存到flash存储器包括:
根据所述页状态,确定所述flash存储器中有效的flash页,作为第一flash页;
对所述第一flash页的控制块进行遍历;
若所述控制块的块状态为有效状态,并且所述待存储数据的数据类型与所述控制块的数据标识相同,则确认该数据类型的数据已经被存储,将所述控制块的块状态设置为无效状态;
若所述遍历完成并且所述第一flash页未写满,则写入所述待存储数据和所述待存储数据对应的控制块;
若所述遍历完成并且所述第一flash页已经写满,则将所述块状态为所述有效状态的控制块和对应的数据块搬运到没有数据的第二flash页;
擦除所述第一flash页的内容;
在所述第二flash页中为所述待存储数据分配数据块和控制块,将所述待存储数据写入该数据块,并根据该数据块填写所述控制块的内容。
2.如权利要求1所述的方法,其特征在于,所述将所述待存储数据保存到外部存储器包括:
根据所述数据类型,将所述待存储数据保存到所述外部存储器中该数据类型对应的存储区域;其中,所述外部存储器被预先划分为预设个数的所述存储区域。
3.如权利要求1所述的方法,其特征在于,所述若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器之后,所述方法还包括:
接收包含待读取数据的数据类型的数据读取请求;
若所述数据类型对应的存储属性为所述频繁存储,则从所述外部存储器中读取所述待读取数据;
若所述数据类型对应的存储属性为所述非频繁存储,则从所述flash存储器中读取所述待读取数据。
4.如权利要求3所述的方法,其特征在于,所述从所述flash存储器中读取所述待读取数据包括:
根据所述页状态,确定所述flash存储器中的有效flash页;
遍历所述有效flash页中的控制块;
若所述控制块的块状态为所述有效状态,并且所述待读取数据的数据类型与所述控制块的数据标识相同,则根据所述控制块中的所述存储信息,确定所述待读取数据在所述有效flash页中的存储位置;
根据所述存储位置读取所述待读取数据。
5.一种数据存储的装置,其特征在于,所述装置包括:
获取模块,用于获取待存储数据;
确定模块,用于确定所述待存储数据的数据类型以及所述数据类型对应的存储属性;其中,所述存储属性包括频繁存储和非频繁存储;
外部存储模块,用于若所述存储属性为所述频繁存储,则将所述待存储数据保存到外部存储器;
内部存储模块,用于若所述存储属性为所述非频繁存储,则将所述待存储数据保存到flash存储器;
所述flash存储器包括预设个数的flash页,所述flash页包括页状态、控制块区域和数据块区域,所述控制块区域由控制块组成,所述数据块区域由数据块组成,所述控制块与所述数据块唯一对应,所述控制块包括块状态、对应数据块中数据的数据标识和存储信息,所述内部存储模块包括:
第一flash页确定单元,用于根据所述页状态,确定所述flash存储器中有效的flash页,作为第一flash页;
第一遍历单元,用于对所述第一flash页的控制块进行遍历;
无效设置单元,用于若所述控制块的块状态为有效状态,并且所述待存储数据的数据类型与所述控制块的数据标识相同,则确认该数据类型的数据已经被存储,将所述控制块的块状态设置为无效状态;
第一写入单元,用于若所述遍历完成并且所述第一flash页未写满,则写入所述待存储数据和所述待存储数据对应的控制块;
搬运单元,用于若所述遍历完成并且所述第一flash页已经写满,则将所述块状态为所述有效状态的控制块和对应的数据块搬运到没有数据的第二flash页;
擦除单元,用于擦除所述第一flash页的内容;
第二写入单元,用于在所述第二flash页中为所述待存储数据分配数据块和控制块,将所述待存储数据写入该数据块,并根据该数据块填写所述控制块的内容。
6.如权利要求5所述的装置,其特征在于,所述外部存储模块还用于:
根据所述数据类型,将所述待存储数据保存到所述外部存储器中该数据类型对应的存储区域;其中,所述外部存储器被预先划分为预设个数的所述存储区域。
7.如权利要求5所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收包含待读取数据的数据类型的数据读取请求;
第一读取模块,用于若所述数据类型对应的存储属性为所述频繁存储,则从所述外部存储器中读取所述待读取数据;
第二读取模块,用于若所述数据类型对应的存储属性为所述非频繁存储,则从所述flash存储器中读取所述待读取数据。
8.如权利要求7所述的装置,其特征在于,所述第二读取模块包括:
有效flash页确定单元,用于根据所述页状态,确定所述flash存储器中的有效flash页;
读取遍历单元,用于遍历所述有效flash页中的控制块;
位置确定单元,用于若所述控制块的块状态为所述有效状态,并且所述待读取数据的数据类型与所述控制块的数据标识相同,则根据所述控制块中的所述存储信息,确定所述待读取数据在所述有效flash页中的存储位置;
读取单元,用于根据所述存储位置读取所述待读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710337844.9A CN108874298B (zh) | 2017-05-15 | 2017-05-15 | 一种数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710337844.9A CN108874298B (zh) | 2017-05-15 | 2017-05-15 | 一种数据存储的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874298A CN108874298A (zh) | 2018-11-23 |
CN108874298B true CN108874298B (zh) | 2021-08-03 |
Family
ID=64320254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710337844.9A Active CN108874298B (zh) | 2017-05-15 | 2017-05-15 | 一种数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874298B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977176B (zh) * | 2019-03-25 | 2022-02-22 | 上海火了信息科技有限公司 | 数据处理方法及装置 |
CN110134645B (zh) * | 2019-04-15 | 2023-07-11 | 深圳市战音科技有限公司 | 文件系统存储管理方法、读取方法、管理装置和读取装置 |
CN111367917B (zh) * | 2020-03-05 | 2024-02-27 | 扬州大学 | 一种用于水泵机组状态评价的数据存储方法 |
CN113342571A (zh) * | 2021-05-26 | 2021-09-03 | 南京中科神光科技有限公司 | 一种应用于嵌入式系统的eeprom数据掉电不丢失方法 |
CN114428591A (zh) * | 2022-01-27 | 2022-05-03 | 北京海纳川汽车部件股份有限公司 | 车载网关的数据存储方法、读取方法及装置 |
CN114721982B (zh) * | 2022-03-22 | 2024-06-18 | 潍柴动力股份有限公司 | 一种可配置存储数据类型的读写处理方法及系统 |
CN115993940B (zh) * | 2023-03-23 | 2023-07-25 | 青岛鼎信通讯股份有限公司 | 一种电量防丢失方法、装置、电能表设备以及存储介质 |
CN117709086A (zh) * | 2023-12-08 | 2024-03-15 | 中核四川环保工程有限责任公司 | 一种基于放射性泥浆的振动脱水筛参数寻优方法 |
CN117707434B (zh) * | 2024-02-02 | 2024-05-17 | 深圳曦华科技有限公司 | 一种Flash的数据写入方法、装置、车辆以及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1822230A (zh) * | 2006-03-02 | 2006-08-23 | 浙江大学 | 基于NAND Flash存储器文件系统的实现方法 |
CN101388110A (zh) * | 2008-10-31 | 2009-03-18 | 深圳市同洲电子股份有限公司 | 数据快速读取方法及装置 |
CN101521734A (zh) * | 2009-03-31 | 2009-09-02 | 深圳创维-Rgb电子有限公司 | 一种存储电视数据的方法、装置及电视机 |
CN101546298A (zh) * | 2008-03-28 | 2009-09-30 | 群联电子股份有限公司 | 用于闪存的数据读取方法、其控制器与储存系统 |
CN201387448Y (zh) * | 2009-02-25 | 2010-01-20 | 青岛乾程电子科技有限公司 | 一种高可靠性数据存储多功能电能表 |
CN101681314A (zh) * | 2008-03-01 | 2010-03-24 | 株式会社东芝 | 存储器系统 |
US8429243B1 (en) * | 2007-12-13 | 2013-04-23 | Google Inc. | Web analytics event tracking system |
CN104461917A (zh) * | 2014-12-05 | 2015-03-25 | 宁波新尚智能电气有限公司 | 基于Nor Flash的区域循环存储方法 |
CN106354662A (zh) * | 2015-07-17 | 2017-01-25 | 陕西千山航空电子有限责任公司 | 一种nand flash数据存储方法 |
CN106655479A (zh) * | 2015-07-21 | 2017-05-10 | 深圳市奇辉电气有限公司 | 一种配电一体化综合监控终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101811297B1 (ko) * | 2011-03-15 | 2017-12-27 | 삼성전자주식회사 | 불휘발성 메모리를 제어하는 메모리 컨트롤러 |
KR101792870B1 (ko) * | 2011-06-21 | 2017-11-02 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 읽기 방법 |
-
2017
- 2017-05-15 CN CN201710337844.9A patent/CN108874298B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1822230A (zh) * | 2006-03-02 | 2006-08-23 | 浙江大学 | 基于NAND Flash存储器文件系统的实现方法 |
US8429243B1 (en) * | 2007-12-13 | 2013-04-23 | Google Inc. | Web analytics event tracking system |
CN101681314A (zh) * | 2008-03-01 | 2010-03-24 | 株式会社东芝 | 存储器系统 |
CN101546298A (zh) * | 2008-03-28 | 2009-09-30 | 群联电子股份有限公司 | 用于闪存的数据读取方法、其控制器与储存系统 |
CN101388110A (zh) * | 2008-10-31 | 2009-03-18 | 深圳市同洲电子股份有限公司 | 数据快速读取方法及装置 |
CN201387448Y (zh) * | 2009-02-25 | 2010-01-20 | 青岛乾程电子科技有限公司 | 一种高可靠性数据存储多功能电能表 |
CN101521734A (zh) * | 2009-03-31 | 2009-09-02 | 深圳创维-Rgb电子有限公司 | 一种存储电视数据的方法、装置及电视机 |
CN104461917A (zh) * | 2014-12-05 | 2015-03-25 | 宁波新尚智能电气有限公司 | 基于Nor Flash的区域循环存储方法 |
CN106354662A (zh) * | 2015-07-17 | 2017-01-25 | 陕西千山航空电子有限责任公司 | 一种nand flash数据存储方法 |
CN106655479A (zh) * | 2015-07-21 | 2017-05-10 | 深圳市奇辉电气有限公司 | 一种配电一体化综合监控终端 |
Also Published As
Publication number | Publication date |
---|---|
CN108874298A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874298B (zh) | 一种数据存储的方法及装置 | |
US9842030B2 (en) | Data storage device and flash memory control method | |
US9965198B2 (en) | Internally preconditioning solid state drives for various workloads | |
US9396107B2 (en) | Memory system having memory controller with cache memory and NVRAM and method of operating same | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
US20070094440A1 (en) | Enhanced data access in a storage device | |
KR20200022118A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
US9058255B2 (en) | Solid state drive and method for constructing logical-to-physical table thereof | |
US20120030411A1 (en) | Data protecting method, memory controller and portable memory storage apparatus | |
CN106648463B (zh) | Nand Flash块管理方法和系统 | |
CN104699417A (zh) | 数据储存装置以及其数据存取方法 | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
CN105446664B (zh) | 一种对存储器进行文件存储方法和存储装置 | |
CN110389908A (zh) | 存储器系统、数据处理系统和存储器系统的操作方法 | |
CN105308575A (zh) | 用于错误校正码(ecc)错误处理的方法和装置 | |
US20220138096A1 (en) | Memory system | |
CN107422992A (zh) | 一种SSD运行时Journal保存方法及系统 | |
CN101295281A (zh) | 一种对存储设备进行访问权限限制的方法及存储设备 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
CN107958690B (zh) | 数据存储装置及其操作方法 | |
CN107257281B (zh) | Nor flash存储密钥记录的方法、装置及计算机可读存储介质 | |
US11720276B2 (en) | Memory system and controller for managing write status | |
US20190278703A1 (en) | Memory system, operating method thereof and electronic device | |
CN115328851A (zh) | 一种数据保护方法、装置、设备及介质 | |
CN111198651B (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 518000 zones 102, 103, 202 and 302a, No. 336-1, Xiangshan Avenue, Luotian community, Yanluo street, Bao'an District, Shenzhen, Guangdong Province Patentee after: Shenzhen jinqihui Electric Co.,Ltd. Address before: 518000 1st floor, West 3rd floor, North 1st floor, Diguang digital technology park, 1161 guangqiao Avenue, Guangming Street, Guangming New District, Shenzhen City, Guangdong Province Patentee before: SHENZHEN QIHUI ELECTRICAL Co.,Ltd. |