CN107273233B - 一种数据读取方法和装置 - Google Patents

一种数据读取方法和装置 Download PDF

Info

Publication number
CN107273233B
CN107273233B CN201710375462.5A CN201710375462A CN107273233B CN 107273233 B CN107273233 B CN 107273233B CN 201710375462 A CN201710375462 A CN 201710375462A CN 107273233 B CN107273233 B CN 107273233B
Authority
CN
China
Prior art keywords
image data
mirror image
data
read
reading
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
Application number
CN201710375462.5A
Other languages
English (en)
Other versions
CN107273233A (zh
Inventor
郑星剑
方伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Xinsheng Electronic Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201710375462.5A priority Critical patent/CN107273233B/zh
Publication of CN107273233A publication Critical patent/CN107273233A/zh
Application granted granted Critical
Publication of CN107273233B publication Critical patent/CN107273233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明实施例涉及芯片无盘启动ROM接口技术领域,尤其涉及一种数据读取方法和装置,用于实现有效保障芯片启动时读取的镜像数据的完整性。针对主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。本发明实施例提供的方法解决了现有技术中的主、备镜像数据的所述块的所述页同时读取错误时即无法启动系统的问题,实现有效保障芯片启动时读取的镜像数据的完整性。

Description

一种数据读取方法和装置
技术领域
本发明实施例涉及芯片无盘启动ROM接口技术领域,尤其涉及一种数据读取方法和装置。
背景技术
目前的非易失性存储设备主要包括或非闪存NOR FLASH和与非闪存NAND FLASH两种。其中,NOR FLASH的所有存储区域都必须保证是完好的,具有使用耐久性,但是产量较低;为了增加产量和降低生产成本,生产的与非闪存NAND FLASH中会随机出现一些坏块,为了防止数据存储到这些坏块中,会在备用区域标识坏块。将用于系统启动的镜像数据存入NAND FLASH中时,会跳过其中的坏块,将数据存储在好块中,以便于系统启动时,读取镜像数据。
现有技术中,采用以下几种方式读取镜像数据:(1)直接从0地址读取镜像数据到系统的指定内存中,这种方式容易出现读取到错误数据导致的系统的CPU死机的情况。(2)采用跳坏块的方式,启动信息存放在第一块,然后每读到一块,检查当前块是否是坏块,如果是则跳到下一个块继续判断,在一定阈值内(如最大4个坏块)如果找到好块,则进行读镜像数据的操作。这种方式要求第一块必须是好块,由于NAND FLASH的质量良莠不齐,如果出现第一块是坏块,则无法启动系统。(3)双镜像是在好块中,如果碰到读页Page出现不可纠正的错误时,跳到下一个好块的同Page读镜像;如果主镜像和备镜像同一个Page都出现ECC无法纠错的现象时,系统无法正常启动。
现有技术中的读取镜像数据时所有镜像同page出现ECC无法纠错时,并不能有效保障读取镜像数据的完整性;因此,亟需一种数据读取方法,实现有效保障芯片启动时读取的镜像数据的完整性。
发明内容
本发明实施例提供一种数据读取方法和装置,用于实现有效保障芯片启动时读取的镜像数据的完整性。
本发明实施例提供了一种数据读取方法,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;所述方法包括:针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。
本发明实施例提供一种数据读取装置,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;其中,M为正整数;所述装置包括:确定单元,用于针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;读取单元,用于从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。
本发明实施例中,针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。也就是说,本发明实施例的方法从备镜像的数据包中读取在主镜像数据中读取错误的数据包的标识对应的数据包,解决了现有技术中的主、备镜像数据的所述块的所述页同时读取错误时即无法启动系统的问题,实现有效保障芯片启动时读取的镜像数据的完整性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1为本发明实施例提供的一种NAND FLASH存储区结构示意图;
图2为本发明实施例提供的一种数据读取方法流程示意图;
图3为本发明实施例提供的另一种数据读取方法流程示意图;
图4为本发明实施例提供的一种遍历头信息方法流程示意图;
图5为本发明实施例提供的一种读取单块数据方法流程示意图;
图6为本发明实施例提供的一种数据读取装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示例性示出了本发明实施例适用的一种NAND FLASH存储区结构示意图,如图1所示,该NAND FLASH存储区100包括数据存储区110和备用存储区120;其中,数据存储区110用于存储主镜像数据和至少一份备镜像数据;备用存储区120用于存储好块和坏块标识、ECC纠错码等。
本发明实施例中,将待读取数据存储在数据存储区110中,主要包括:主镜像数据和至少一份备镜像数据;本发明实施例并不限定备镜像数据的份数,具体份数根据实际需求进行设置。如图1所示,数据存储区110存储的镜像数据包括主镜像数据111、备镜像数据一112、备镜像数据二113、备镜像数据N114;其中,主镜像数据111存储在块0、块1、块2中;备镜像数据一112存储在块3、块4、块5中;备镜像数据二113存储在块5、块7、块8中;备镜像数据N114存储在块n-2、块n-1、块n中。
本发明实施例中,数据存储区中包括n+1个块,从块0开始,到块n结束;本发明实施例中,在向数据存储区存储镜像数据之前,根据备用存储区中存储的好块和坏块标识,确定出数据存储区中的坏块,并将镜像数据存储于好块中。
针对数据存储区中的每一个好块,按页进行存储数据,比如第一块为块0,其包括k+1个页,从页0开始至页k结束;针对数据存储区中的每一块的每一页,镜像数据被存储为多个数据包,每个数据包中包括镜像数据和该镜像数据的原始校验值;原始校验值用于校验该数据包中的镜像数据是否成功读取。可选地,对每一页的数据进行分包存储时,每个数据包中镜像数据的长度和原始校验值的长度可根据实际需要进行设置,此处不作具体限定;比如将每个数据包的长度设为128字节,其中包括124字节的镜像数据和4字节的原始校验值;又比如将每个数据包的长度设为256字节,其中包括252字节的镜像数据和4字节的原始校验值。原始校验值可为CRC循环冗余校验方法得到的CRC校验值,也可以为异或算法得到的异或校验值,也可以为校验和(checksum)算法得到的校验值,具体采用的校验值不限于上述列举出的用于校验该数据包中的镜像数据完整性的校验值。
本发明实施例中,存储在数据存储区的每份镜像数据对应一个头信息,头信息存储于该镜像数据存储的第一块的第一页中;例如,如图1所示,主镜像数据111存储于块0、块1、块2中,则主镜像数据111对应的头信息存储于块0的页0中;备镜像数据一112存储在块3、块4、块5中,则备镜像数据一112对应的头信息存储于块3的页0中;备镜像数据二113存储在块5、块7、块8中,则备镜像数据二113对应的头信息存储于块5的页0中;备镜像数据N114存储在块n-2、块n-1、块n中,则备镜像数据N114对应的头信息存储于块n-2的页0中。
图2示例性示出了本发明实施例提供的一种数据读取方法流程示意图。
基于图1所示的系统架构,如图2所示,本发明实施例提供的一种数据读取方法,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;其中,M为正整数;该方法包括以下步骤:
步骤S201:针对主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;
步骤S202:从M份备镜像数据中读取该读取错误的数据包的标识对应的数据包。
基于上述实施例,在步骤S201中,所述读取错误是指:在读取数据包中的镜像数据时读取过程中出错、且对该读取过程中出错的镜像数据使用ECC纠错码纠错失败。举个例子,例如,主镜像数据存储在数据存储区的块0和块1中,块0为存储主镜像数据的第一块,块1为存储主镜像数据的第二块;在读取主镜像数据中的第一块第二页(即为块0中的页1)时,若该第一块第二页的数据包读取过程中出错,则使用ECC纠错码对该第一块第二页中的数据包进行纠错,若纠错成功,则读取成功;若纠错失败,则读取错误。
本发明实施例中,在主镜像数据中的第一块第二页(即为块0中的页1)中,包括多个数据包,比如,在其中的数据包3和数据包5读取错误,则确定出读取错误的数据包3的标识ID3和数据包5的标识ID5。
基于上述实施例的步骤S202,举个例子,数据存储区包括主镜像数据和2份备镜像数据,主镜像数据存储在数据存储区的块0和块1中,块0为存储主镜像数据的第一块、块1为存储主镜像数据的第二块;备镜像数据一存储在数据存储区的块2和块3中,块2为存储备镜像数据一的第一块、块3为存储备镜像数据一的第二块;备镜像数据二存储在数据存储区的块4和块5中,块4为存储备镜像数据二的第一块、块5为存储备镜像数据二的第二块;在主镜像数据中的第一块第二页数据包3和数据包5读取错误,则从2份备镜像数据中读取标识为ID3和ID5的数据包,读取2份备镜像数据中的标识为ID3和ID5的数据包中的镜像数据。
确定出主镜像数据的第一块第二页中读取错误的数据包的标识ID3和ID5之后,从所述2份备镜像数据中读取数据包,具体的读取方式有多种:
其中一种方式为:先分别从所有备镜像数据的第一块第二页中,确定出所有标识为ID3的数据包组成ID3集合,以及确定出标识为ID5的数据包组成ID5集合;再从ID3集合中读取标识为ID3的数据包,从ID5集合中读取标识为ID3的数据包;
另一种方式为:从备镜像数据一的第一块第二页中,确定出标识ID3和ID5的数据包,读取标识为ID3的数据包和标识为ID5的数据包均成功之后,先从读取备镜像数据一的第一块第二页中读取数据包,读取错误之后再从备镜像数据二的第一块第二页中读取数据包;分两种情况:其一,若在备镜像数据一的第一块第二页中的标识ID3和ID5的数据包中的任一个数据包读取错误,比如标识ID3的数据包读取错误,标识ID5的数据包读取正确,则读取备镜像数据一的第一块第二页中标识ID5的数据包,并从备镜像数据二的第一块第二页中读取标识ID3的数据包;其二,若备镜像数据一的第一块第二页中的标识ID3和ID5的数据包均读取错误,则从备镜像数据二的第一块第二页中读取标识ID3和ID5的数据包。
本发明实施例中,针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。也就是说,本发明实施例的方法从备镜像的数据包中读取在主镜像数据中读取错误的数据包的标识对应的数据包,解决了现有技术中的主、备镜像数据的所述块的所述页同时读取错误时即无法启动系统的问题,实现有效保障芯片启动时读取的镜像数据的完整性。
基于步骤201,所述确定所述主镜像数据中所述块的所述页的所述数据包读取错误,包括:从所述数据包中读取镜像数据和所述镜像数据对应的原始校验值;对从所述数据包中读取到的所述镜像数据进行校验,得到所述镜像数据对应的待验证校验值;在所述镜像数据对应的待验证校验值和所述镜像数据对应的原始校验值不匹配的情况下,确定所述主镜像数据中所述块的所述页的所述数据包读取错误。每个数据包包括镜像数据部分和校验值部分,其中的校验值为通过对数据包中的镜像数据部分进行校验得到的,校验值可为CRC循环冗余校验方法得到的CRC校验值,也可以为异或算法得到的异或校验值,也可以为校验和(checksum)算法得到的校验值,具体采用的校验值不限于上述列举出的用于校验镜像数据完整性的校验值。如此,本发明实施例中的方法根据校验值,可准确的确定出该数据包中的镜像数据是否读取错误。
本发明实施例中,以CRC校验值为例进行介绍:每个数据包中包括镜像数据和原始CRC校验值,其中,原始CRC校验值为在向该数据包中存储镜像数据时,对存储于该数据包中的镜像数据的进行CRC校验得到的。针对读取到的每个数据包,对读取到的数据包中包括的镜像数据进行CRC校验,得到待验证CRC校验值。可选地,在该数据包对应的待验证CRC校验值和该数据包对应的原始CRC校验值匹配的情况下,确定该数据包读取成功。
上述实施例步骤S202中,从M份备镜像数据中读取该读取错误的数据包的标识对应的数据包,具体的实现方式为:在读取单页数据时,通过建立CRC块位图的方式,确定单页中包括的多个数据包是否读取正确;其中,CRC块位图包括数据包标识和读取标志;将数据包读取正确的标志设置为1,数据包读取错误的标志设置为0。
举个例子,比如,单页长度为512字节,数据包长度为128字节,则单页包括4个数据包,数据包标识为:ID1、ID2、ID3和ID4;表1示例性的示出了本发明实施例的各个镜像数据中的同一页(第一块的第三页)的CRC块位图的一种表示方式。
Figure GDA0002414255120000081
如表1所示,其一、在主镜像数据中的第一块的第三页,读取正确的数据包标识为ID1、ID2和ID4,读取错误的数据包标识为ID3,则主镜像的第一块的第三页的数据包ID1对应的读取标志为1、ID2对应的读取标志为1、ID3对应的读取标志为0、ID4对应的读取标志为1;
其二、在备镜像数据一中的第一块的第三页,读取正确的数据包标识为ID1和ID2,读取错误的数据包标识为ID3和ID4;则备镜像数据中的第一块的第三页的数据包ID1对应的读取标志为1、ID2对应的读取标志为1、ID3对应的读取标志为0、ID4对应的读取标志为0;
其三、在备镜像数据二中的第一块的第三页,读取正确的数据包标识为ID2、ID3和ID4,读取错误的数据包标识为ID1;则备镜像数据中的第一块的第三页的数据包ID1对应的读取标志为0、ID2对应的读取标志为1、ID3对应的读取标志为1、ID4对应的读取标志为1;
其四、在主镜像数据中的第一块的第三页读取错误,确定出数据包ID3读取错误,根据CRC块位图确定出备镜像数据二的数据包ID3读取正确;则将主镜像数据中的数据包ID1、ID2、ID4,以及备镜像数据二的数据包ID3存入芯片的内存中目标地址,以便于在读取镜像数据后启动芯片。
基于步骤201,可选地,所述若确定主镜像数据中所述块的所述页的所述数据包读取错误,包括:若主镜像数据中所述块的所述页的多个数据包中的至少一个数据包读取错误;且:从M份备镜像的所述块的所述页读取所述页的所有数据包,且针对M份备镜像数据中的每个备镜像数据,所述备镜像数据的所述块的所述页的至少一个数据包读取错误。
举个例子,M等于4,例如主镜像数据中的第一块的第二页包括5个数据包,每个备镜像数据中的第一块的第二页包括5个数据包;其中,在读取主镜像数据中的第一块的第二页的5个数据包时,至少一个数据包读取错误,则从备镜像数据一中的第一块的第二页读取5个数据包;若备镜像数据一中的第一块的第二页的5个数据包读取成功,则继续读取主镜像数据中的第一块的第三页的数据包;若备镜像数据一中的第一块的第二页5个数据包至少一个数据包读取错误,则从备镜像数据二中的第一块的第二页中读取5个数据包,依次类推,若所有的备镜像数据中的第一块的第二页中至少一个数据包读取错误,则确定出主镜像中的第一块的第二页中的读取错误的数据包的标识。如此,根据主镜像数据中的读取错误的数据包的标识,从备镜像数据中读取相应位置的数据包,从而实现在主镜像数据中的数据包读取错误的情况下,从备镜像数据读取该数据包中的镜像数据,保证了数据读取的完整性。
可选地,数据读取方法还包括:针对主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定主镜像数据中的所述块的所述页的所述数据包读取正确,包括以下任一项条件:第一条,主镜像数据中的所述块的所述页的所有数据包读取成功;第二条,主镜像数据中的所述块的所述页的至少一个数据包读取错误,从M份备镜像的所述块的所述页读取所述页的所有数据包读取成功。
针对上述第一条,具体为:主镜像数据中的所述块的所述页的所有数据包读取成功,包括:针对主镜像数据中的所述块的所述页中的每个数据包,所述数据包在读取过程中读取成功;或者,在读取主镜像数据中的所述块的所述页中的所有数据包时,存在至少一个数据包读取错误,针对读取错误的数据包使用ECC纠错码纠错成功。
针对上述第二条,具体为:主镜像数据中的所述块的所述页的至少一个数据包读取错误,针对至少一个读取错误的数据包,使用ECC纠错码纠错失败;并从M份备镜像的所述块的所述页读取数据包成功;或者,从M份备镜像的所述块的所述页的至少一个数据包读取错误、且对读取错误的数据包使用所述读取错误的数据包对应的ECC纠错码纠错成功。
上述实施例的步骤S201中之前,即针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定主镜像数据中所述块的所述页的所述数据包读取错误之前,还包括:从主镜像数据中读取头信息和头信息对应的原始校验值;对从主镜像数据中读取到的头信息进行校验,得到头信息对应的待验证校验值;在头信息对应的待验证校验值和头信息对应的原始校验值匹配的情况下,确定从主镜像数据中读取的头信息读取正确;在头信息对应的待验证校验值和头信息对应的原始校验值不匹配的情况下,确定从主镜像数据中读取的头信息读取错误,并从M份备镜像数据中读取头信息。如此,可根据从主镜像数据中得到的头信息对应的原始校验值,和读取头信息之后进行校验得到的待验证校验值,准确的确定出读取到的头信息是否正确。
可选地,从M份备镜像数据中读取头信息之后,还包括:从主镜像数据中读取的头信息读取错误,则:根据头信息在主镜像数据中的地址和预设地址偏移量序列中包括的预设地址偏移量,确定出下N个待读取数据的头信息的地址;其中,N为正整数;根据预设地址偏移量序列中包括的预设地址偏移量排序,依序根据预设地址偏移量和头信息在主镜像数据中的地址,确定下个待读取数据的头信息的地址,直至从确定出的下个待读取数据的头信息的地址读出下个待读取数据的头信息为止。
本发明实施例中,针对主镜像数据和至少一个备镜像数据中的每个镜像数据,头信息存储在该镜像数据的第一块的第一页;其中,主镜像数据对应的头信息在主镜像数据中的地址为数据存储区的0地址。可选地,所述预设地址偏移量序列中包括的预设地址偏移量为64kB、128kB、256kB和512kB;根据预设地址偏移量,确定下一个待读取数据的地址为:当前地址加预设地址偏移量。
举个例子,以预设地址偏移量64kB为例,N为3,头信息在主镜像数据中的地址0地址为当前地址,从当前地址0地址开始读取头信息,若当前地址0地址头信息读取失败,则确定下一个待读取数据的地址为64kB;将64kB地址作为当前地址,若当前地址64kB头信息读取失败,则确定下一个待读取数据的地址为128kB;将128kB地址作为当前地址,若当前地址128kB头信息读取失败,则确定下一个待读取数据的地址为192kB;将192kB地址作为当前地址,若当前地址192kB头信息读取成功,则读取该地址的头信息;若当前地址192kB头信息读取失败,则根据预设地址偏移量序列中下一个预设地址偏移量128kB,读取M份镜像数据中的头信息。
以预设地址偏移量64kB从M份备镜像数据中读取头信息失败之后,以预设地址偏移量128kB从M份备镜像数据中读取头信息,N为3,以0地址为当前地址读取头信息,若当前地址0地址头信息读取失败,则确定下一个待读取数据的地址为128kB;将128kB地址作为当前地址,若当前地址128kB头信息读取失败,则确定下一个待读取数据的地址为256kB;若当前地址256kB头信息读取失败,则确定下一个待读取数据的地址为384kB;若当前地址384kB头信息读取失败,则根据预设地址偏移量序列中下一个预设地址偏移量256kB,读取M份镜像数据中的头信息。
依次类推,若以预设地址偏移量256kB从M份备镜像数据中读取头信息失败,则以预设地址偏移量512kB从M份备镜像数据中读取头信息,直至执行完预设地址偏移量序列中的所有预设地址偏移量。
本发明实施例中,无论是在主镜像数据中还是在备镜像数据中,读取到头信息并进行校验之后,头信息读取正确,则根据读取到的头信息进行主镜像数据的读取;若是在主镜像数据中读取的所述头信息读取错误,则根据预设地址偏移量,确定下一个待读取数据的头信息的地址;比如,N=4,根据一个预设地址偏移量确定4个读取头信息的地址,若该4个读取头信息的地址中有一个地址头信息读取正确,则根据读取到的头信息进行主镜像数据的读取;若该4个读取头信息的地址中头信息读取均错误,说明每个镜像数据并不是按照该预设地址偏移量大小存储的,则根据预设地址偏移量序列中的下一个预设地址偏移量,确定4个读取头信息的地址,依次类推,直到在其中一个读取头信息的地址中头信息读取正确为止;如此,可快速的确定读取头信息的地址,而且在每个预设地址偏移量确定N个读取头信息的地址头信息,可有效避免遍历所有地址读取头信息的问题,其中,N可根据实际需求进行取值,此处不作具体限定。
为了更清楚的介绍如何读取数据,本发明实施例提供以下以CRC校验值为例的示例。
图3示例性示出了本发明实施例提供的另一种数据读取的方法流程示意图。基于图1所示的NAND FLASH存储区结构,如图3所示,该方法包括以下步骤:
步骤S301:以读取数据存储区的第一块为当前块,读取待读取数据;
步骤S302:读取当前块的第一页存储的头信息;
步骤S303:是否在预设时长内读取到头信息;若是,则执行步骤S304;若否,则执行步骤S306;
步骤S304:获取原始CRC校验值,对读取到的头信息进行CRC校验得到待验证CRC校验值;
步骤S305:待验证CRC校验值与原始CRC校验值是否匹配;若是,则执行步骤S307;若否,则执行步骤S306;
步骤S306:确定下一个读取头信息地址,作为当前块地址;之后,继续执行步骤S302;
步骤S307:根据读取到的头信息,读取主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包;
步骤S308:主镜像数据中待读取块的待读取页的多个数据包中的是否存在至少一个数据包读取过程中出错、且ECC纠错失败;若是,则执行步骤S309;若否,则执行步骤S313;
步骤S309:读取备镜像数据中的待读取块的待读取页的所有数据包;
步骤S310:备镜像数据中待读取块的待读取页是否存在至少一个数据包读取过程中出错、且ECC纠错失败;若是,则执行步骤S311;若否,则执行步骤S314;
步骤S311:确定主镜像数据中待读取块的待读取页读取错误的数据包的标识;
步骤S312:从备镜像数据中所述块的所述页读取该读取错误的数据包的标识对应的数据包;之后,执行步骤S315;
步骤S313:读取主镜像数据中待读取块待读取页所有数据包;之后,执行步骤S315;
步骤S314:读取备镜像数据中待读取块待读取页所有数据包;之后,执行步骤S315;
步骤S315:继续读取主镜像数据中待读取块待读取页的下一页的数据包。
图4示例性示出了本发明实施例提供的一种遍历头信息的方法流程示意图。
基于图1所示的NAND FLASH存储区结构,如图3所示,该方法包括以下步骤:
步骤S401:确定数据存储区的0地址为当前地址;地址遍历计数i设为0;
步骤S402:在当前地址读取头信息;
步骤S403:在预设时长内是否读取到头信息;若是,则执行步骤S404;若否,则执行步骤S407;
步骤S404:在当前地址获取读取到的头信息的原始CRC校验值,对读取到的头信息进行CRC校验得到待验证CRC校验值;
步骤S405:确定待验证CRC校验值与原始CRC校验值是否匹配;若是,则执行步骤S406;若否,则执行步骤S407;
步骤S406:成功读取到头信息;
步骤S407:确定地址遍历计数是否达到阈值N;若是,则执行步骤S408;若否,则执行步骤S411;
步骤S408:是否为4-Cycle模式;若是,则执行步骤S409;若否,则执行步骤S410;
步骤S409:设置为5-Cycle模式,并以0地址为当前地址,地址遍历计数i设为0;之后,继续执行步骤S402;
步骤S410:头信息读取失败;
步骤S411:地址遍历计数i++;
步骤S412:根据预设地址偏移量序列中的一个预设地址偏移量,确定下一个读取头信息的地址为当前地址加预设地址偏移量;
步骤S413:以下一个读取头信息的地址为当前地址;之后,继续执行步骤S402,直到成功读取到头信息。
为了更清楚的介绍在读取到头信息之后如何读取待读取数据,举如下示例:图5示例性示出了本发明实施例提供的读取单块数据的方法流程示意图。
基于图1所示的NAND FLASH存储区结构,如图3所示,该方法包括以下步骤:
步骤S501:开始读取单块数据;
步骤S502:待读取数据的剩余长度为0?若是,则执行步骤S511;若否,则执行步骤S503;
步骤S503:待读取数据的剩余长度大于单页长度?若是,则执行步骤S504;若否,则执行步骤S505;
步骤S504:设置单次读长度为单页长度;
步骤S505:设置单次读长度为剩余长度;
步骤S506:根据单次读长度,读取单页的镜像数据;
步骤S507:读取单页数据是否成功;若是,则执行步骤S508;若否,则执行步骤S510;
步骤S508:更新读地址为下一页的地址,更新单次读长度为单页长度;
步骤S509:继续读取下一页的镜像数据;
步骤S510:待读取数据读取错误;
步骤S511:待读取数据读取成功。
从上述内容可以看出:由于针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。也就是说,本发明实施例的方法从备镜像的数据包中读取在主镜像数据中读取错误的数据包的标识对应的数据包,解决了现有技术中的主、备镜像数据的所述块的所述页同时读取错误时即无法启动系统的问题,实现有效保障芯片启动时读取的镜像数据的完整性。
图6示例性示出了本发明实施例提供的一种数据读取装置的结构示意图。
基于相同构思,本发明实施例提供的一种数据读取装置,用于执行上述方法流程,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;其中,M为正整数;如图6所示,该数据读取装置600包括确定单元601、读取单元602;还包括处理单元603;其中:
确定单元601,用于针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;
读取单元602,用于从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。
可选地,所述读取单元602,用于:若所述主镜像数据中所述块的所述页的多个数据包中的至少一个数据包读取错误;且:从所述M份备镜像的所述块的所述页读取所述页的所有数据包,且针对所述M份备镜像数据中的每个备镜像数据,所述备镜像数据的所述块的所述页的至少一个数据包读取错误。
可选地,还包括处理单元603;所述读取单元602,用于:从所述数据包中读取镜像数据和所述镜像数据对应的原始校验值;所述处理单元603,用于:对从所述数据包中读取到的所述镜像数据进行校验,得到所述镜像数据对应的待验证校验值;所述确定单元601,用于:在所述镜像数据对应的待验证校验值和所述镜像数据对应的原始校验值不匹配的情况下,确定所述主镜像数据中所述块的所述页的所述数据包读取错误。
可选地,所述读取单元602,还用于:从所述主镜像数据中读取所述头信息和所述头信息对应的原始校验值;所述处理单元603,还用于:对从所述主镜像数据中读取到的所述头信息进行校验,得到所述头信息对应的待验证校验值;所述确定单元601,还用于:在所述头信息对应的待验证校验值和所述头信息对应的原始校验值匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取正确;在所述头信息对应的待验证校验值和所述头信息对应的原始校验值不匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取错误,并通过读取单元602从所述M份备镜像数据中读取所述头信息。
可选地,所述确定单元601,还用于:从所述主镜像数据中读取的所述头信息读取错误,则:根据所述头信息在所述主镜像数据中的地址和预设地址偏移量序列中包括的预设地址偏移量,确定出下N个待读取数据的头信息的地址;其中,N为正整数;所述处理单元603,还用于:根据预设地址偏移量序列中包括的预设地址偏移量排序,依序根据预设地址偏移量和所述头信息在所述主镜像数据中的地址,确定下个待读取数据的头信息的地址,直至从确定出的所述下个待读取数据的头信息的地址读出下个待读取数据的头信息为止。
从上述内容可以看出:由于针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。也就是说,本发明实施例的方法从备镜像的数据包中读取在主镜像数据中读取错误的数据包的标识对应的数据包,解决了现有技术中的主、备镜像数据的所述块的所述页同时读取错误时即无法启动系统的问题,实现有效保障芯片启动时读取的镜像数据的完整性。
应理解,以上各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种数据读取方法,其特征在于,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;每份所述镜像数据对应一个头信息,所述镜像数据对应的头信息存储于所述镜像数据存储的所述至少一个块中的第一块的第一页;其中,M为正整数;所述方法包括:
从所述主镜像数据中读取头信息,确定从主镜像数据中读取的头信息读取正确;或者,若确定从主镜像数据中读取的所述头信息读取错误,则从所述M份备镜像数据中读取所述头信息,并确定从所述M份备镜像数据中读取所述头信息读取正确;
针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:
确定读取错误的数据包的标识;
从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。
2.如权利要求1所述的方法,其特征在于,所述若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,包括:
若所述主镜像数据中所述块的所述页的多个数据包中的至少一个数据包读取错误;且:
从所述M份备镜像的所述块的所述页读取所述页的所有数据包,且针对所述M份备镜像数据中的每个备镜像数据,所述备镜像数据的所述块的所述页的至少一个数据包读取错误。
3.如权利要求1所述的方法,其特征在于,所述确定所述主镜像数据中所述块的所述页的所述数据包读取错误,包括:
从所述数据包中读取镜像数据和所述镜像数据对应的原始校验值;
对从所述数据包中读取到的所述镜像数据进行校验,得到所述镜像数据对应的待验证校验值;
在所述镜像数据对应的待验证校验值和所述镜像数据对应的原始校验值不匹配的情况下,确定所述主镜像数据中所述块的所述页的所述数据包读取错误。
4.如权利要求1所述的方法,其特征在于,所述从所述主镜像数据中读取头信息,确定从主镜像数据中读取的头信息读取正确,包括:
从所述主镜像数据中读取所述头信息和所述头信息对应的原始校验值;
对从所述主镜像数据中读取到的所述头信息进行校验,得到所述头信息对应的待验证校验值;
在所述头信息对应的待验证校验值和所述头信息对应的原始校验值匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取正确;
所述确定从主镜像数据中读取的头信息读取错误,则从所述M份备镜像数据中读取所述头信息,包括:
在所述头信息对应的待验证校验值和所述头信息对应的原始校验值不匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取错误,并从所述M份备镜像数据中读取所述头信息。
5.如权利要求4所述的方法,其特征在于,所述从所述M份备镜像数据中读取所述头信息之后,还包括:
从所述主镜像数据中读取的所述头信息读取错误,则:
根据所述头信息在所述主镜像数据中的地址和预设地址偏移量序列中包括的预设地址偏移量,确定出下N个待读取数据的头信息的地址;其中,N为正整数;
根据预设地址偏移量序列中包括的预设地址偏移量排序,依序根据预设地址偏移量和所述头信息在所述主镜像数据中的地址,确定下个待读取数据的头信息的地址,直至从确定出的所述下个待读取数据的头信息的地址读出下个待读取数据的头信息为止。
6.一种数据读取装置,其特征在于,待读取数据包括主镜像数据和M份备镜像数据;针对所述主镜像数据和所述M份备镜像数据中的每份镜像数据,所述镜像数据对应存储为至少一个块中;所述至少一个块中的每个块中存储的镜像数据存储为至少一个页中;所述至少一个页中的每个页中存储的镜像数据被存储为多个数据包;所述多个数据包中的每个数据包对应该数据包的标识;每份所述镜像数据对应一个头信息,所述镜像数据对应的头信息存储于所述镜像数据存储的所述至少一个块中的第一块的第一页;其中,M为正整数;所述装置包括:
确定单元,用于从所述主镜像数据中读取头信息,确定从主镜像数据中读取的头信息读取正确;或者,若确定从主镜像数据中读取的所述头信息读取错误,则从所述M份备镜像数据中读取所述头信息,并确定从所述M份备镜像数据中读取所述头信息读取正确;针对所述主镜像数据中除包括头信息的数据包之外的每个块中的每个页的每个数据包,若确定所述主镜像数据中所述块的所述页的所述数据包读取错误,则:确定读取错误的数据包的标识;
读取单元,用于从所述M份备镜像数据中读取所述读取错误的数据包的标识对应的数据包。
7.如权利要求6所述的装置,其特征在于,所述读取单元,用于:
若所述主镜像数据中所述块的所述页的多个数据包中的至少一个数据包读取错误;且:
从所述M份备镜像的所述块的所述页读取所述页的所有数据包,且针对所述M份备镜像数据中的每个备镜像数据,所述备镜像数据的所述块的所述页的至少一个数据包读取错误。
8.如权利要求6所述的装置,其特征在于,还包括处理单元;
所述读取单元,用于:
从所述数据包中读取镜像数据和所述镜像数据对应的原始校验值;
所述处理单元,用于:
对从所述数据包中读取到的所述镜像数据进行校验,得到所述镜像数据对应的待验证校验值;
所述确定单元,用于:
在所述镜像数据对应的待验证校验值和所述镜像数据对应的原始校验值不匹配的情况下,确定所述主镜像数据中所述块的所述页的所述数据包读取错误。
9.如权利要求6所述的装置,其特征在于,所述读取单元,具体用于:
从所述主镜像数据中读取所述头信息和所述头信息对应的原始校验值;
处理单元,具体用于:
对从所述主镜像数据中读取到的所述头信息进行校验,得到所述头信息对应的待验证校验值;
所述确定单元,具体用于:
在所述头信息对应的待验证校验值和所述头信息对应的原始校验值匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取正确;
在所述头信息对应的待验证校验值和所述头信息对应的原始校验值不匹配的情况下,确定从所述主镜像数据中读取的所述头信息读取错误,并通过读取单元从所述M份备镜像数据中读取所述头信息。
10.如权利要求9所述的装置,其特征在于,所述确定单元,还用于:
从所述主镜像数据中读取的所述头信息读取错误,则:
根据所述头信息在所述主镜像数据中的地址和预设地址偏移量序列中包括的预设地址偏移量,确定出下N个待读取数据的头信息的地址;其中,N为正整数;
所述处理单元,还用于:
根据预设地址偏移量序列中包括的预设地址偏移量排序,依序根据预设地址偏移量和所述头信息在所述主镜像数据中的地址,确定下个待读取数据的头信息的地址,直至从确定出的所述下个待读取数据的头信息的地址读出下个待读取数据的头信息为止。
CN201710375462.5A 2017-05-24 2017-05-24 一种数据读取方法和装置 Active CN107273233B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710375462.5A CN107273233B (zh) 2017-05-24 2017-05-24 一种数据读取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710375462.5A CN107273233B (zh) 2017-05-24 2017-05-24 一种数据读取方法和装置

Publications (2)

Publication Number Publication Date
CN107273233A CN107273233A (zh) 2017-10-20
CN107273233B true CN107273233B (zh) 2020-06-19

Family

ID=60065704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710375462.5A Active CN107273233B (zh) 2017-05-24 2017-05-24 一种数据读取方法和装置

Country Status (1)

Country Link
CN (1) CN107273233B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038356B (zh) * 2017-12-08 2020-12-25 北京联盛德微电子有限责任公司 一种rom和二级boot对用户软件的保护方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567256A (zh) * 2003-06-20 2005-01-19 深圳市朗科科技有限公司 闪存介质中数据保护方法
CN102163158A (zh) * 2011-04-29 2011-08-24 北京凡达讯科技有限公司 一种系统级芯片利用nand闪存启动的方法
CN102800357A (zh) * 2011-05-27 2012-11-28 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
CN103019969A (zh) * 2011-09-27 2013-04-03 威刚科技(苏州)有限公司 闪存储存装置及其不良储存区域的判定方法
US8621194B2 (en) * 2010-08-31 2013-12-31 Conexant Systems, Inc. Processor NAND flash boot system and method
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2455106B (en) * 2007-11-28 2012-08-01 Icera Inc Memory errors

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567256A (zh) * 2003-06-20 2005-01-19 深圳市朗科科技有限公司 闪存介质中数据保护方法
US8621194B2 (en) * 2010-08-31 2013-12-31 Conexant Systems, Inc. Processor NAND flash boot system and method
CN102163158A (zh) * 2011-04-29 2011-08-24 北京凡达讯科技有限公司 一种系统级芯片利用nand闪存启动的方法
CN102800357A (zh) * 2011-05-27 2012-11-28 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
CN103019969A (zh) * 2011-09-27 2013-04-03 威刚科技(苏州)有限公司 闪存储存装置及其不良储存区域的判定方法
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification

Also Published As

Publication number Publication date
CN107273233A (zh) 2017-10-20

Similar Documents

Publication Publication Date Title
US9411689B2 (en) Method and relevant apparatus for starting boot program
CN106843942B (zh) 穿戴式设备的固件升级方法及穿戴式设备
EP3037967B1 (en) Fault-tolerant startup method and apparatus and computer system
JP4404625B2 (ja) 情報処理装置および該装置用のromイメージ生成装置
US10489246B2 (en) Data storage device and data maintenance method thereof
US20110029716A1 (en) System and method of recovering data in a flash storage system
US20170357497A1 (en) Method for updating a firmware file of an input/output module
JP2006134310A (ja) データ信頼性を向上させることができるメモリ管理方法
US20130055019A1 (en) Pilot Process Method for System Boot and Associated Apparatus
CN107908417B (zh) 固件升级方法及电子设备
TWI523025B (zh) 資料儲存裝置及其錯誤校正方法
CN105183382A (zh) 一种数据块保护方法及装置
US20140244919A1 (en) Method of erasing information stored in a nonvolatile rewritable memory, storage medium and motor vehicle computer
TW201915725A (zh) 資料儲存裝置與記憶體裝置之資料處理方法
CN106776105B (zh) 一种系统启动文件的校验及编译方法
EP3336702A1 (en) Metadata recovery method and device
CN108089892B (zh) 一种系统安全启动的方法、装置、机顶盒及存储介质
CN107273233B (zh) 一种数据读取方法和装置
CN109671466B (zh) 一种阈值电压调试方法、装置及电子设备
US8533560B2 (en) Controller, data storage device and program product
US20120284497A1 (en) Booting method of main chip
WO2018041151A1 (zh) 数据存储的方法、装置以及非易失性存储器
CN110008059B (zh) 非易失性存储介质的数据更新方法、装置及存储介质
CN106844088B (zh) 一种raid存储系统的数据发送方法及装置
CN109144409B (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200929

Address after: Room 1201, building a, 1181 Bin'an Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: Zhejiang Xinsheng Electronic Technology Co., Ltd

Address before: Hangzhou City, Zhejiang province Binjiang District 310053 shore road 1187

Patentee before: ZHEJIANG DAHUA TECHNOLOGY Co.,Ltd.