CN113343319A - 一种flash的类型识别方法及类型识别系统 - Google Patents

一种flash的类型识别方法及类型识别系统 Download PDF

Info

Publication number
CN113343319A
CN113343319A CN202110724514.1A CN202110724514A CN113343319A CN 113343319 A CN113343319 A CN 113343319A CN 202110724514 A CN202110724514 A CN 202110724514A CN 113343319 A CN113343319 A CN 113343319A
Authority
CN
China
Prior art keywords
block protection
protection configuration
bit
flash
read
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
Application number
CN202110724514.1A
Other languages
English (en)
Other versions
CN113343319B (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.)
Zhuhai Amicro Semiconductor Co Ltd
Original Assignee
Zhuhai Amicro Semiconductor 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 Zhuhai Amicro Semiconductor Co Ltd filed Critical Zhuhai Amicro Semiconductor Co Ltd
Priority to CN202110724514.1A priority Critical patent/CN113343319B/zh
Publication of CN113343319A publication Critical patent/CN113343319A/zh
Application granted granted Critical
Publication of CN113343319B publication Critical patent/CN113343319B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及一种FLASH的类型识别方法及类型识别系统,所述类型识别方法包括:步骤1、配置FLASH进入预设访问模式;步骤2、基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;当每一批的块保护配置位在读写测试中都读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,块保护配置位的相邻关系包括彼此相邻和互不相邻;其中,不同批的块保护配置位执行读写测试的时间点是不同的;待测试的块保护配置位是任意FLASH都设置的。既提高硬件兼容性,又保证FLASH的类型识别的正确性。

Description

一种FLASH的类型识别方法及类型识别系统
技术领域
本发明涉及FLASH存储器技术领域,具体涉及一种FLASH的类型识别方法及类型识别系统。
背景技术
对于大多数中小型嵌入式系统,基于成本和方案软硬件设计考虑,存储介质绝大多数会采用NOR(Not Or) FLASH(闪存)或者NAND(Not And) FLASH(闪存)。每款FLASH均有自己特有的ID(Identity Document身份标识)和SFDP表(Serial Flash DiscoverableParameter串行闪存预设参数表)。
现有技术一般采用读ID的命令方法或读取FLASH出厂内置的SFDP表的方法,对每款FLASH的类型(NOR或者NAND)进行识别。但不同厂家不同型号的FLASH ID一般不同,假如方案后期硬件FLASH型号替换或增加一款FLASH,考虑到FLASH应用兼容性,软件则需要更新,具体的,软件更新是对FLASH 型号的管理通常是建一个列表,并根据ID号识别每一款FLASH,一般硬件每新加一款NOR/NAND FLASH,列表就需要更新,增加这一款FLASH的ID信息则存入这个表内。从而,使得更新后的产品配置信息兼容多款FLASH,则新增或替换后的FLASH型号是能够被控制使用;对于一些特殊情况,比如BOOT ROM固化软件系统或者产品已经销售到了客户手中,更新软件的代价可能会很大,不容易被重新配置控制。
上述是大多数正常的应用情况,但也存在着以下特殊情况,某些FLASH原厂出厂FLASH前可能不烧录某款FLASH的SFDP表,或者有时晶元厂的产能缩紧,FLASH的供货也紧张,一些供应商会考虑将FLASH原厂中较差等级或没通过筛选的FLASH DIE(晶圆)或芯片重新封装测试后出售,可能存在ID或 SFDP表与实际芯片不匹配的情况、FLASH DIE可能出现没有内置ID的情况,导致读ID或者SFDP表的做法存在无法正确识别FLASH的类型,这样缺少新款FLASH产品相匹配的正确配置信息,无法通过更新软件代码的方式去验证FLASH是否能够正常使用。
发明内容
为了解决上述技术问题,本发明通过仅访问FLASH内置寄存器的通用部分即可达到识别NOR或者NAND 类型的目的,使得FLASH型号需要更新变化时不用改动软件代码,进而增强FLASH的硬件兼容性,减少了软件层面的后期维护工作量,也验证FLASH内置寄存器是否能够正常操作。具体技术方案如下:
一种FLASH的类型识别方法,包括:步骤1、配置FLASH进入预设访问模式;步骤2、基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;当每一批的块保护配置位在读写测试中都读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,块保护配置位的相邻关系包括彼此相邻和互不相邻;其中,待测试的块保护配置位是任意FLASH都设置的。
与现有技术相比,本技术方案首先预设所需识别的FLASH的类型访问模式,再对FLASH内置寄存器中相邻的块保护配置位和不相邻的块保护配置位进行分批次的读写测试,只有每一批的块保护配置位在读写测试中都读取出最新写入的一位二进制数时才确定预设访问模式所对应的闪存存储器类型,不需在改动FLASH(增加个别型号的FLASH)时额外读取FLASH内部创建的ID信息存储列表,减少FLASH型号变化时产生的软件维护量;同时在ID识别号与对应类型的FLASH不匹配的生产制造条件下、或没有内置ID号或没有内置SFDP表、或FLASH的设备信息的软件系统不能正常读取改动的条件下,仅通过分批次地读写访问FLASH内置寄存器就能识别FLASH的类型(预设访问模式所对应的闪存存储器类型),提升所述类型识别方法的硬件兼容性(包括容量大小、型号更新、软件配置信息的更新),提高所述类型识别方法对于FLASH类型自适应能力,且能够考虑到寄存器的相邻的位可能存在读写异常情况的影响,提高寄存器访问测试的正确率和识别FLASH的类型的正确率。
进一步地,所述步骤2的具体方法包括:在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,控制每一批的块保护配置位都连续进行两轮读写测试;其中,连续进行的两轮读写测试中,每一轮读写测试对同一个块保护配置位所写入的一位二进制数是不同的;每一批的块保护配置位在同一轮读写测试过程中,每一个待测试的块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数;若判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
与现有技术相比,本技术方案所执行的读写测试,将互不相邻的两个待测试的块保护配置位设置为一批块保护配置位以连续进行两轮读写测试、并将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为另一批块保护配置位以连续进行另外两轮读写测试,使得本技术方案对这两批块保护配置位所执行的读写测试不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响,提高读写验证FLASH内置寄存器的功能的准确性,进而保证识别所述FLASH类型的效果。
进一步地,所述步骤2的具体方法包括:步骤21、将第一预置的一位二进制数分别写入FLASH内置寄存器中互不相邻的两个待测试的块保护配置位,其中,互不相邻的两个待测试的块保护配置位是预先设置的进行当前一轮读写测试的一批块保护配置位,记为第一批预设块保护配置位;然后通过读取FLASH内置寄存器来获取第一批预设块保护配置位的每个块保护配置位上存储的二进制数,当判断到第一批预设块保护配置位的每个块保护配置位上存储的二进制数都是第一预置的一位二进制数时,对结果识别标志量(预先配置为0)加一;然后进入步骤22;步骤22、将第二预置的一位二进制数分别写入第一批预设块保护配置位的每个块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取当前写入的每个块保护配置位上存储的二进制数,当判断到第一批预设块保护配置位的每个块保护配置位存储的二进制数都是第二预置的一位二进制数时,对结果识别标志量加一;确定步骤21和步骤22完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤23;步骤23、将第一预置的一位二进制数写入新的一批块保护配置位,其中,新的一批块保护配置位是步骤21所述的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位,记为第二批预设块保护配置位;然后通过读取FLASH内置寄存器来获取第二批预设块保护配置位上存储的二进制数,当判断到当前获取的第二批预设块保护配置位上存储的二进制数是第一预置的一位二进制数时,对所述结果识别标志量加一;然后进入步骤24;步骤24、将第二预置的一位二进制数写入第二批预设块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取第二批预设块保护配置位上存储的二进制数,当判断到当前获取的第二批预设块保护配置位上存储的二进制数是第二预置的一位二进制数时,对所述结果识别标志量加一;确定步骤23和步骤24完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤25;步骤25、当所述结果识别标志量自步骤21至步骤24累计产生的变化量为4时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,结果识别标志量是预先设置的计数量。
在本技术方案中,先对互不相邻的两个待测试的块保护配置位同时写入更新为一种一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再对互不相邻的两个待测试的块保护配置位写入更新为另一种的一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再对互不相邻的两个待测试的块保护配置位之间的块保护配置位重复前述的写读循环或测试,直到测试次数达到四次才基于结果识别标志量判断确定FLASH的类型,提高判断结果的准确性。
与现有技术相比,本技术方案基于相邻和不相邻的比特位关系分批次完成对全部待测试的块保护配置位的读写测试,并保证每一批待测试的块保护配置位所执行的每一轮读写测试的时间点都不重叠,克服寄存器的相邻位可能会同步置位为相同的二进制数的问题,因此本技术方案通过组合写入不同的二进制数(清0和置1)的方式,按照特定的读写顺序完成FLASH内置寄存器的功能测试,提高FLASH内置寄存器类型识别的准确性。
进一步地,还包括:在步骤21中,当判断到第一批预设块保护配置位的各个块保护配置位上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤22;在步骤22中,当判断到第一批预设块保护配置位的各个块保护配置位上存储的二进制数不都是第二预置的一位二进制数时,控制结果识别标志量保持不变;确定步骤21和步骤22完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤23;在步骤23中,当判断到第二批预设块保护配置位上存储的二进制数不是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤24;在步骤24中,当判断到第二批预设块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;确定步骤23和步骤24完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤25;在步骤25中,当所述结果识别标志量自步骤21至步骤24累计产生的变化量不是4时,确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。在本技术方案中,不以一次寄存器读写测试的结果决定FLASH的类型,而是连续经过4次判断后,在结果计数值的变化量不是4时才确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。在本技术方案中,因为FLASH内置寄存器的相应块保护配置位的读写时间极快,占用的时间极短,所以直至最后4轮测试完成,再决定判断结果,也不会太影响系统实时性。
进一步地,所述步骤2的具体方法包括:在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中的其中一个块保护配置位设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中的另一个块保护配置位设置为用于读写测试的又一批块保护配置位后,控制每一批的块保护配置位都进行一轮读写测试,并在每一轮读写测试中对同一个块保护配置位只写入一种二进制数;其中,每一批的块保护配置位在同一轮读写测试过程中,每一个块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数;若判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
本技术方案先将相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位写入为同一种二进制数以同时进行一轮寄存器的读写测试,特别是在FLASH的容量较小时,FLASH内置寄存器的功能标志位中设置为块保护配置位较少,配置为不同容量的不同类型的FLASH所共享的待测试的块保护配置位则更少,这时考虑到所述类型识别方法的硬件兼容性(不同型号的FLASH),只能用仅配置出的相邻的两个待测试的块保护配置位进行读写测试;在此基础上,再分别对相邻的两个待测试的块保护配置位写入为另一种二进制数,并对每个待测试的块保护配置位各进行一轮读写测试但不同时进行,也在一定程度上有效应对FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响。
进一步地,所述步骤2的具体方法包括:步骤21、将第一预置的一位二进制数分别写入FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位,其中,彼此相邻的两个待测试的块保护配置位是预先设置的当前进行读写测试的一批块保护配置位;然后通过读取FLASH内置寄存器来获取当前写入的每个块保护配置位上存储的二进制数,当判断到当前获取的彼此相邻的两个待测试的块保护配置位上存储的二进制数都是第一预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤22;步骤22、将第二预置的一位二进制数写入步骤21所述的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取当前写入的块保护配置位上存储的二进制数,当判断到当前获取的块保护配置位上存储的二进制数是第二预置的一位二进制数时,对结果识别标志量加一;然后进入步骤23;步骤23、将第二预置的一位二进制数写入步骤21所述的彼此相邻的两个待测试的块保护配置位的另一个块保护配置位,其中,步骤21所述的彼此相邻的两个待测试的块保护配置位的另一个是不同于步骤22中被写入第二预置的一位二进制数的块保护配置位;然后通过读取FLASH内置寄存器来获取当前写入的块保护配置位上存储的二进制数,当判断到当前获取的块保护配置位上存储的二进制数是第二预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤24;步骤24、当所述结果识别标志量自步骤21至步骤23累计产生的变化量为3时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,结果识别标志量是预先设置的计数量。
本技术方案应用于容量较小且配置较少的待测试的块保护配置位的FLASH的类型识别场景下,先对彼此相邻的两个待测试的块保护配置位同时写入更新为一种的一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再分别对这相邻的两个待测试的块保护配置位都被更新为另一种的一位二进制数但不同时进行,再通过逐位回读对应块保护配置位上存储的二进制数来判断先后两轮读写测试中的识别结果是否正确并各自记为一次测试或一个写读循环,直到测试次数达到三次才基于结果识别标志量判断确定FLASH的类型,提高判断结果的准确性。
与现有技术相比,本技术方案基于相邻的比特位关系分批次完成对全部待测试的块保护配置位的读写测试,并保证每一批待测试的块保护配置位所执行的每一轮读写测试的时间点都不重叠,至少相对于逐位去通过置1清0的方式来回读判断,减少所需进行的识别步骤,保证测试效率;且本技术方案通过对相邻的两个待测试的块保护配置位分时间执行读写测试,可以有效地应对寄存器的相邻位在写操作过程中可能出现同步置位的异常情况,因此本技术方案通过组合置位不同的二进制数(清0和置1)的方式,按照特定的读写顺序完成FLASH内置寄存器的功能测试,提高FLASH内置寄存器类型识别的准确性。
进一步地,还包括:在步骤21中,当判断到当前获取的各个块保护配置位上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤22;在步骤22中,当判断到当前获取的块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤23;在步骤23中,当判断到当前获取的块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤24;在步骤24中,当所述结果识别标志量自步骤21至步骤23累计产生的变化量不是3时,确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。在本技术方案中,尽管一次读写测试中若不能正确读取回最新写入的二进制数则可以确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,但是本技术方案仍是坚持连续经过3次判断后,在结果计数值的变化量不是3时,才确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,提高识别结果的准确性和可靠性,不受整体判断步骤的执行时间的影响,因为FLASH内置寄存器的相应块保护配置位的读写时间极快,占用的时间极短,所以直至最后3轮测试完成,再决定判断结果,也不会太影响FLASH所属的系统实时性。
进一步地,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式;FLASH按类型分为NOR闪存存储器和NAND闪存存储器;其中,NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;其中,访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器;访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。该技术方案将预设访问模式设置为所需判断识别的FLASH类型的请求指令,并与所要读写访问的具体寄存器及其块保护配置位建立联系,奠定FLASH的类型识别的算法基础。
进一步地,所述FLASH内置寄存器及其内部的待测试的块保护配置位是由位于FLASH的外部的主机发送至SPI接口的程序指令所指定的;其中,待测试的块保护配置位是所述FLASH内置寄存器内支持读写操作的标志位,且是不同容量的不同类型的FLASH都设置的;其中,位于FLASH的外部的主机包括SPI控制器,用于配置FLASH进入预设访问模式。该技术方案让所述类型识别方法兼容SPI接口,使得外部的主控单元可以通过SPI接口完成与FLASH的数据指令收发响应,通用性强。
进一步地,在所述步骤1和步骤2之间还包括:获取所述FLASH内置寄存器的硬件块保护标志位上存储的二进制数;当判断到硬件块保护标志位上存储的二进制数为1时,则将硬件块保护标志位对应的二进制数配置为0,并利用二进制0更新所述FLASH内置寄存器的硬件块保护标志位,直到所述FLASH内置寄存器的硬件块保护标志位所存储的二进制数被读取为0;当判断到硬件块保护标志位上存储的二进制数为0时,确定所述FLASH当前不处于硬件保护状态,进而确定解除所述FLASH的内存空间的块保护。该技术方案限定所述FLASH内置寄存器通过将硬件块保护标志位清零的方式或反复清零的方式完成所述FLASH的内存空间的硬件保护状态的解除,以开始接受后续执行的类型识别方法中对于所述FLASH内置寄存器的读写访问。
一种基于FLASH的类型识别系统,包括FLASH和主控模块;主控模块包括总线接口模块,FLASH包括访问配置模块、FLASH内置寄存器、块保护配置位测试模块;主控模块,用于通过总线接口模块向FLASH发送至程序指令,程序指令包括配置指令、读指令和写指令;访问配置模块,用于配置FLASH进入预设访问模式;块保护配置位测试模块,用于基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;其中,块保护配置位的相邻关系包括彼此相邻和互不相邻;不同批的块保护配置位执行读写测试的时间点是不同的;待测试的块保护配置位是任意FLASH都设置的;块保护配置位测试模块,还用于在判断到每一批的块保护配置位在读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型。
与现有技术相比,所述类型识别系统中,所述访问配置模块能够根据所需识别的FLASH的类型去挑选配置预先存在的各种预设访问模式,再交由所述块保护配置位测试模块分批次地对FLASH内置寄存器中相邻的块保护配置位和不相邻的块保护配置位进行分批次的读写测试,所述块保护配置位测试模块在每一批的块保护配置位在读写测试中都读取出最新写入的一位二进制数时才确定预设访问模式所对应的闪存存储器类型,不需在改动FLASH(增加个别型号的FLASH)时额外改动FLASH内部创建的ID信息存储列表,减少FLASH型号变化时产生的软件维护量;同时在ID识别号与对应类型的FLASH不匹配的生产制造条件下、或没有内置ID号或没有内置SFDP表、或FLASH的设备信息的软件系统不能正常读取改动的条件下,所述块保护配置位测试模块仅通过分批次地读写访问FLASH内置寄存器就能识别FLASH的类型(预设访问模式所对应的闪存存储器类型),提升所述类型识别系统的硬件兼容性(包括FLASH容量大小、FLASH型号更新、FLASH软件配置信息的更新),提高所述类型识别系统对于FLASH类型自适应能力,且能够在第二轮读写测试和第三轮读写测试中考虑到所述FLASH内置寄存器的相邻的位存在读写异常情况的影响,提高识别FLASH的类型的正确率。
进一步地,块保护配置位测试模块,用于在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,对每一批的块保护配置位都连续进行两轮读写测试;其中,连续进行的两轮读写测试中,每一轮读写测试对同一个块保护配置位所置位的一位二进制数是不同的;每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中将每一个块保护配置位都写入一位二进制数,块保护配置位测试模块再读取出每个块保护配置位所存储的二进制数;块保护配置位测试模块,还用于判断到每一批的块保护配置位在每一轮读写测试中都由所述块保护配置位测试模块读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
与现有技术相比,所述块保护配置位测试模块将互不相邻的两个待测试的块保护配置位设置为一批块保护配置位以连续进行两轮读写测试、并将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为另一批块保护配置位以连续进行另外两轮读写测试,使得本技术方案对这两批块保护配置位累计执行的读写测试不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响,比如当一个位置位为二进制1时相邻的一位也可能会同步置位为二进制1,不会影响到所述块保护配置位测试模块的类型判断结果,提高读写验证FLASH内置寄存器的功能的准确性,进而保证识别所述FLASH内置寄存器的效果。
进一步地,块保护配置位测试模块,用于在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中一个设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的待测试的块保护配置位中另一个设置为用于读写测试的又一批块保护配置位后,对每一批的块保护配置位都进行一轮读写测试,并控制每一轮读写测试中对同一个块保护配置位只写入一种二进制数;其中,每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中将每一个块保护配置位写入为一位二进制数,块保护配置位测试模块再读取出每个块保护配置位所存储的二进制数;块保护配置位测试模块,还用于在判断到每一批的块保护配置位在每一轮读写测试中都由所述块保护配置位测试模块读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
所述块保护配置位测试模块先将相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位写入为同一种二进制数以同时进行一轮寄存器的读写测试,特别是在FLASH的容量较小时,FLASH内置寄存器的功能标志位中设置为块保护配置位较少,配置为不同容量的不同类型的FLASH所共享的待测试的块保护配置位则更少,这时考虑到所述类型识别方法的硬件兼容性(不同型号的FLASH),只能用仅配置出的相邻的两个待测试的块保护配置位进行读写测试,在此基础上,再分别对相邻的两个待测试的块保护配置位写入为另一种二进制数,并对每个待测试的块保护配置位各进行一轮读写测试但不同时进行,也在一定程度上有效应对FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况对所述块保护配置位测试模块输出的识别结果的影响。
进一步地,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式;FLASH按类型分为NOR闪存存储器和NAND闪存存储器;其中,NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器,访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。该技术方案将预设访问模式设置为所需判断识别的FLASH类型的请求指令,并与所要读写访问的具体寄存器及其块保护配置位建立联系,奠定FLASH的类型识别的标志配置和判断基础。
附图说明
图1为本发明一实施例公开的一种FLASH的类型识别方法的流程图。
图2为本发明另一实施例公开的一种FLASH的类型识别方法的流程图(该实施例针对的FLASH内,对应的FLASH内置寄存器的待测试的块保护配置位为连续的3位)。
图3为本发明又一实施例公开的一种FLASH的类型识别方法的流程图(该实施例针对小容量的FLASH,对应的FLASH内置寄存器的待测试的块保护配置位为相邻的2位)。
图4是本发明一实施例公开的一种基于FLASH的类型识别系统的示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在现有技术中,NOR或者NAND的识别是根据ID(Identity Document身份标识)或者SFDP表(Serial FlashDiscoverable Parameter串行闪存预设参数表)参照每款FLASH的规格书确定。实际闪存方案应用中均有可能会选择不同厂家不同型号不同容量的SPI NOR或者NAND FLASH,考虑到FLASH应用兼容性,每增加一款FLASH,软件需要更新代码,比如在表空间内加入支持新增的这一款FLASH的ID等,但对于一些特殊情况,比如BOOT ROM或者产品已经销售到了客户手中,更新软件代价可能会很大。还有可能工厂、供应商基于产能因素,提供杂牌、黑片这一类型的FLASH,而这一类型的FLASH可能出现没有内置ID、或者内置的ID与具体的FLASH不对应,导致无法正确识别FLASH的类型,也无法通过更新软件代码的方式去验证FLASH是否能够正常使用。
为了克服现有技术存在的技术缺陷,一种FLASH的类型识别方法,如图1所示,包括:
步骤S1、配置FLASH进入预设访问模式,然后进入步骤S2。优选地,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式,都是由FLASH对应的总线接口控制器配置的,其中,FLASH作为从机,总线接口控制器作为主机。因此,步骤S1根据所需识别的FLASH的类型去挑选配置预先存在的各种预设访问模式。具体地,FLASH按类型分为NOR闪存存储器和NAND闪存存储器,这里不对FLASH容量进行限定;NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;在本实施例中,状态寄存器和配置寄存器统称为FLASH内置寄存器,状态寄存器和配置寄存器都属于对应类型的FLASH中固定设置的寄存器,属于公知常识。
本实施例将预设访问模式设置为所需判断识别的FLASH类型的请求指令,并与所要读写访问的具体寄存器及其块保护配置位建立指令联系,奠定本实施例中的FLASH的类型识别基础。
步骤S2、基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;然后进入步骤S3。在执行步骤S2之前,需通过操作FLASH内置寄存器的相关联的标志位去解除FLASH的硬件保护状态,且需要预先保存读到的状态或者预先为寄存器的各个位配置初始值,比如为FLASH的16位配置寄存器的高八位和低八位都配置初始值,在一些实施场景中,低八位(单字节)可以写入初始配置地址值,高八位可以写入初始配置命令值,以便在识别类型阶段执行完成后恢复初始值。需要说明的是,由本领域技术人员可知,在FLASH内置寄存器中,一个触发器可以存储1位二进制代码,故存放n位二进制代码的FLASH内置寄存器,需用n个触发器来构成,每一个触发器代表一个二进制的单元位,本实施例中,FLASH内置寄存器在FLASH内是存在特定的地址,FLASH内置寄存器中的块保护配置位是连续的位,具体是NOR闪存存储器的状态寄存器的块保护配置位的范围是bit3(第四比特位)至bit2(第三比特位),NAND闪存存储器的状态寄存器的块保护配置位的范围是bit5(第六比特位)至bit3(第四比特位);则块保护配置位的相邻关系包括比特位的彼此相邻和比特位的互不相邻,彼此相邻的块保护配置位可以表示为bit[m+1]和bit[m],互不相邻的块保护配置位可以表示为bit[m+2]和bit[m],其中,彼此相邻的块保护配置位中左侧的位bit[m+1]比右侧的位bit[m]高一位,互不相邻的块保护配置位中左侧的位bit[m+2]比右侧的位bit[m]高两位,m值是由FLASH内置寄存器决定的。
步骤S2中,每一批的待测试的块保护配置位在读写测试的过程中,每一个待测试的块保护配置位都是在写操作中被写入为一位二进制数,即在当前配置的预设访问模式下,写入并更新每一个待测试的块保护配置位上的二进制数(即二进制0或二进制1);每一个待测试的块保护配置位在被写入二进制数后,再被读取出对应的块保护配置位上所存储的二进制数,当判断读取出来的二进制数是同一块保护配置位上当前存储的二进制数时,证明在当前一轮的读写测试中对应的块保护配置位能够被正常读写,否则证明当前一轮的读写测试中对应的块保护配置位不能被正常访问,从而在当前一轮读写测试中完成所述FLASH内置寄存器的一次功能验证。在一些实施场景中,在读指令的控制下从所述FLASH内置寄存器读取的数据是缓存到所述主机内部的SRAM中,在写指令的控制下将所述主机内部的SRAM中缓存的数据写入所述FLASH内置寄存器。
在本实施例中,不同批的块保护配置位执行读写测试的时间点是不同的,即当前一批块保护配置位执行完读写测试后,下一批块保护配置位再开始执行读写测试,其中,每一批的块保护配置位至少存在一位块保护配置位,每一批的块保护配置位至少执行一轮读写测试。待测试的块保护配置位是任意FLASH都设置的,是属于NOR闪存存储器和NAND闪存存储器所共同配置的功能标志位,具体是公用的几个BP(block protect块保护)位。本实施例中,访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器,访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。
优选地,所述FLASH内置寄存器及其内部的待测试的块保护配置位是由位于FLASH的外部的主机发送至SPI接口的程序指令所指定的;其中,待测试的块保护配置位是所述FLASH内置寄存器内支持读写操作的标志位;其中,位于FLASH的外部的主机包括SPI控制器,用于配置FLASH进入预设访问模式。本实施例让所述类型识别方法兼容SPI接口,使得外部的主控单元可以通过SPI接口完成与FLASH的数据指令收发响应,通用性强,可以应用于以下场景中:主控单元作为一种芯片而内嵌SPI FLASH,另一种是主控单元外挂SPI FLASH芯片。对于以上两种硬件系统,无论是内嵌FLASH DIE(晶元)或者外挂FLASH芯片,实际方案应用中均有可能会选择不同厂家不同型号不同容量的SPI NOR或者NAND FLASH。
步骤S3、判断是否存在每一批的块保护配置位在读写测试中都被读取出最新写入的一位二进制数,是则进入步骤S4,否则进入步骤S5。
步骤S4、每一批的块保护配置位在读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为步骤S1配置的预设访问模式相匹配的闪存存储器类型,其中,每一批的块保护配置位的每一个块保护配置位在每一轮读写测试中都能正确回读出最新写入的二进制数。
步骤S5、每一批的块保护配置位在读写测试中不是都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型不是步骤S1配置的预设访问模式相匹配的闪存存储器类型,其中,存在一批的块保护配置位的一个或多个块保护配置位在相应一轮读写测试中不能正确回读出最新写入的二进制数。优选地,若最后的类型识别结果既不是NAND,也不是NOR,则可以考虑进一步降低FLASH的总线接口的频率再执行所述类型识别方法,或者检查一下是否总线接口硬件连接有异常,或者FLASH芯片损坏等情况。
与现有技术相比,前述步骤S1至步骤S5所述的类型识别方法首先能够根据所需识别的FLASH的类型去挑选配置预先存在的各种预设访问模式,再分批次地对FLASH内置寄存器中相邻的块保护配置位和不相邻的块保护配置位进行分批次的读写测试,只有每一批的块保护配置位在读写测试中都读取出最新写入的一位二进制数时才确定预设访问模式所对应的闪存存储器类型,不需在改动FLASH(增加个别型号的FLASH)时额外读取FLASH内部创建的ID信息存储列表,减少FLASH型号变化时产生的软件维护量;同时在ID识别号与对应类型的FLASH不匹配的生产制造条件下、或没有内置ID号或没有内置SFDP表、或FLASH的设备信息的软件系统不能正常读取改动的条件下,仅通过分批次地读写访问FLASH内置寄存器就能识别FLASH的类型(预设访问模式所对应的闪存存储器类型),提升硬件兼容性(包括容量大小、型号更新、软件配置信息的更新),提高所述类型识别方法对于FLASH类型自适应能力,且能够考虑到寄存器的相邻的位可能存在读写异常情况的影响,提高寄存器访问测试的正确率和识别FLASH的类型的正确率。
作为一种实施例,在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,控制每一批的块保护配置位都连续进行两轮读写测试,其中,不论是哪一批块保护配置位,每一轮读写测试都不能同时进行。需要说明的是,FLASH内置寄存器可能存在异常情况,相邻的位可能会有影响,比如对于同一FLASH内置寄存器的块保护配置位中,相邻的两个待测试的块保护配置位bit[4]和bit[3],正常情况下无论对bit[4]写1还是清0,都不会对bit[3]有影响,而在寄存器异常的时候,有可能在对bit[4]写1时bit[3]也跟着被置位为1,因此,将互不相邻的两个待测试的块保护配置位设置为一批块保护配置位进行连续两轮读写测试并控制每一轮读写测试都不同时进行,使得本实施例对这两批块保护配置位所执行的读写测试不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响。在本实施例中,同一个块保护配置位在连续进行的每一轮读写测试(累计两轮)中对所写入的一位二进制数是不同的,比如同一个块保护配置位在第一轮写0,第二轮对同一个块保护配置位或同一批块保护配置位写入为1,从而可以对同一个块保护配置位反复交叉地清零置1地循环测试下去以提高测试结果的可靠性;每一批的块保护配置位在同一轮读写测试过程中,每一个待测试的块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数,优选地,每一个待测试的块保护配置位在写入为一位二进制数之前,先读取所述FLASH内置寄存器的所有位上存储的数值,获知所述FLASH内置寄存器存储的二进制数,以便于发送写指令去将合适的待测试的块保护配置位写入为所要求的二进制数,而控制其余位维持不变;这样,每一批的块保护配置位中的所有的块保护配置位形成写、读操作的循环或形成读、写、读操作的循环。如此重复四轮读写测试(每一批分时间进行两轮读写测试),若判断到每一批的块保护配置位在每一轮读写测试中都读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。与现有技术相比,本实施例所执行的读写测试,将互不相邻的两个待测试的块保护配置位设置为一批块保护配置位以连续进行两轮读写测试、并将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为另一批块保护配置位以连续进行另外两轮读写测试,使得本实施例对这两批块保护配置位所执行的读写测试不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响,提高读写验证FLASH内置寄存器的功能的准确性,进而保证识别所述FLASH类型的效果。
作为一种实施例,公开一种FLASH的类型识别方法,类型识别方法的执行主体是FLASH外部的接口控制器,通过发送指令来读写FLASH内置寄存器,如图2所示,所述类型识别方法具体包括:
步骤S201、将第一预置的一位二进制数分别写入FLASH内置寄存器中互不相邻的两个待测试的块保护配置位,其中,互不相邻的两个待测试的块保护配置位是预先设置的进行当前一轮读写测试的一批块保护配置位,记为第一批预设块保护配置位;然后进入步骤S202。步骤S201写入的互不相邻的两个待测试的块保护配置位在置位/写操作过程中不受其相邻位可能出现同步置位的寄存器异常问题的影响,避免在后续读取判断时出现误判。在本实施例中,由于涉及到存在互不相邻的两个待测试的块保护配置位,所以所识别的FLASH的容量不会太小,但不受限于FLASH的具体类型。
在执行步骤S201之前,还包括:由位于FLASH的外部的主机发送至总线接口的指令完成对所述预设访问模式的配置,在配置出当前所需识别的FLASH类型对应的预设访问模式后,优选地设置所述结果识别标志量的初始值为0;然后,为了能够对互不相邻的两个待测试的块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态;然后发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续修改置位/写入,本实施例至少读取所述FLASH内置寄存器的低八位,其中,块保护配置位都在所述FLASH内置寄存器的低八位中。本实施例读取缓存至SRAM来获知所述FLASH内置寄存器的所有块保护配置位存储的二进制数后,再在待测试的块保护配置位中,选择属于FLASH内置寄存器中互不相邻的两个待测试的块保护配置位对应写入的二进制数更新(被写)为第一预置的一位二进制数,当然已经写入为第一预置的一位二进制数的待测试的块保护配置位不需再更新;然后发送写指令,将第一预置的一位二进制数分别写入FLASH内置寄存器中互不相邻的两个待测试的块保护配置位(第一批预设块保护配置位),其它的比特位处存储的二进制数不发生改变。
为了便于说明,本实施例选择配置的预设访问模式为NAND FLASH访问模式,用于开启识别NAND闪存存储器的读写测试操作,并设置所述结果识别标志量flag的初始值为0,此时,选择的待测试的块保护配置位是NAND闪存存储器内的配置寄存器在块保护功能相关联的起始地址0xA0处的bit[5:3],这也是其它容量、型号的NAND闪存存储器和NOR闪存存储器都存在的块保护配置位,所述预设访问模式配置为NAND FLASH访问模式时,相关的指令参数与不同型号(ID号)NAND闪存存储器,内部所共有的配置寄存器相关联。使得所述待测试的块保护配置位具有硬件兼容性,只是所属的寄存器及配置地址不同,标志功能是相同的,都是为FLASH的块空间的保护而设置的用于配置地址命令参数的位;其中,配置寄存器是容量较大的寄存器,bit[3]和bit[5]是互不相邻的两个待测试的块保护配置位,作为用于读写测试的一批块保护配置位。因此,按照前述步骤,发送0x0F指令,读取配置寄存器内的起始地址0xA0上的低八位的二进制数值至SRAM,再在SRAM内将bit[5]对应的二进制数和bit[3]对应的二进制数都更新为第一预置的一位二进制数(等同于二进制0),而维持其他bit不变;然后发送0x1F指令,以将更新后的低八位的二进制数值写入所述配置寄存器的起始地址0xA0处,从而实现在步骤S201中将bit[5]和bit[3]都清0,而起始地址0xA0处的bit[7:6]、bit[4]和bit[2:0]都维持原来的二进制数值。然后进入步骤步骤S202。在本实施例中,起始地址0xA0是所述配置寄存器中专门配置块保护功能的内存空间的起始地址。
步骤S202、通过读取FLASH内置寄存器来获取第一批预设块保护配置位的每个块保护配置位上存储的二进制数,然后进入步骤S203。步骤S202的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器(可以是NAND闪存存储器的特定地址的区块)的低八位,其中,块保护配置位都在所述FLASH内置寄存器的低八位中;然后从读取出的相应比特位中,获取步骤S201写入的每个块保护配置位(第一批预设块保护配置位的每个位)上存储的二进制数。在NAND FLASH访问模式下,步骤S202是通过对FLASH发送0x0F指令,再发送起始地址0xA0,读取所述配置寄存器的起始地址0xA0处的低八位bit[7:0]所存储的二进制数,再从中分别获取bit[5]和bit[3]所存储的二进制数;然后进入步骤S203。
步骤S203、判断步骤S202当前获取的第一批预设块保护配置位(步骤S202当前获取的互不相邻的两个待测试的块保护配置位)的每个块保护配置位上存储的二进制数是否都是第一预置的一位二进制数,是则进入步骤S204,否则进入步骤S205。在步骤S203中,参与判断的是参与当前一轮读写测试的互不相邻的两个待测试的块保护配置位(第一批预设块保护配置位)。在NAND FLASH访问模式下,执行至步骤S203,在读取出的低八位bit[7:0]中,判断bit[5]和bit[3]是否都为二进制0,是则进入步骤S204,否则进入步骤S205。
步骤S204、对结果识别标志量加一;然后进入步骤S205;在NAND FLASH访问模式下进入步骤S204时则对结果识别标志量flag加一处理,使得flag=1;然后进入步骤S205;其中,结果识别标志量是预先设置的计数量。
需要说明的是,当判断步骤S202当前获取的互不相邻的两个待测试的块保护配置位(第一批预设块保护配置位)上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S205。
步骤S205、将第二预置的一位二进制数分别写入第一批预设块保护配置位(互不相邻的两个待测试的块保护配置位)的每个块保护配置位,然后进入步骤S206。其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;为了能够对互不相邻的两个待测试的块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态。在NAND FLASH访问模式下,执行步骤205的过程包括:发送0x0F指令,读取配置寄存器内的起始地址0xA0上的低八位的二进制数值至SRAM内,再在SRAM内将bit[5]对应的二进制数和bit[3]对应的二进制数都更新为第二预置的一位二进制数(等同于二进制1),而维持其他bit不变;然后发送0x1F指令,将更新后的低八位的二进制数值写入所述配置寄存器的起始地址0xA0处,从而将bit[5]和bit[3]都置1,而起始地址0xA0处的bit[7:6]、bit[4]和bit[2:0]都维持原来的二进制数值。然后进入步骤S206。
步骤S206、通过读取FLASH内置寄存器来获取步骤S205写入的每个块保护配置位上存储的二进制数,然后进入步骤S207。步骤S206的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器(可以是NAND闪存存储器的特定地址的区块)的低八位,其中,待测试的块保护配置位都在所述FLASH内置寄存器的低八位中;然后从读取出的相应比特位中,获取步骤S205写入的每个块保护配置位(第一批预设块保护配置位的每个位)上存储的二进制数。在NAND FLASH访问模式下,步骤S206是通过对FLASH发送0x0F指令,再发送起始地址0xA0,读取所述配置寄存器的起始地址0xA0处的低八位bit[7:0]所存储的二进制数,特别读取出bit[5]存储的二进制数和bit[3]存储的二进制数,再进入步骤S207。
步骤S207、判断步骤S206获取的第一批预设块保护配置位的每个块保护配置位上存储的二进制数是否都是第二预置的一位二进制数,是则进入步骤S208,否则进入步骤S209。在步骤S207中,参与判断的是参与当前一轮读写测试的互不相邻的两个待测试的块保护配置位。在NAND FLASH访问模式下,执行至步骤S207时,在读取出的低八位bit[7:0]中,判断读取出的bit[5]和bit[3]是否都为二进制1,是则进入步骤S208,否则进入步骤S209。
步骤S208、最新获取的互不相邻的两个待测试的块保护配置位(第一批预设块保护配置位)上存储的二进制数都是第二预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤S209;在NAND FLASH访问模式下进入步骤S208时则对结果识别标志量flag加一处理,使得flag=2;然后进入步骤S209。确定完成同一批的块保护配置位的连续两轮的读写测试,即自步骤S201至步骤S208完成互不相邻的两个待测试的块保护配置位的连续两轮的读写测试,包括步骤S201和步骤S205对待测试的块保护配置位的写操作、步骤S202和步骤S206对待测试的块保护配置位的读操作、步骤S203和步骤S207对待测试的块保护配置位的判断操作,以组合为所述连续两轮读写测试。
需要说明的是,当判断步骤S207当前获取的第一批预设块保护配置位的每个块保护配置位上存储的二进制数不都是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S209。
步骤S209、将第一预置的一位二进制数写入新的一批块保护配置位,其中,新的一批块保护配置位是步骤S201所述的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位,记为第二批预设块保护配置位。在本实施例中,互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位分别与步骤S201所述的互不相邻的两个待测试的块保护配置位相邻,互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位只有一个,即第二批预设块保护配置位只有一个比特位,以避免步骤S209写入的块保护配置位在读写测试过程中不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的影响,即可以包容其相邻位出现同步置位的异常情况,毕竟其相邻位不在当前一轮读写测试中且已在前述步骤中通过相应的读写测试才进入步骤S209。然后进入步骤S210。为了能够对互不相邻的两个待测试的块保护配置位之间的块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态,在NAND FLASH访问模式下,执行步骤209的过程包括:发送0x0F指令,读取配置寄存器内的起始地址0xA0上的低八位的二进制数值至SRAM内,再在SRAM内将bit[4]对应的二进制数更新为第一预置的一位二进制数(等效于清零),而维持其他bit不变;然后发送0x1F指令,将更新后的低八位的二进制数值写入所述配置寄存器的起始地址0xA0处,从而将bit[4]置1,而起始地址0xA0处的bit[7:5]和bit[3:0]都维持原来的二进制数值。然后进入步骤S210。
步骤S210、通过读取FLASH内置寄存器来获取第二批预设块保护配置位上存储的二进制数,然后进入步骤S211。步骤S210的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器的低八位,其中,块保护配置位都在所述FLASH内置寄存器的低八位中;然后从读取出的相应比特位中,获取步骤S209写入(置位)的块保护配置位(步骤S209所述的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位,即第二批预设块保护配置位)上存储的二进制数,然后进入步骤S211。在NAND FLASH访问模式下,执行步骤S210时,通过对FLASH发送0x0F指令,再发送起始地址0xA0,读取所述配置寄存器的起始地址0xA0处的低八位bit[7:0]所存储的二进制数,并能够提取出bit[4]存储的二进制数,再进入步骤S211。
步骤S211、判断步骤S210获取的第二批预设块保护配置位(步骤S210获取的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位)上存储的二进制数是否为第一预置的一位二进制数,是则进入步骤S212,否则进入步骤S213。在步骤S211中,参与判断的是参与当前一轮读写测试的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位(第二批预设块保护配置位),排除其相邻位存储的二进制数的影响。在NAND FLASH访问模式下,执行至步骤S211,在读取出的低八位bit[7:0]中,判断读取出的bit[4]是否为二进制0,是则进入步骤S212,否则进入步骤S213。
步骤S212、步骤S211判断成立时,对所述结果识别标志量加一;然后进入步骤S213;在NAND FLASH访问模式下进入步骤S212时则对结果识别标志量flag加一处理,使得flag=3;然后进入步骤S213。
需要说明的是,当判断步骤S211当前读取的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位(第二批预设块保护配置位)上存储的二进制数不是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S213。
步骤S213、无论步骤S211的判断是否成立,都将第二预置的一位二进制数写入步骤S209所述的一批块保护配置位(第二批预设块保护配置位),其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;为了能够对待测试的块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态。在NAND FLASH访问模式下,执行步骤213的过程包括:发送0x0F指令,读取配置寄存器内的起始地址0xA0上的低八位的二进制数值至SRAM内,再在SRAM内将bit[4]对应的二进制数都更新为第二预置的一位二进制数(等同于二进制1),而维持其他bit不变;然后发送0x1F指令,将更新后的低八位的二进制数值写入所述配置寄存器的起始地址0xA0处,从而将bit[4]都置1,而起始地址0xA0处的bit[7:5]和bit[3:0]都维持原来的二进制数值。然后进入步骤S214。
步骤S214、通过读取FLASH内置寄存器来获取第二批预设块保护配置位的每个块保护配置位上存储的二进制数,然后进入步骤S215。步骤S214的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器的低八位,其中,块保护配置位都在所述FLASH内置寄存器的低八位中;然后从读取出的相应比特位中,获取步骤S213写入的每个块保护配置位(第二批预设块保护配置位的每个位)上存储的二进制数,然后进入步骤S215。在NANDFLASH访问模式下,步骤S214是通过对FLASH发送0x0F指令,再发送地址0xA0,读取所述配置寄存器的起始地址0xA0处的低八位bit[7:0]所存储的二进制数至SRAM,特别在SRAM内获取出bit[4]存储的二进制数,再进入步骤S215。
步骤S215、判断步骤S214当前获取的第二批预设块保护配置位(互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位)上存储的二进制数是否为第二预置的一位二进制数,是则进入步骤S216,否则进入步骤S217。在步骤S215中,参与判断的是参与当前一轮读写测试的一个待测试的块保护配置位。在NAND FLASH访问模式下,执行至步骤S215时,在读取出的低八位bit[7:0]中,判断读取出的bit[4]是否为二进制1,是则进入步骤S216,否则进入步骤S217。
步骤S216、最新获取的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位(第二批预设块保护配置位)上存储的二进制数是第二预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤S217;在NAND FLASH访问模式下进入步骤S216时则对结果识别标志量flag加一处理,使得flag=4;然后进入步骤S217。确定完成同一批的块保护配置位的连续两轮的读写测试,即自步骤S201至步骤S208完成互不相邻的两个待测试的块保护配置位的连续两轮的读写测试,包括步骤S209和步骤S213对同一个待测试的块保护配置位的写操作、步骤S210和步骤S214对同一个待测试的块保护配置位的读操作、步骤S211和步骤S215对同一个待测试的块保护配置位的判断操作,以组合为所述连续两轮读写测试。
需要说明的是,当判断步骤S215当前读取的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位(第二批预设块保护配置位)上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S217。
步骤S217、判断所述结果识别标志量自步骤S201执行至步骤S216累计获取的变化量是否为4,是则确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,表示FLASH内置寄存器的块保护配置位读写正确,则在NAND FLASH访问模式下判断到结果识别标志量flag等于4时,确定FLASH的类型为NAND闪存存储器,其内部的配置寄存器的块保护配置位读写正确;否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,表示FLASH内置寄存器的块保护配置位读写正确,则在NAND FLASH访问模式下判断到结果识别标志量flag不等于4(具体是小于4)时,确定FLASH的类型不是NAND闪存存储器,进而证明内部的配置寄存器的块保护配置位读写不正确。需要说明的是,在前述实施例中,不以一次寄存器读写测试的结果决定FLASH的类型,而是连续经过4次判断后,在结果计数值的变化量不是4时才确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。在本技术方案中,因为FLASH内置寄存器的相应块保护配置位的读写时间极快,占用的时间极短,所以直至最后4轮测试完成,再决定判断结果,也不会太影响系统实时性。
需要说明的是,自步骤S201执行至步骤S217也可以用于NOR FLASH访问模式下,识别容量较大的NOR闪存存储器,这里的容量大具体是可以设置3个或3个以上的块保护配置位。
在前述步骤中,先对互不相邻的两个待测试的块保护配置位同时写入更新为一种的一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再对互不相邻的两个待测试的块保护配置位写入更新为另一种的一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再对互不相邻的两个待测试的块保护配置位之间的块保护配置位重复前述的写读循环或测试,直到测试次数达到四次才基于结果识别标志量判断确定FLASH的类型,提高判断结果的准确性。与现有技术相比,本实施例基于相邻和不相邻的比特位关系分批次完成对全部待测试的块保护配置位的读写测试,并保证每一批待测试的块保护配置位所执行的每一轮读写测试的时间都不重叠,克服寄存器的相邻位会同步置位为相同的二进制数的问题,因此本技术方案通过组合置位不同的二进制数(清0和置1)的方式,按照特定的读写顺序完成FLASH内置寄存器的功能测试,提高FLASH内置寄存器类型识别的准确性。
作为一种实施例,在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中一个设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的待测试的块保护配置位中另一个设置为用于读写测试的又一批块保护配置位后,控制每一批的块保护配置位都是进行一轮读写测试,并在每一轮读写测试中对同一个块保护配置位只写入一种二进制数,比如其中一个块保护配置位在第一轮被清0时,则在第二轮中被写1;另一方面,另一个块保护配置位在第一轮被清0,则在第三轮中被写1。其中,不论是哪一批块保护配置位,每一轮读写测试都不能同时进行。需要说明的是,在FLASH的容量较小时,FLASH内置寄存器的功能标志位中设置为块保护配置位较少,配置为不同容量的不同类型的FLASH所共享的待测试的块保护配置位则更少,这时考虑到所述类型识别方法对硬件的兼容性(兼容于不同型号的FLASH),只能用仅配置出的彼此相邻的两个待测试的块保护配置位进行读写测试;在此基础上,再分别对相邻的两个待测试的块保护配置位写入为另一种二进制数,并对每个待测试的块保护配置位各进行一轮读写测试但不同时进行,也在一定程度上有效应对FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响。每一批的块保护配置位在同一轮读写测试过程中,每一个待测试的块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数。优选地,每一个待测试的块保护配置位在写入为一位二进制数之前,先读取所述FLASH内置寄存器的所有位上存储的数值,获知所述FLASH内置寄存器存储的二进制数,以便于发送写指令去将合适的待测试的块保护配置位被写入为所要求的二进制数,而控制其余位维持不变;这样,每一批的块保护配置位中的所有的块保护配置位形成写、读操作的循环或形成读、写、读操作的循环。在前述的读写测试的基础上,若判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
作为另一种实施例,公开一种FLASH的类型识别方法,类型识别方法的执行主体是FLASH外部的接口控制器,通过发送指令来读写FLASH内置寄存器,如图3所示,所述类型识别方法具体包括:
步骤S301、将第一预置的一位二进制数分别写入FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位,其中,彼此相邻的两个待测试的块保护配置位是预先设置的进行当前一轮读写测试的一批块保护配置位;然后进入步骤S302。步骤S301写入的彼此相邻的两个待测试的块保护配置位是考虑FLASH的块空间的大小容量的局限性而做出的读写测试选择。
在执行步骤S301之前,还包括:由位于FLASH的外部的主机发送至总线接口的指令完成对所述预设访问模式的配置,在配置出当前所需识别的FLASH类型对应的预设访问模式后,优选地设置所述结果识别标志量的初始值为0;然后,为了能够对彼此相邻的两个待测试的块保护配置位进行置位操作,先发送写使能指令,配置所述FLASH内置寄存器进入写使能状态;然后发送读指令,读取特定地址上的所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,以获取各位上二进制数的置位情况,方便后续修改置位,本实施例至少读取特定地址上的所述FLASH内置寄存器的低八位,其中,块保护配置位都在所述FLASH内置寄存器的低八位中。通过读取缓存至SRAM来获知所述FLASH内置寄存器的所有块保护配置位存储的二进制数后,在待测试的块保护配置位中,选择属于FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位对应置位的二进制数更新(被写)为第一预置的一位二进制数,当然已经置位为第一预置的一位二进制数的待测试的块保护配置位不需再更新;然后发送写指令,将第一预置的一位二进制数分别写入FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位,其它的比特位处存储的二进制数不发生改变。
为了便于说明,本实施例选择配置的预设访问模式为NOR FLASH访问模式,用于开启识别NOR闪存存储器的读写测试操作,并设置所述结果识别标志量flag的初始值为0,此时,选择的待测试的块保护配置位是NOR闪存存储器内的状态寄存器的bit[3:2],这也是其它容量、型号的NAND闪存存储器和NOR闪存存储器都存在的块保护配置位,具备兼容性;所述预设访问模式配置为NOR FLASH访问模式时,相关的指令参数与不同型号(ID号)NOR闪存存储器,内部所共有的寄存器相关联。使得所述待测试的块保护配置位具有硬件兼容性,只是所属的寄存器及配置地址不同,标志功能是相同的,都是为FLASH的块空间的保护而设置的用于配置地址命令参数的位;在本实施例中,状态寄存器是容量较小的16位寄存器,bit[3]和bit[2]是彼此相邻的两个待测试的块保护配置位,作为用于读写测试的一批块保护配置位。因此,按照前述步骤,发送0x05指令,读取状态寄存器的低八位的二进制数值至SRAM,再在SRAM内将bit[3]对应的二进制数和bit[2]对应的二进制数都更新为第一预置的一位二进制数(等同于二进制0),而维持其他bit不变;然后发送0x01指令,以将更新后的低八位的二进制数值写入所述状态寄存器,从而实现在步骤S301中将bit[3]和bit[2]都清0,而所述状态寄存器的bit[7:4]和bit[1:0]都维持原来的二进制数值。然后进入步骤步骤S302。
在一些块保护的实施场景中,往所述状态寄存器的低八位写入数据过程中,按照对应型号FLASH的数据手册规定的写周期循环发送0x05指令读取所述状态寄存器的WIP(write in progress)位,直到检测到WIP位变为0时,表示当前向所述状态寄存器的写入操作完成,则停止发送0x05指令,其中,所述状态寄存器的WIP(write in progress)位是所述状态寄存器的bit[0]。
步骤S302、通过读取FLASH内置寄存器来获取步骤S301写入的每个块保护配置位上存储的二进制数,然后进入步骤S303。在步骤S303中,获取的FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位是经过步骤S301置位的二进制数,步骤S302的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,本实施例至少读取所述FLASH内置寄存器(可以是NAND闪存存储器的特定地址的区块)的低八位,再从这些比特位中,获取步骤S301写入的每个块保护配置位上存储的二进制数。在NORFLASH访问模式下,步骤S302是通过对FLASH发送0x05指令,读取所述状态寄存器的低八位bit[7:0]所存储的二进制数,再从中分别获取bit[3]和bit[2]所存储的二进制数;然后进入步骤步骤S303。
步骤S303、判断步骤S302获取的彼此相邻的两个待测试的块保护配置位上存储的二进制数是否都是第一预置的一位二进制数,是则进入步骤S304,否则进入步骤S305。在步骤S303中,参与判断的是参与当前一轮读写测试的彼此相邻的两个待测试的块保护配置位,不是FLASH内置寄存器的所有位存储的二进制数。在NOR FLASH访问模式下,执行至步骤S303,在读取出的低八位bit[7:0]中,判断bit[3]和bit[2]是否都为二进制0,是则进入步骤S304,否则进入步骤S305。
步骤S304、对结果识别标志量加一;然后进入步骤S305;在NOR FLASH访问模式下进入步骤S304时则对结果识别标志量flag加一处理,使得flag=1;然后进入步骤S305;其中,结果识别标志量是预先设置的计数量。确定步骤S301至步骤S304完成同一批的块保护配置位的一轮的读写测试。
需要说明的是,当判断步骤S302读取的彼此相邻的两个待测试的块保护配置位上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S305。
步骤S305、将第二预置的一位二进制数写入步骤S301所述的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位,步骤S301所述的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位记为第一待测试块保护配置位,作为用于读写测试的另一批块保护配置位;然后进入步骤S306。其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;为了能够对所述第一待测试块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态。在NOR FLASH访问模式下,执行步骤S305的过程包括:发送0x05指令,读取所述状态寄存器的低八位的二进制数值至SRAM内,再在SRAM内将bit[3]对应的二进制数更新为第二预置的一位二进制数(等同于二进制1),而维持其他bit不变;然后发送0x01指令,将更新后的低八位的二进制数值写入所述状态寄存器,从而将bit[3]置1,而其余位都维持原来的二进制数值。然后进入步骤S306。
步骤S306、通过读取FLASH内置寄存器来获取步骤S305写入的块保护配置位上存储的二进制数,然后进入步骤S307。步骤S306的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器(可以是NOR闪存存储器)的低八位,其中,待测试的块保护配置位都在所述FLASH内置寄存器的低八位中,然后从读取出的相应比特位中,获取步骤S305写入的每个块保护配置位(第一批预设块保护配置位的每个位)上存储的二进制数。在NORFLASH访问模式下,步骤S306是通过对FLASH发送0x05指令,读取所述状态寄存器的低八位bit[7:0]所存储的二进制数,再从中获取出bit[3]存储的二进制数,再进入步骤S307。
步骤S307、判断步骤S306当前读取的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位上存储的二进制数是否为第二预置的一位二进制数,即判断所述第一待测试块保护配置位存储的二进制数是否为第二预置的一位二进制数,是则进入步骤S308,否则进入步骤S309。在步骤S307中,参与判断的是参与步骤S305的置位操作(被写入)的第一待测试块保护配置位,属于参与当前一轮读写测试中的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位。在NOR FLASH访问模式下,执行至步骤S307时,在读取出的低八位bit[7:0]中,判断bit[3]是否为二进制1,是则进入步骤S308,否则进入步骤S309。
步骤S308、第一待测试块保护配置位上最新存储的二进制数是第二预置的一位二进制数时,对所述结果识别标志量进行加一;然后进入步骤S309;在NOR FLASH访问模式下进入步骤S308时则对结果识别标志量flag加一处理,使得flag=2;然后进入步骤S309。确定完成同一批的块保护配置位的一轮的读写测试,即自步骤S305至步骤S308完成第一待测试块保护配置位的一轮的读写测试。
需要说明的是,当判断所述第一待测试块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S309。
步骤S309、将第二预置的一位二进制数写入步骤S301所述的彼此相邻的两个待测试的块保护配置位的另一个块保护配置位,步骤S301所述的彼此相邻的两个待测试的块保护配置位的另一个块保护配置位记为第二待测试块保护配置位,不等于所述第一待测试块保护配置位,包括比特位的位置,由于当前读写测试与前述步骤S305至步骤S308执行的读写测试不是同时进行,所以在所述FLASH内置寄存器异常时不受相邻的所述第一待测试块保护配置位的影响。然后进入步骤S310。为了能够对互不相邻的两个待测试的块保护配置位之间的块保护配置位进行置位操作,发送写使能指令,配置所述FLASH内置寄存器进入写使能状态,在NOR FLASH访问模式下,执行步骤309的过程包括:发送0x05指令,读取状态寄存器的低八位的二进制数值至SRAM内,再在SRAM内将bit[2]对应的二进制数更新为第一预置的一位二进制数(等效于置1),而维持其他bit不变;然后发送0x01指令,将更新后的低八位的二进制数值写入所述状态寄存器,从而将所述状态寄存器的bit[2]置1,而所述状态寄存器的bit[7:3]和bit[1:0]都维持原来的二进制数值。然后进入步骤S310。
步骤S310、通过读取FLASH内置寄存器来获取步骤S309写入的块保护配置位上存储的二进制数,然后进入步骤S311。步骤S310的具体的获取方式包括:发送读指令,读取所述FLASH内置寄存器中所有位存储的二进制数至SRAM或其它同类型的缓存空间内,再从这些位存储的二进制数中获取各位上二进制数的置位情况,方便后续更新,本实施例至少读取所述FLASH内置寄存器(可以是NOR闪存存储器)的低八位,其中,待测试的块保护配置位都在所述FLASH内置寄存器的低八位中,然后从读取出的相应比特位中,获取步骤S309写入的每个块保护配置位上存储的二进制数,然后进入步骤S311。在NOR FLASH访问模式下,执行步骤S310时,通过对FLASH发送0x05指令,读取所述状态寄存器的低八位bit[7:0]所存储的二进制数至SRAM,再从中获取出bit[2]存储的二进制数,再进入步骤S311。
步骤S311、判断步骤S310获取的块保护配置位上存储的二进制数是否为第二预置的一位二进制数,是则进入步骤S312,否则进入步骤S313。在步骤S311中,参与判断的所述第二待测试块保护配置位是参与当前一轮读写测试的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位,排除其相邻位存储的二进制数的影响。在NORFLASH访问模式下,执行至步骤S311,在读取出的低八位bit[7:0]中,判断读取出的bit[2]是否为二进制1,是则进入步骤S312,否则进入步骤S313。
步骤S312、步骤S311判断成立时,即所述第二待测试块保护配置位上存储的二进制数是所述第二预置的一位二进制数时,对所述结果识别标志量加一;然后进入步骤S313;在NOR FLASH访问模式下进入步骤S312时则对结果识别标志量flag加一处理,使得flag=3;然后进入步骤S313。
需要说明的是,当判断到步骤S310获取的块保护配置位上存储的二进制数不是第二预置的一位二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤S313。
步骤S313、无论步骤S311判断是否成立,都判断所述结果识别标志量自步骤S301执行至步骤S312累计获取的变化量是否为3,是则确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,表示FLASH内置寄存器的块保护配置位读写正确,则在NORFLASH访问模式下判断到结果识别标志量flag等于3时,确定FLASH的类型为NOR闪存存储器,其内部的状态寄存器的块保护配置位读写正确;否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,表示FLASH内置寄存器的块保护配置位读写正确,则在NOR FLASH访问模式下判断到结果识别标志量flag不等于3(具体是小于3)时,确定FLASH的类型不是NOR闪存存储器,进而证明内部的状态寄存器的块保护配置位读写不正确。需要说明的是,在前述实施例中,尽管一次读写测试中若不能正确读取回最新写入的二进制数则可以确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,但是仍是坚持连续经过3次判断后,在结果计数值的变化量不是3时,才确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型,提高识别结果的准确性和可靠性,不受整体判断步骤的执行时间的影响,因为FLASH内置寄存器的相应块保护配置位的读写时间极快,占用的时间极短,所以直至最后3轮测试完成,再决定判断结果,也不会太影响FLASH所属的系统实时性,反而维持类型识别结果的可靠性和准确性。
需要说明的是,步骤S301执行至步骤S313也可以用于NAND FLASH访问模式下,识别容量较小的NAND闪存存储器,这里的容量较小具体是在所述FLASH内置寄存器中仅仅设置2个相邻的块保护配置位,且这2个相邻的块保护配置位是所有容量、型号的NAND闪存存储器和NOR闪存存储器都存在的。
前述步骤S301至步骤S313应用于容量较小且配置较少的待测试的块保护配置位的FLASH的类型识别场景下,先对彼此相邻的两个待测试的块保护配置位同时写入更新为一种的一位二进制数,再通过回读对应块保护配置位上存储的二进制数来判断当前一轮读写测试中的识别结果是否正确并记为一次测试或一个写读循环;再分别对这相邻的两个待测试的块保护配置位都写入更新为另一种的一位二进制数但不同时进行,再通过逐位回读对应块保护配置位上存储的二进制数来判断先后两轮读写测试中的识别结果是否正确并各自记为一次测试或一个写读循环,直到测试次数达到三次才基于结果识别标志量判断确定FLASH的类型,提高判断结果的准确性。与现有技术相比,本实施例基于相邻的比特位关系分批次完成对全部待测试的块保护配置位的读写测试,并保证每一批待测试的块保护配置位所执行的每一轮读写测试的时间都不重叠,至少相对于逐位更新置位的方式来回读判断,减少所需进行的识别步骤,保证测试效率;且本实施例通过对相邻的两个待测试的块保护配置位分时间执行读写测试,可以有效地应对寄存器的相邻位在写操作过程中可能出现同步置位的异常情况,因此,本实施例通过组合置位不同的二进制数(清0和置1)的方式,按照特定的读写顺序完成FLASH内置寄存器的功能测试,提高FLASH内置寄存器类型识别的准确性。
在前述实施例的基础上,在所述步骤S1和步骤S2之间还包括解锁NOR / NANDFLASH硬件保护状态的步骤,具体包括:获取所述FLASH内置寄存器的硬件块保护标志位上存储的二进制数,具体是读取FLASH内置寄存器的低八位上存储的二进制数而获取到。当判断到硬件块保护标志位上存储的二进制数为1时,则将硬件块保护标志位对应的二进制数配置为0,并利用二进制0更新所述FLASH内置寄存器的硬件块保护标志位,直到所述FLASH内置寄存器的硬件块保护标志位所存储的二进制数被读取为0。当判断到硬件块保护标志位上存储的二进制数为0时,确定所述FLASH当前不处于硬件保护状态,进而确定解除所述FLASH的内存空间的块保护。限定所述FLASH内置寄存器通过将硬件块保护标志位清零的方式或反复清零的方式完成所述FLASH的内存空间的硬件保护状态的解除,以开始接受后续执行的类型识别方法中对于所述FLASH内置寄存器的读写访问。
作为一种实施方式,先执行NOR FLASH访问模式下的块空间的解锁操作以便执行前述NOR FLASH访问模式对应的类型识别方法步骤(比如执行步骤S201至步骤S217),再执行NAND FLASH访问模式下的块空间的解锁操作以便执行前述NAND FLASH访问模式对应的类型识别方法(比如执行步骤S301至步骤S313)。
具体地,步骤401、利用主控芯片的总线控制器将FLASH配置为NOR FLASH访问模式。然后进入步骤步骤402。
步骤402、总线控制器向FLASH发送写使能指令,使能状态寄存器(属于NOR FLASH访问模式下存在指令联系的FLASH内置寄存器)的块保护配置位的写操作。然后进入步骤403。
步骤403、总线控制器向FLASH发送读指令,读取状态寄存器的低八位bit[7:0]上存储的二进制值并缓存至主控芯片内部的SRAM。然后进入步骤404。
步骤404、判断所述状态寄存器的硬件块保护标志位bit[7]是否为二进制1,是则表示FLASH的块空间写禁止有效,不允许外部对FLASH的块空间执行写操作,进而表示所述FLASH的内存空间处于块保护状态下,然后进入步骤405;否则表示FLASH的块空间写禁止有效,表示NOR FLASH访问模式下的FLASH不处于硬件保护状态,然后进入步骤406。
步骤405、将步骤403缓存至主控芯片内部的SRAM的bit[7]对应存储的二进制数清零,并保持其余位bit[6:0]不变,以在SRAM内写入更新所述状态寄存器的低八位bit[7:0]对应存储的二进制值,再通过发送写指令将更新后的低八位bit[7:0]对应存储的二进制值写入状态寄存器,并按照对应型号FLASH的数据手册规定的写周期循环发送0x05指令,读取所述状态寄存器的WIP(write in progress)位,直到WIP位变为0,停止发送0x05指令,表示当前向所述状态寄存器的写入操作完成,即更新后的低八位bit[7:0]对应存储的二进制值已经成功写入状态寄存器对应的位上,并能够被正常读取出来。其中,所述状态寄存器的WIP(write in progress)位是所述状态寄存器的bit[0]。
步骤406、利用主控芯片的总线控制器将FLASH由NOR FLASH访问模式配置为NANDFLASH访问模式。然后进入步骤步骤407。
步骤407、总线控制器向FLASH发送写使能指令,使能配置寄存器(属于NAND FLASH访问模式下存在指令联系的FLASH内置寄存器)的块保护配置位的写操作。然后进入步骤408。
步骤408、总线控制器向FLASH发送读指令,再发送配置寄存器的块保护配置位的起始地址0xA0,读取起始地址0xA0处的低八位bit[7:0]上存储的二进制值并缓存至主控芯片内部的SRAM。然后进入步骤409。其中,配置寄存器的低八位bit[7:0]是属于配置寄存器设置的块保护配置位。
步骤409、判断所述配置寄存器的起始地址0xA0处的硬件块保护标志位bit[7]是否为二进制1,是则表示FLASH的块空间写禁止有效,不允许外部对FLASH的块空间执行写操作,进而表示所述FLASH的内存空间处于块保护状态下,然后进入步骤410;否则表示FLASH的块空间写禁止有效,表示NAND FLASH访问模式下的FLASH不处于硬件保护状态,表示所述FLASH解除硬件保护流程结束。
步骤410、将步骤408缓存至主控芯片内部的SRAM的bit[7]对应存储的二进制数清零,并保持其余位bit[6:0]不变,以在SRAM内写入更新所述起始地址0xA0处的低八位bit[7:0]对应存储的二进制值,再通过发送写指令将更新后的低八位bit[7:0]对应存储的二进制值写入所述配置寄存器设置的块保护配置位(起始地址0xA0处),然后进入步骤411。
步骤411、重复执行步骤409至步骤410,直到步骤409再次判断(相对于未开始将bit[7]对应存储的二进制数清零前的状态)到所述配置寄存器的起始地址0xA0处的硬件块保护标志位bit[7]为二进制0,之所以循环判断操作,原因在于FLASH内置寄存器块保护配置位的状态更新需要一定的内部等待时间,直到确认写操作FLASH已生效。
基于前述实施例的类型识别方法的模块化处理,本发明还公开一种基于FLASH的类型识别系统,如图4所示,包括FLASH和主控模块;主控模块包括总线接口模块,FLASH包括访问配置模块、FLASH内置寄存器、块保护配置位测试模块;主控模块,用于通过总线接口模块向FLASH发送至程序指令,程序指令包括配置指令、读指令和写指令;访问配置模块,用于配置FLASH进入预设访问模式;块保护配置位测试模块,用于基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;其中,块保护配置位的相邻关系包括比特位的彼此相邻和比特位的互不相邻;不同批的块保护配置位执行读写测试的时间是不同的;待测试的块保护配置位是任意FLASH都设置的;块保护配置位测试模块,还用于在判断到每一批的块保护配置位在读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型。与现有技术相比,所述类型识别系统中,所述访问配置模块能够根据所需识别的FLASH的类型去挑选配置预先存在的各种预设访问模式,再交由所述块保护配置位测试模块分批次地对FLASH内置寄存器中相邻的块保护配置位和不相邻的块保护配置位进行分批次的读写测试,所述块保护配置位测试模块在每一批的块保护配置位在读写测试中都读取出最新写入的一位二进制数时才确定预设访问模式所对应的闪存存储器类型,不需在改动FLASH(增减个别型号的FLASH)时额外改动FLASH内部创建的ID信息存储列表,减少FLASH型号变化时产生的软件维护量;同时在ID识别号与对应类型的FLASH不匹配的生产制造条件下、或没有内置ID号或没有内置SFDP表、或FLASH的设备信息的软件系统不能正常读取改动的条件下,所述块保护配置位测试模块仅通过分批次地读写访问FLASH内置寄存器就能识别FLASH的类型(预设访问模式所对应的闪存存储器类型),提升所述类型识别系统的硬件兼容性(包括FLASH容量大小、FLASH型号更新、FLASH软件配置信息的更新),提高所述类型识别系统对于FLASH类型自适应能力,且能够在第二轮读写测试和第三轮读写测试中考虑到所述FLASH内置寄存器的相邻的位存在读写异常情况的影响,提高识别FLASH的类型的正确率。具体的实施方式可参照前述实施例的类型识别方法的具体步骤。
作为一种实施例,所述块保护配置位测试模块,用于在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,对每一批的块保护配置位都连续进行两轮读写测试;连续进行的两轮读写测试中,即每连续进行的两轮读写测试中,块保护配置位测试模块在每一轮读写测试中对同一个块保护配置位所写入的一位二进制数是不同的;每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中将每一个块保护配置位都被写入为一位二进制数,块保护配置位测试模块再读取出每个块保护配置位所存储的二进制数。所述块保护配置位测试模块,还用于判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。具体的实施方式参照前述实施例的步骤S201至步骤S217所述的类型识别方法。与现有技术相比,所述块保护配置位测试模块将互不相邻的两个待测试的块保护配置位设置为一批块保护配置位以连续进行两轮读写测试、并将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为另一批块保护配置位以连续进行另外两轮读写测试,使得所述块保护配置位测试模块对这两批块保护配置位累计执行的读写测试不受FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况的影响,比如当一个位写入为二进制1时相邻的一位也会同步置位为二进制1,不会影响到所述块保护配置位测试模块的类型判断结果,提高读写验证FLASH内置寄存器的功能的准确性,进而保证识别所述FLASH内置寄存器的效果。
作为一种实施例,所述块保护配置位测试模块,用于在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中一个设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的待测试的块保护配置位中另一个设置为用于读写测试的又一批块保护配置位后,对每一批的块保护配置位都进行一轮读写测试,并控制每一轮读写测试中对同一个块保护配置位只写入一种二进制数;其中,每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中将每一个块保护配置位写入为一位二进制数,块保护配置位测试模块再读取出每个块保护配置位所存储的二进制数;块保护配置位测试模块,还用于在判断到每一批的块保护配置位在每一轮读写测试中都由所述块保护配置位测试模块读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。具体的实施方式参照前述实施例的步骤S301至步骤S313所述的类型识别方法。在本实施例中,所述块保护配置位测试模块先将相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位写入为同一种二进制数以同时进行一轮寄存器的读写测试,特别是在FLASH的容量较小时,FLASH内置寄存器的功能标志位中设置为块保护配置位较少,配置为不同容量的不同类型的FLASH所共享的待测试的块保护配置位则更少,这时考虑到所述类型识别方法的硬件兼容性(不同型号的FLASH),只能用仅配置出的相邻的两个待测试的块保护配置位进行读写测试,在此基础上,再分别对相邻的两个待测试的块保护配置位写入为另一种二进制数,并对每个待测试的块保护配置位各进行一轮读写测试但不同时进行,也在一定程度上有效应对FLASH内置寄存器(NOR内部的状态寄存器和NAND内部的配置寄存器)的相邻位可能出现置位异常的情况对所述块保护配置位测试模块输出的识别结果的影响。
在前述实施例中,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式;FLASH按类型分为NOR闪存存储器和NAND闪存存储器;其中,NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;本实施例中,访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器,访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。本实施例将预设访问模式设置为所需判断识别的FLASH类型的请求指令,并与所要读写访问的具体寄存器及其块保护配置位建立联系,奠定FLASH的类型识别的标志配置和判断基础。
需要说明的是,所述总线接口模块选择SPI接口,SPI接口具有包括两条控制线、两条数据线的四根导线、两条写操作控制线,其中,控制线包括串行时钟 (SCLK)线及芯片选择(CS)线,SCLK线用数字时钟信号来驱动以调节位在装置之间的流动。CS用启用或停用正由主装置控制的从属装置(本实施例公开的FLASH或FLASH内置寄存器)的信号来驱动。数据线包括主输出 /从输入(MOSI)线及主输入/从输出(MISO)线。MOSI线用以将数据从主装置的输出传送到从属装置(本实施例公开的FLASH或FLASH内置寄存器)的输入。MISO线用以将数据从从属装置(本实施例公开的FLASH或FLASH内置寄存器)的输出传送到主装置的输入。写操作控制线包括WP(write protect写保护线,用于开启或停用FLASH 的块空间的硬件保护(写禁止),HOLD写保持线,用于中断SPI FLASH 内部的当前工作,起到任务调度的作用。
在本申请所提供的实施例中,应该理解到,所揭露的系统、芯片,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目。

Claims (14)

1.一种FLASH的类型识别方法,其特征在于,包括:
步骤1、配置FLASH进入预设访问模式;
步骤2、基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;当每一批的块保护配置位在读写测试中都读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;
其中,块保护配置位的相邻关系包括彼此相邻和互不相邻;
其中,不同批的块保护配置位执行读写测试的时间点是不同的;待测试的块保护配置位是任意FLASH都设置的。
2.根据权利要求1所述类型识别方法,其特征在于,所述步骤2的具体方法包括:
在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,控制每一批的块保护配置位都连续进行两轮读写测试;其中,连续进行的两轮读写测试中,每一轮读写测试对同一个块保护配置位所写入的一位二进制数是不同的;每一批的块保护配置位在同一轮读写测试过程中,每一个待测试的块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数;
若判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
3.根据权利要求2所述类型识别方法,其特征在于,所述步骤2的具体方法包括:
步骤21、将第一预置的一位二进制数分别写入FLASH内置寄存器中互不相邻的两个待测试的块保护配置位,其中,互不相邻的两个待测试的块保护配置位是预先设置的进行当前一轮读写测试的一批块保护配置位,记为第一批预设块保护配置位;然后通过读取FLASH内置寄存器来获取第一批预设块保护配置位的每个块保护配置位上存储的二进制数,当判断到第一批预设块保护配置位的每个块保护配置位上存储的二进制数都是第一预置的一位二进制数时,对结果识别标志量加一;然后进入步骤22;
步骤22、将第二预置的一位二进制数分别写入第一批预设块保护配置位的每个块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取当前写入的每个块保护配置位上存储的二进制数,当判断到第一批预设块保护配置位的每个块保护配置位存储的二进制数都是第二预置的一位二进制数时,对结果识别标志量加一;确定步骤21和步骤22完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤23;
步骤23、将第一预置的一位二进制数写入新的一批块保护配置位,其中,新的一批块保护配置位是步骤21所述的互不相邻的两个待测试的块保护配置位之间的一个待测试的块保护配置位,记为第二批预设块保护配置位;然后通过读取FLASH内置寄存器来获取第二批预设块保护配置位上存储的二进制数,当判断到当前获取的第二批预设块保护配置位上存储的二进制数是第一预置的一位二进制数时,对所述结果识别标志量加一;然后进入步骤24;
步骤24、将第二预置的一位二进制数写入第二批预设块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取第二批预设块保护配置位上存储的二进制数,当判断到当前获取的第二批预设块保护配置位上存储的二进制数是第二预置的一位二进制数时,对所述结果识别标志量加一;确定步骤23和步骤24完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤25;
步骤25、当所述结果识别标志量自步骤21至步骤24累计产生的变化量为4时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,结果识别标志量是预先设置的计数量。
4.根据权利要求3所述类型识别方法,其特征在于,还包括:
在步骤21中,当判断到第一批预设块保护配置位的各个块保护配置位上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤22;
在步骤22中,当判断到第一批预设块保护配置位的各个块保护配置位上存储的二进制数不都是第二预置的一位二进制数时,控制结果识别标志量保持不变;确定步骤21和步骤22完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤23;
在步骤23中,当判断到第二批预设块保护配置位上存储的二进制数不是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤24;
在步骤24中,当判断到第二批预设块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;确定步骤23和步骤24完成同一批的块保护配置位的连续两轮的读写测试;然后进入步骤25;
在步骤25中,当所述结果识别标志量自步骤21至步骤24累计产生的变化量不是4时,确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
5.根据权利要求1所述类型识别方法,其特征在于,所述步骤2的具体方法包括:
在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中的其中一个块保护配置位设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中的另一个块保护配置位设置为用于读写测试的又一批块保护配置位后,控制每一批的块保护配置位都进行一轮读写测试,并在每一轮读写测试中对同一个块保护配置位只写入一种二进制数;其中,每一批的块保护配置位在同一轮读写测试过程中,每一个块保护配置位都是在写操作中被写入为一位二进制数,再被读取出每个块保护配置位所存储的二进制数;
若判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
6.根据权利要求5所述类型识别方法,其特征在于,所述步骤2的具体方法包括:
步骤21、将第一预置的一位二进制数分别写入FLASH内置寄存器中彼此相邻的两个待测试的块保护配置位,其中,彼此相邻的两个待测试的块保护配置位是预先设置的当前进行读写测试的一批块保护配置位;然后通过读取FLASH内置寄存器来获取当前写入的每个块保护配置位上存储的二进制数,当判断到当前获取的彼此相邻的两个待测试的块保护配置位上存储的二进制数都是第一预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤22;
步骤22、将第二预置的一位二进制数写入步骤21所述的彼此相邻的两个待测试的块保护配置位的其中一个块保护配置位,其中,第二预置的一位二进制数与第一预置的一位二进制数是不同;然后通过读取FLASH内置寄存器来获取当前写入的块保护配置位上存储的二进制数,当判断到当前获取的块保护配置位上存储的二进制数是第二预置的一位二进制数时,对结果识别标志量加一;然后进入步骤23;
步骤23、将第二预置的一位二进制数写入步骤21所述的彼此相邻的两个待测试的块保护配置位的另一个块保护配置位,其中,步骤21所述的彼此相邻的两个待测试的块保护配置位的另一个是不同于步骤22中被写入第二预置的一位二进制数的块保护配置位;然后通过读取FLASH内置寄存器来获取当前写入的块保护配置位上存储的二进制数,当判断到当前获取的块保护配置位上存储的二进制数是第二预置的一位二进制数时,对结果识别标志量进行加一;然后进入步骤24;
步骤24、当所述结果识别标志量自步骤21至步骤23累计产生的变化量为3时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型;其中,结果识别标志量是预先设置的计数量。
7.根据权利要求6所述类型识别方法,其特征在于,还包括:
在步骤21中,当判断到当前获取的各个块保护配置位上存储的二进制数不都是第一预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤22;
在步骤22中,当判断到当前获取的块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤23;
在步骤23中,当判断到当前获取的块保护配置位上存储的二进制数不是第二预置的一位二进制数时,控制结果识别标志量保持不变;然后进入步骤24;
在步骤24中,当所述结果识别标志量自步骤21至步骤23累计产生的变化量不是3时,确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
8.根据权利要求2至6任一项所述类型识别方法,其特征在于,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式;FLASH按类型分为NOR闪存存储器和NAND闪存存储器;
其中,NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;
其中,访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器;访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。
9.根据权利要求8所述类型识别方法,其特征在于,所述FLASH内置寄存器及其内部的待测试的块保护配置位是由位于FLASH的外部的主机发送至SPI接口的程序指令所指定的;其中,待测试的块保护配置位是所述FLASH内置寄存器内支持读写操作的标志位,且是不同容量的不同类型的FLASH都设置的;
其中,位于FLASH的外部的主机包括SPI控制器,用于配置FLASH进入预设访问模式。
10.根据权利要求2至6任一项所述类型识别方法,其特征在于,在所述步骤1和步骤2之间还包括:
获取所述FLASH内置寄存器的硬件块保护标志位上存储的二进制数;
当判断到硬件块保护标志位上存储的二进制数为1时,则将硬件块保护标志位对应的二进制数配置为0,并利用二进制0更新所述FLASH内置寄存器的硬件块保护标志位,直到所述FLASH内置寄存器的硬件块保护标志位所存储的二进制数被读取为0;
当判断到硬件块保护标志位上存储的二进制数为0时,确定所述FLASH当前不处于硬件保护状态,进而确定解除所述FLASH的内存空间的块保护。
11.一种基于FLASH的类型识别系统,其特征在于,包括FLASH和主控模块;主控模块包括总线接口模块,FLASH包括访问配置模块、FLASH内置寄存器、块保护配置位测试模块;
主控模块,用于通过总线接口模块向FLASH发送程序指令,程序指令包括配置指令、读指令和写指令;
访问配置模块,用于配置FLASH进入预设访问模式;
块保护配置位测试模块,用于基于FLASH内置寄存器中设置的待测试的块保护配置位的相邻关系,分批次地对相应的块保护配置位进行读写测试;其中,块保护配置位的相邻关系包括彼此相邻和互不相邻;不同批的块保护配置位执行读写测试的时间点是不同的;待测试的块保护配置位是任意FLASH都设置的;
块保护配置位测试模块,还用于在判断到每一批的块保护配置位在读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型。
12.根据权利要求11所述类型识别系统,其特征在于,块保护配置位测试模块,用于在将互不相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将互不相邻的两个待测试的块保护配置位之间存在的块保护配置位设置为用于读写测试的另一批块保护配置位后,对每一批的块保护配置位都连续进行两轮读写测试;其中,连续进行的两轮读写测试中,每一轮读写测试对同一个块保护配置位所写入的一位二进制数是不同的;每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中控制每一个块保护配置位都被写入一位二进制数,块保护配置位测试模块再读取出每一个块保护配置位存储的二进制数;
块保护配置位测试模块,还用于判断到每一批的块保护配置位在每一轮读写测试中都被读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
13.根据权利要求11所述类型识别系统,其特征在于,块保护配置位测试模块,用于在将彼此相邻的两个待测试的块保护配置位设置为用于读写测试的一批块保护配置位、且将同一对彼此相邻的两个待测试的块保护配置位中一个设置为用于读写测试的另一批块保护配置位、且将同一对彼此相邻的待测试的块保护配置位中另一个设置为用于读写测试的又一批块保护配置位后,对每一批的块保护配置位都进行一轮读写测试,并控制每一轮读写测试中对同一个块保护配置位只写入一种二进制数;其中,每一批的块保护配置位在同一轮读写测试过程中,块保护配置位测试模块先在写操作中将每一个块保护配置位写入为一位二进制数,块保护配置位测试模块再读取出每个块保护配置位所存储的二进制数;
块保护配置位测试模块,还用于在判断到每一批的块保护配置位在每一轮读写测试中都由所述块保护配置位测试模块读取出对应块保护配置位上最新写入的一位二进制数时,确定FLASH的类型为当前配置的预设访问模式相匹配的闪存存储器类型,否则确定FLASH的类型不是当前配置的预设访问模式相匹配的闪存存储器类型。
14.根据权利要求12至13任一项所述类型识别系统,其特征在于,所述预设访问模式包括NOR FLASH访问模式和NAND FLASH访问模式;FLASH按类型分为NOR闪存存储器和NAND闪存存储器;
其中,NOR FLASH访问模式是支持访问NOR闪存存储器,NAND FLASH访问模式是支持访问NAND闪存存储器;
访问NOR闪存存储器中的FLASH内置寄存器是指访问其内部的状态寄存器,访问NAND闪存存储器中的FLASH内置寄存器是指访问其内部的配置寄存器。
CN202110724514.1A 2021-06-29 2021-06-29 一种flash的类型识别方法及类型识别系统 Active CN113343319B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110724514.1A CN113343319B (zh) 2021-06-29 2021-06-29 一种flash的类型识别方法及类型识别系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110724514.1A CN113343319B (zh) 2021-06-29 2021-06-29 一种flash的类型识别方法及类型识别系统

Publications (2)

Publication Number Publication Date
CN113343319A true CN113343319A (zh) 2021-09-03
CN113343319B CN113343319B (zh) 2024-04-02

Family

ID=77481333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110724514.1A Active CN113343319B (zh) 2021-06-29 2021-06-29 一种flash的类型识别方法及类型识别系统

Country Status (1)

Country Link
CN (1) CN113343319B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816571A (zh) * 2022-04-15 2022-07-29 西安广和通无线通信有限公司 外挂闪存的方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075892A2 (en) * 2000-03-30 2001-10-11 Micron Technology, Inc. Synchronous flash memory with concurrent write and read operation
US20040083346A1 (en) * 2002-10-24 2004-04-29 Micron Technology, Inc. Permanent memory block protection in a flash memory device
US20050135180A1 (en) * 2000-06-30 2005-06-23 Micron Technology, Inc. Interface command architecture for synchronous flash memory
US20060248267A1 (en) * 2005-04-29 2006-11-02 Programmable Microelectronics Corporation Flash memory having configurable sector size and flexible protection scheme
CN101303884A (zh) * 2008-06-13 2008-11-12 炬力集成电路设计有限公司 与非型闪存控制器和读写控制系统及方法
KR20120069954A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블럭 보호 기능을 갖는 비휘발성 메모리 시스템 및 블럭 상태 제어 방법
US20170060484A1 (en) * 2015-08-28 2017-03-02 Kabushiki Kaisha Toshiba Memory system having a semiconductor memory device with protected blocks
US20190129818A1 (en) * 2016-07-24 2019-05-02 Pure Storage, Inc. Calibration of flash channels in ssd
CN112086078A (zh) * 2020-09-18 2020-12-15 Tcl华星光电技术有限公司 驱动电路的数据保护装置及方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075892A2 (en) * 2000-03-30 2001-10-11 Micron Technology, Inc. Synchronous flash memory with concurrent write and read operation
US20050135180A1 (en) * 2000-06-30 2005-06-23 Micron Technology, Inc. Interface command architecture for synchronous flash memory
US20040083346A1 (en) * 2002-10-24 2004-04-29 Micron Technology, Inc. Permanent memory block protection in a flash memory device
US20060248267A1 (en) * 2005-04-29 2006-11-02 Programmable Microelectronics Corporation Flash memory having configurable sector size and flexible protection scheme
CN101303884A (zh) * 2008-06-13 2008-11-12 炬力集成电路设计有限公司 与非型闪存控制器和读写控制系统及方法
KR20120069954A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블럭 보호 기능을 갖는 비휘발성 메모리 시스템 및 블럭 상태 제어 방법
US20170060484A1 (en) * 2015-08-28 2017-03-02 Kabushiki Kaisha Toshiba Memory system having a semiconductor memory device with protected blocks
US20190129818A1 (en) * 2016-07-24 2019-05-02 Pure Storage, Inc. Calibration of flash channels in ssd
CN112086078A (zh) * 2020-09-18 2020-12-15 Tcl华星光电技术有限公司 驱动电路的数据保护装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
文丰等: "基于FPGA的数据记录器关键技术优化", 《弹箭与制导学报》, vol. 37, no. 5, 15 October 2017 (2017-10-15), pages 119 - 122 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816571A (zh) * 2022-04-15 2022-07-29 西安广和通无线通信有限公司 外挂闪存的方法、装置、设备及存储介质
CN114816571B (zh) * 2022-04-15 2023-06-16 西安广和通无线通信有限公司 外挂闪存的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113343319B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
CN108874301A (zh) 数据储存装置以及其操作方法
US20080016415A1 (en) Evaluation system and method
CN107193560B (zh) 配置更新方法及装置
CN104679672A (zh) 数据储存装置以及快闪存储器控制方法
CN110765032A (zh) 基于系统管理总线接口对i2c存储器进行读写的方法
JP2000020391A (ja) 記憶装置、データ処理装置並びにデータ処理方法
CN113343319A (zh) 一种flash的类型识别方法及类型识别系统
CN113010190A (zh) 一种mac地址烧录方法、装置、设备和存储介质
CN112992231A (zh) 数据储存装置以及参数改写方法
CN110192178B (zh) 程序打补丁的方法、装置、微控制单元和终端设备
CN113345510B (zh) 一种flash的容量识别方法及容量识别系统
CN107766174A (zh) 电子控制装置及其信息存储方法
CN116431186A (zh) 一种车载ecu的升级方法、装置及介质
CN103345413A (zh) 一种代码更新方法、装置及电子设备
CN111596199B (zh) 一种测试芯片、集成电路测试方法及系统和检测设备
JP6594712B2 (ja) 半導体メモリ及び半導体メモリのベリファイ方法
JP4127307B2 (ja) データ記憶装置、データ処理システム、データ処理方法及びデータ処理装置
CN112673364A (zh) 数据传输方法、数据传输装置、电子设备和存储介质
WO2018040804A1 (zh) 一种存储器块处理方法、装置和计算机存储介质
CN117472287B (zh) 一种冗余磁盘阵列巡检方法、装置、设备、介质
TWI705330B (zh) 資料儲存裝置以及參數改寫方法
CN112599172B (zh) 电子控制单元的数据写入方法、装置及存储介质
CN116594804A (zh) 一种edac码读写优化方法、系统、设备及存储介质
CN116206659A (zh) 一种otp存储器
JPS6053330B2 (ja) プログラム書き込み方式

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
CB02 Change of applicant information

Address after: 519000 2706, No. 3000, Huandao East Road, Hengqin new area, Zhuhai, Guangdong

Applicant after: Zhuhai Yiwei Semiconductor Co.,Ltd.

Address before: 519000 room 105-514, No. 6, Baohua Road, Hengqin new area, Zhuhai City, Guangdong Province (centralized office area)

Applicant before: AMICRO SEMICONDUCTOR Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant