CN115495275B - 一种存储***及其控制方法 - Google Patents
一种存储***及其控制方法 Download PDFInfo
- Publication number
- CN115495275B CN115495275B CN202211429956.4A CN202211429956A CN115495275B CN 115495275 B CN115495275 B CN 115495275B CN 202211429956 A CN202211429956 A CN 202211429956A CN 115495275 B CN115495275 B CN 115495275B
- Authority
- CN
- China
- Prior art keywords
- firmware
- storage system
- card
- instruction
- functional
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种存储***及其控制方法,包括以下步骤:在存储***中设置卡死循环指令;当存储***运行固件时,检测存储***运行固件的关键参数,若关键参数出错,存储***执行卡死循环指令;获取存储***卡死时的固件卡死错误数据,以及导致关键参数出错的固件卡死原因数据,其中,固件卡死错误数据包括出错的关键参数的数值和包含错误数据的用户信息,固件卡死原因数据包括出错的关键参数的类型;识别卡死循环指令是否被触发,当卡死循环指令被触发,在存储***的闪存芯片中设置固件卡死标志;以及若固件卡死标志被置起,当主机向存储***发送恢复指令,清除固件卡死标志,以及包含错误数据的用户信息的地址映射表,并重新运行固件。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种存储***及其控制方法。
背景技术
固件(Firmware)是指电子设备内部保存的设备驱动程序,通过固件,电子设备的操作***才能按照标准的设备驱动程序实现机器的特定运行动作。固件是担任着一个操作***最基础最底层工作的软件。而在硬件设备中,固件也直接影响了硬件设备的功能及性能。
在存储设备中,由于固件逻辑复杂,当固件出现问题时,如果运行固件时存在一些错误的逻辑或者变数错误,无法及时获知固件问题,就会导致数据的错乱或者数据丢失。并且对于嵌入式存储设备,很难将存储器从电子设备中单独取出,固件问题可能会导致主机乃至整个电子设备报废,损失重大。
发明内容
本发明的目的在于提供一种存储***及其控制方法,能够及时发现并解决存储设备的固件问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种存储***的控制方法,包括以下步骤:
在所述存储***中设置卡死循环指令;
当所述存储***运行固件时,检测所述存储***运行固件的关键参数,若所述关键参数出错,所述存储***执行所述卡死循环指令;
获取所述存储***卡死时的固件卡死错误数据,以及导致所述关键参数出错的固件卡死原因数据,其中,所述固件卡死错误数据包括出错的所述关键参数的数值和包含错误数据的用户信息,所述固件卡死原因数据包括出错的所述关键参数的类型;
识别所述卡死循环指令是否被触发,当所述卡死循环指令被触发,在所述存储***的闪存芯片中设置固件卡死标志;以及
若所述固件卡死标志被置起,当主机向所述存储***发送恢复指令,清除所述固件卡死标志,以及包含错误数据的所述用户信息的地址映射表,并重新运行固件。
在本发明一实施例中,检测所述关键参数包括以下步骤:
在所述存储***的功能固件中***多个关键参数比较指令;
按照指令顺序运行所述功能固件和所述关键参数比较指令;以及
在执行所述关键参数比较指令时,根据预设的数值阈值范围和预设变量类型判断所述关键参数是否出错。
在本发明一实施例中,执行所述卡死循环指令包括以下步骤:
当所述关键参数的数值超出所述数值阈值范围和/或所述关键参数的变量类型不符合所述预设变量类型,执行所述卡死循环指令;以及
在执行所述卡死循环指令前,所述存储***停止初始化所述功能固件的运行环境。
在本发明一实施例中,在执行所述卡死循环指令时,记录所述固件卡死错误数据和所述固件卡死原因数据,以及功能固件运行信息,其中,所述功能固件运行信息包括功能固件运行的指令行数和指令内容。
在本发明一实施例中,所述卡死循环指令包括重复写入卡死循环语句。
在本发明一实施例中,识别所述卡死循环指令是否被触发包括以下步骤:
在所述存储***中设置卡死识别指令;
在所述存储***运行所述功能固件时,所述存储***随机读取所述卡死识别指令并执行所述卡死识别指令;
在执行所述卡死识别指令时,所述存储***判断所述功能固件的运行结果是否为所述卡死循环语句。
在本发明一实施例中,设置所述固件卡死标志包括以下步骤:
根据所述功能固件的运行数据形成固件关联数据;
将所述固件关联数据的固定比特位置设置为固件卡死标志位;
将所述固件卡死标志位设置为高电位数据,以置起所述固件卡死标志;以及
将所述固件关联数据写入所述闪存芯片中。
在本发明一实施例中,置起所述固件卡死标志后,在判断所述恢复指令是否发出前,将所述功能固件的运行进程返回到初始端。
在本发明一实施例中,将所述功能固件的运行进程返回到初始端的步骤包括:
判断所述存储***是否为可断电设备;
当所述存储***为可断电设备,对所述存储***断电并重新上电,所述功能固件的运行进程回到初始端;以及
当所述存储***非可断电设备,停止所述存储***的指令运行进程,并对所述存储***发出回初始端指令,将所述功能固件的运行进程返回到初始端。
本发明提供了一种存储***,所述存储***包括计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如前文所述存储***的控制方法的步骤。
如上所述,本发明提供了一种存储***及其控制方法,能够在出现固件卡死问题的时候,对存储器进行修复,从而降低因固件卡死导致的设备报废概率。并且,根据本发明提供的存储***的控制方法,能够及时发现固件是否存在卡死问题,以降低设备的空跑问题,减少主机发送的无效命令,提升设备的工作效率以及固件运行的准确性,从而提升用户的使用体验。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例中存储***的结构示意图。
图2为本发明一实施例中关键信息存储单元的结构示意图。
图3为本发明一实施例中存储***的控制方法的流程图。
图4为本发明一实施例中步骤S20的流程图。
图5为本发明一实施例中步骤S30的流程图。
图6为本发明一实施例中步骤S10至步骤S30中存储***的运行结果图。
图7为本发明一实施例中步骤S40的流程图。
图8为本发明一实施例中步骤S10至步骤S40中存储***的运行结果图。
图9为一种电子设备的结构原理框图。
图10为一种计算机可读存储介质的结构原理框图。
图中:10、主机;20、存储***;30、主控制器;40、闪存芯片;50、数据存储模块;60、关键信息存储单元;601、关键数据存储块;602、映射表存储块;603、固件关联信息存储块;70、固件存储单元;80、数据存储单元;90、处理器;100、存储器;110、计算机指令;1101、计算机可读存储介质。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
固件(Firmware)就是写入可擦写可编程只读存储器(Erasable ProgrammableRead-Only Memory,EPROM)或电可擦可编程只读存储器(Electrically ErasableProgrammableread only memor,EEPROM)或快闪存储器(FLASH Memory)中的程序。可由用户通过特定的刷新程序对固件进行升级。其中,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,例如计算机主板上的基本输入/输出***BIOS(Basic Input/output System)。固件可以说是数码设备的神经中枢,也可以称作COMBO光驱的操作***,只有在固件的控制下COMBO光驱才能正常工作。同时,固件还带有许多附加功能,如纠错技术、安全刻录技术、播放控制技术等。在存储技术中,应用到的固件逻辑复杂程度高,很可能出错,尤其是应用在嵌入式存储器(embedded Multi Media Card,eMMC)中,在终端用户的使用过程中或是下游厂商的测试过程中,出现固件问题后,很难对固件进行修复,往往会导致存储器甚至整个电子设备都报废。
请参阅图1所示,本发明提出了一种存储***20,存储***20包括主控制器30和闪存芯片40,主控制器30和闪存芯片40电性连接,主控制器30电性连接于主机10。其中,主机10可以是计算机或是数码设备,存储***20可以是嵌入式存储器。闪存芯片40包括数据存储模块50,其中,闪存芯片40可以是NAND芯片,数据存储模块50可以是闪存芯片40中的物理区块(block)构成的存储阵列。数据存储模块50可以用于存储用户数据,且数据存储模块50具有非易失性。
请参阅图1和图2所示,在本发明一实施例中,数据存储模块50包括关键信息存储单元60、固件存储单元70和数据存储单元80。在本实施例中,关键信息存储单元60可以是数据存储模块50中部分物理区块,用于存储存储***20的关键信息,例如映射表信息、块表调用信息以及固件的相关信息等等。固件存储单元70用于存储固件,在存储设备出厂之前,可以将固件烧录在闪存芯片40中,形成固件存储单元70。数据存储单元80可以用于存储用户数据。在本实施例中,关键信息存储单元60包括关键数据存储块601和映射表存储块602。其中,关键数据存储块601可以用于保存在存储方案中设定的关键信息,例如用户ID信息和日志信息等等,本发明对此不作限定。映射表存储块602可以用于存储地址映射表,根据地址映射表,可以从数据存储单元80中调取对应的数据。其中,在数据存储单元80进行数据的读写时,在数据的逻辑地址和实际存储的物理地址之间建立映射关系,形成地址映射表,并将地址映射表存储在映射表存储块602中。当需要调取数据时,可以根据映射表存储块602中的对应地址映射表,根据数据的逻辑地址获取数据的物理地址,再根据数据的物理地址读出数据。在本实施例中,关键数据存储块601和映射表存储块602可以是数据存储模块50中的一个或多个物理区块,也可以是数据存储模块50中的一个或多个物理页面(Page),本发明不限定关键信息存储单元60的大小。
请参阅图1和图2所示,在本发明一实施例中,关键信息存储单元60包括固件关联信息存储块603。固件关联信息存储块603可以是数据存储模块50中的一个或多个物理区块,也可以是数据存储模块50中的一个或多个物理页面(Page)。其中,固件关联信息存储块603可以用于存储固件卡死标记,以及存储固件卡死的原因。在存储***20运行时,主控制器30根据主机10的控制指令,从固件存储单元70中调取对应的固件,并运行固件,执行固件的对应操作。当出现固件问题,例如固件部分语句出现逻辑错误或存储***20的硬件特性问题导致的变数错误,主控制器30运行固件就无法执行对应的操作,并且还会出现数据错误甚至数据丢失,并且固件错误的情况还无法及时获知,因此因为固件问题导致的损失难以估量。因此,可以设置固件卡死标记以区别固件是否出现卡死问题,也可以存储固件卡死原因以便于追溯固件问题,提升固件的运行合理性。
请参阅图1至图3所示,本发明还提出了一种存储***的控制方法,可以在存储***20出现固件问题时,及时发现固件问题并对存储***20进行修复,且可以应用于终端用户存储设备的修复和下游厂商的设备测试过程中。其中,本发明所述控制方法包括步骤S10。
步骤S10、提供存储***,在存储***的固件存储单元中设置卡死循环指令。
请参阅图1和图3所示,在本发明一实施例中,在步骤S10中,提供的存储***可以是本发明所示的存储***20。其中,在固件存储单元70中设置卡死循环指令。其中,固件存储单元70中存储有卡死循环指令以及存储***20的功能固件。功能固件为存储***20中烧录的原始固件,通过对功能固件的运行,存储***20可以配合主机10实现多种功能,从而实现数码设备的各项功能。功能固件在不同的数码设备和应用需求中都有变化,本发明对功能固件的具体语句不做限定。在本实施例中,卡死循环指令可以是特定程序语句,且在存储***20中,卡死循环指令为第一优先指令。其中,可以将卡死循环指令作为一种固件烧录在固件存储单元70中。当卡死循环指令被触发,功能固件将被搁置,存储***20将持续执行卡死循环指令。并且,在本实施例中,在执行卡死循环指令时,不影响存储***20在功能固件被运行后所获得的固件数据。而在存储***20中,由于功能固件较为复杂,出现固件问题的地方有多种可能性。因此,本发明所示控制方法还包括步骤S20。
步骤S20、在存储***运行固件时,检测存储***运行固件的关键参数,若关键参数出错,使存储***执行卡死循环指令,并获取存储***卡死时的固件卡死错误数据,以及导致关键参数出错的固件卡死原因数据,其中,固件卡死错误数据包括出错的关键参数的数值和包含错误数据的用户信息,固件卡死原因数据包括出错的关键参数的类型。
请参阅图1、图3和图4所示,在本发明一实施例中,在步骤S20中,在存储***20运行功能固件时,多次检测存储***20的关键变量,以及时确认功能固件的运行是否出错。若是功能固件运行出错,则会伴随着错误数据的生成。若未能及时发现功能固件已经出错,则错误数据会很快覆盖未出错部分的数据,导致数据错乱和丢失,造成的影响难以估计。因此在步骤S20中,通过检测关键变量是否出错,来及时运行卡死循环指令,以截断当前的固件运行进程。具体的,步骤S20包括步骤S201至步骤S207。
步骤S201、在存储单元的功能固件中***多个关键参数比较指令。
步骤S202、依次运行功能固件中的指令。
步骤S203、在执行关键参数比较指令时,判断运行功能固件获得的关键参数是否出错。
步骤S204、当运行功能固件获得的关键参数出错,使存储***执行卡死循环指令。
步骤S205、根据出错的关键参数,获取并存储固件卡死原因数据。
步骤S206、根据存储***对功能固件的运行数据,获取固件卡死错误数据和固件运行信息。
步骤S207、当运行功能固件获得的关键参数未出错,使存储***执行初始化指令。
请参阅图1、图3和图4所示,在本发明一实施例中,功能固件的运行进程中,关键参数包括程序指令执行后的变量类型以及与变量相关的参数数值。关键参数比较指令可以是多个程序语句生成的程序,且关键参数比较指令能够将运行功能固件获得的关键参数与预设的阈值范围或是变量类型进行比较,若是运行功能固件获得的关键参数不符合预设的阈值范围或是不是预设的变量类型,则认为功能固件出错。在步骤S201中,在功能固件中***多个关键参数比较指令。在存储***20中,固件存储单元70包括多种功能固件,且每个功能固件包括多个程序语句。在步骤S201中,在每个功能固件中都***多个关键参数比较指令。在本实施例中,在***关键参数比较指令时,将关键参数比较指令设置在功能固件中获得关键参数后的程序语句中。具体地,在功能固件中,每获得一次关键参数,可以执行一次关键参数比较指令,以及时发现关键参数是否出错。例如,功能固件包括例如900条程序语句,而900条程序语句中,获得关键参数的程序语句设置在例如第10条、第320条、第580条和第880条等等。则可以将关键参数比较指令设置在功能固件第10条程序语句和第11条程序语句之间、功能固件第320条程序语句和第321条程序语句之间、功能固件第580条程序语句和第581条程序语句之间,以及功能固件第880条程序语句和第881条程序语句之间,以此类推。在步骤S202中,按照功能固件中程序语句的顺序依次运行功能固件和***功能固件中的关键参数比较指令。其中,运行功能固件的过程包括主控制器30从固件存储单元70中读出功能固件的程序语句,并在主控制器30中执行读出的程序语句对应的操作。
请参阅图3和图4所示,在本发明一实施例中,在步骤S203中,预设关键参数的阈值范围。其中,阈值范围可以是在出厂测试期间对固件进行多次运行获得的关键参数测试结果。具体的,在功能固件的测试过程中时,调整应用环境功能需求等以模拟用户使用功能固件的情况,在模拟测试条件下测试功能固件的运行情况,获得多项测试数据。根据获得的多项测试数据,预设功能固件运行数据的阈值范围和变量类型。因此在步骤S203中,当在执行关键参数比较命令时,若是获得的关键参数的数值在阈值范围外和/或关键参数的变量类型错误,则认为关键参数出错。例如,功能固件用于调节手机的亮度,用户需求为调节手机的亮度为最亮,则运行功能固件获得的关键参数可以是手机的亮度数值,若亮度数值不符合指令需求,则可认为关键参数不符合阈值范围,关键参数出错,可判定手机出现固件问题。又例如,用户想要通过语音调出手机的音乐功能,而功能固件运行时获得的变量并非对应音乐功能,则可认为时变量类型出错,则可判定手机出现固件问题。其中,阈值范围和变量类型可以根据功能固件的设计和测试确定,本发明对此不作具体限定。
请参阅图1、图3和图4所示,在本发明一实施例中,当关键参数出错,则执行步骤S204,执行卡死循环指令。其中,在执行卡死循环指令时,存储***20停止执行功能固件中的指令。若是关键参数未出错,则可执行步骤S207,执行初始化指令。其中,初始化指令用于初始化功能固件的运行环境。例如,在完成功能固件的部分指令后,当前的关键参数正确。要继续执行功能固件,以达到用户调取的功能,主控制器30不断从固件存储单元70中读出对应的指令,并运行读出的指令,从达成运行功能固件的初始化环境。在本实施例中,功能固件的指令内容可以是程序语句。本发明不限定程序语句的具体形式和具体内容。其中,初始化指令也可以是为运行固件提供运行环境的其他指令,例如,获取固件编码、初始化主控制器30的运行环境参数等等。
请参阅图1、图3和图4所示,在本发明一实施例中,在步骤S204中,当卡死循环指令被执行后,主控制器30停止调取固件存储单元70中功能固件的指令,并循环重复地执行卡死循环指令。在本实施例中,卡死循环指令例如为重复写某一预设的程序语句。在步骤S205中,若是在步骤S203中发现关键参数出错,则在判断关键参数出错的同时,运行功能固件产生的错误数据被获取且存储。在步骤S202至步骤S204中,存储***20产生固件卡死错误数据、功能固件运行信息和固件卡死原因数据。在本实施例中,固件卡死错误数据包括步骤S203中对比出错的关键参数的数值和包含错误数据的用户信息。在本发明其他实施例中,其他与关键参数相关指令产生的数据也可以被设置为固件卡死错误数据。例如,亮度出错,亮度阈值范围为例如1cd/m²~5cd/m²,而在步骤S203中运行功能固件获得的亮度数值为例如0.5cd/m²,位于阈值范围外,则此时获得的亮度数值0.5cd/m²为固件卡死错误数据。而在获得亮度数值0.5cd/m²时或获得亮度数值0.5cd/m²前运行功能固件还获得了音量30、色彩模式2等数据,这些数据也为固件卡死错误数据。获取固件卡死错误数据并将固件卡死错误数据存储在闪存芯片40中。其中,功能固件运行信息包括功能固件的指令运行到第几条、当前出错的功能固件是第几条指令,以及当前出错的功能固件的指令内容。
请参阅图1至图4所示,在本发明一实施例中,可以在存储***20中预设并存储比较项目。例如色彩模式,可以包括像素值、灰度值和亮度值等多项关键参数。因此在步骤S203中当关键参数出错时,根据出错的关键参数的内容,可以确定是哪一比较项目出错,形成固件卡死原因数据。在步骤S205中,将固件卡死原因数据存储在固件关联信息存储块603中。在本实施例中,通过运行卡死循环指令,也可以有效保存错误现场,以利于测试人员和固件开发人员通过分析获得固件出错原因,并改进功能固件。具体的,关键参数出错的原因包括关键参数的数值超出阈值范围、变量非所需变量。若是有人工介入,还可以确认功能固件的具体出错位置,从而对功能固件进行改进。在测试开发过程中,若是确定功能固件的出错位置,则可以通过烧录机等设备对功能固件进行修改。其中,为区别固件是否出现卡死,本发明所述存储***的控制方法包括步骤S30。
步骤S30、识别卡死循环指令是否被触发,当卡死循环指令被触发,在存储***的关键信息存储单元中设置固件卡死标志。
请参阅图1、图3至图5所示,在本发明一实施例中,在步骤S204中,当卡死循环指令被执行,通过获取卡死循环指令的循环语句,可以获知当前卡死循环指令是否被执行。也可以根据主控制器30是否从固件存储单元70中读出卡死循环指令,判断当前卡死循环指令是否被执行。其中,在步骤S30中,可以在固件存储单元70中设置卡死识别指令,以判断卡死循环指令是否被执行。具体的,步骤S30包括步骤S301至步骤S304。
步骤S301、在固件存储单元中设置多个卡死识别指令,并将卡死识别指令***功能固件中。
步骤S302、判断卡死循环指令是否被执行。
步骤S303、当卡死循环指令被执行,在存储***的关键信息存储单元中设置固件卡死标志。
步骤S304、当卡死循环指令未被执行,继续运行功能固件。
请参阅图1至图3和图5所示,在本发明一实施例中,在步骤S301中,卡死识别指令可以是一种程序语句,且用于识别卡死循环指令是否被执行。具体的,卡死循环指令例如为写入预设的卡死循环语句,则卡死识别指令可识别功能固件运行的结果是否为卡死循环语句。若是出现卡死循环语句,则在步骤S302中,认为卡死循环语句已经被执行。其中,在本实施例中,设置的卡死循环语句区别于功能固件的程序语句,以便于存储***20清楚且快速地识别卡死循环语句。在步骤S303中,设置固件卡死标志,并且固件卡死标志可以被存储在固件关联信息存储块603中。其中,固件关联信息存储块603包括多条固件关联数据和固件卡死原因数据。在本实施例中,将固件关联数据中的某一比特位设置为固件卡死标志位。例如,将固件关联数据的例如第3位设置为固件卡死标志位。固件卡死标志位的默认值为低电位,例如0,若是固件卡死标志位为例如0,则存储***20的功能固件正常运行。在步骤S303中,设置固件卡死标志可以时将固件卡死标志位设置为高电位,例如1。在本实施例中,固件卡死标志位若为例如1,则存储***20出现固件卡死。其中,固件关联信息存储块603中包括例如1000条固件关联数据。本实施例中,固件关联数据用于存储固件运行获得数据,随着功能固件的运行,固件关联数据不断更新。其中,固件关联信息存储块603中包括例如1000条固件关联数据。每写入新的固件关联数据,都会覆盖先前最早写入的固件关联数据。例如,写入第1001条数据时,第1001条数据会覆盖第1条固件关联数据。在步骤S304中,若是步骤S302中卡死循环指令未被执行,可以继续按照语句顺序运行功能固件中的指令。
请参阅图1至图3,以及图5和图6所示,在本发明一实施例中,在步骤S301中,将卡死识别指令***功能固件中。在本实施例中,可以在功能固件中随机***多个卡死识别指令,以降低功能固件编写烧录的复杂程度。在本发明其他实施例中,也可以在功能固件中获得关键参数的指令后,***卡死识别指令,以确保卡死识别指令能及时发现卡死循环指令的执行情况,从而在功能固件运行出现问题时,及时停止功能固件的运行,以减少错误数据的产生,减少数据丢失,并快速且及时地将固件卡死标志置起。需要注意的是,卡死识别指令并不是直接***功能固件中,而是在功能固件被运行的过程中,主控制器30随机读取卡死识别指令,并在读取卡死识别指令后优先执行卡死识别指令。根据本发明的步骤S10至步骤S30,当固件出现问题时,不会继续运行功能固件,如图6所示,标号为1的方框中可以看到功能固件运行的初始化过程会不断地失败(Fail),并且标号为2的框内也可看出主机10也无法对存储***20进行写操作,从而避免错误数据覆盖原先数据导致数据错乱甚至数据丢失。为解决固件错误问题,本发明所述存储***的控制方法还包括步骤S40。
步骤S40、若固件卡死标志被置起,当主机向存储***发送恢复指令,清除固件卡死错误数据和固件卡死标志,并重新运行固件。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S30中,于存储***20中设置固件卡死标志,且固件卡死标志被存储在闪存芯片40中,以避免断电数据丢失。在步骤S40中,在固件卡死标志被置起后,处理固件卡死问题。具体的,步骤S40包括步骤S401至步骤S412。
步骤S401、判断固件卡死标志是否置起,若是固件卡死标志置起,则执行步骤S402,若是固件卡死标志未置起,则执行步骤S407。
步骤S402、判断存储***是否为可断电设备,若是存储***为可断电设备,则执行步骤S403,若是存储***不是可断电设备,则执行步骤S405。
步骤S403、对存储***进行断电,使功能固件的运行进程回到初始端。
步骤S404、对存储***重新上电。
步骤S405、停止存储***的指令运行进程。
步骤S406、使功能固件的运行进程回到初始端。
步骤S407、初始化功能固件的运行环境。
步骤S408、判断固件卡死标志是否置起,若是固件卡死标志置起,则执行步骤S409,若是固件卡死标志未置起,则执行步骤S407。
步骤S409、判断主机是否向存储***发出恢复指令,若是主机向存储***发出恢复指令,则执行步骤S410,若是主机未向存储***发出恢复指令,则执行步骤S412。
步骤S410、清除包含错误数据的用户信息的地址映射表和固件卡死标志。
步骤S411、从功能固件的初始端重新运行功能固件。
步骤S412、保留固件错误现场。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S401中,判断固件卡死标志是否置起。其中,确认固件卡死标志是否置起的步骤包括在固件关联信息存储块603找到最新写入的固件关联数据。在本实施例提供的存储方案中,固件关联信息存储块603包括固件卡死原因数据和固件卡死标志。在步骤S401中,根据数据的写入时间或是数据块的调用顺序找出最新的固件关联数据,并从最新的固件关联数据中找出固件卡死标志位。若是固件卡死标志位为例如1,则判断为固件卡死标志置起,功能固件的运行出现问题,执行步骤S402。若是固件卡死标志位为例如0,则判断为固件卡死标志未置起,功能固件正常运行,执行步骤S407,初始化功能固件的运行环境,以运行功能固件。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S402中,判断存储***20是否为可断电设备。其中,可以根据用户终端的应用环境以及用户需求确认存储***20是否为可断电设备。例如,用户终端若为手机、平板等可以接受即时断电关机的设备,则在步骤S402中,判断存储***20为可断电设备。例如,用户终端若为实验设备等不可即时断电关机的设备,断电可能会影响到实验数据的获取,则在步骤S402中,判断存储***20为不可断电设备。在本实施例中,在步骤S402中,可以在出厂前或是设备使用前将存储***20设定为可断电设备或不可断电设备。在本发明的其他实施例中,在步骤S402中,也可以在用户终端的使用过程中,向用户询问是否接受立刻断电。若是用户接受立刻断电,则执行步骤S403和步骤S404。若是用户不接受立刻断电,则执行步骤S405和步骤S406。若是本发明所述存储***的控制方法应用于测试环境中,则可默认存储***20为可断电设备。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S402中,若是存储***20为可断电设备,执行步骤S403。在步骤S403中,对存储***20进行断电,使功能固件的运行进程回到初始端。在本实施例中,主控制器30从闪存芯片40的固件存储单元70中调取功能固件的程序指令,再运行功能固件。其中,主控制器30运行功能固件的过程中,若是发生断电,闪存芯片40中的存储数据能够保存,而主控制器30中的运行数据则会全部丢失。因此,在步骤S403中,对存储***20断电,可以直接使功能固件的运行进程回到初始端。在复杂的功能固件中,断电可以快速中断功能固件的运行进程并使固件的运行进程回到初始端。例如,功能固件包括例如1000条程序语句,而在卡死循环指令执行时,主控制器30执行到功能固件的例如第750条程序语句,则可通过断电使功能固件的运行进程回到第1条程序语句。再于步骤S404中,对存储***20重新上电。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S402中,若是存储***20为不可断电设备,则执行步骤S405和步骤S406。在步骤S405中,停止存储***20的指令运行进程。具体的,停止存储***20的卡死循环指令、功能固件的指令和卡死识别指令等多个指令。在步骤S405中,主控制器30停止执行卡死循环指令,也停止从固件存储单元70中读取功能固件和卡死识别指令。在步骤S406中,使功能固件的运行进程回到初始端。其中,可以在固件存储单元70中预设回初始端指令。当步骤S405中所有指令被停止后,主控制器30可以从固件存储单元70中获取回初始端指令,从而使功能固件的运行回到初始端。具体的,例如回到功能固件的第一条程序语句。
请参阅图1至图5和图7所示,在本发明一实施例中,在步骤S403和步骤S404的处理分支和步骤S405和步骤S406的处理分支后,功能固件的运行进程回到初始端,执行步骤S408,判断固件卡死标志是否置起。在步骤S408中,若是固件卡死标志未置起,则执行步骤S407,初始化功能固件的运行环境。在步骤S408中,若是固件卡死标志置起,则执行步骤S409,判断主机10是否对存储***20发出恢复指令。在步骤S409中,若是主机10未对存储***20发出恢复指令,则执行步骤S412,保留固件错误现场。在本实施例中,在步骤S412中,保留固件错误现场后,可以通过人工介入并对固件错误原因进行分析。在存储***20测试过程中,若是固件出错,则可以通过分析固件错误原因,对功能固件进行改进。其中,在测试过程中,主机10可以是烧录机。在分析完错误原因后,主机10也可以再向存储***20发出恢复指令,从而执行步骤S410和步骤S411。
请参阅图1至图5,以及图7和图8所示,在本发明一实施例中,若是主机10向主控制器30发出恢复指令,则执行步骤S410,清除包含错误数据的用户信息的地址映射表和固件卡死标志。其中,在步骤S410中,清除固件卡死错误数据可以仅清除包含错误信息的用户数据,且具体可以是清除映射表存储块602中所述用户数据的地址映射表,以便于数据的恢复。清除固件卡死标志可以是将固件关联数据的固件卡死标志设置为低电位,例如0。在步骤S410中,保留固件卡死原因数据,以利于固件开发者更好更快的分析问题所在,并更快更好的完善更新存储***20的功能固件。其中,若是功能固件在用户终端出错,在步骤S409中,主机10可以直接向存储***20发送恢复指令,以快速恢复用户的使用环境。在本实施例中,若是在存储***20的测试环境中,恢复指令例如为CMD56+Argu 0xFF000002,本发明不限定恢复指令的具体内容。在步骤S411中,从功能固件的初始端重新运行功能固件。在功能固件的重新运行进程中,出错的关键参数的数值可以随着功能固件的重新运行被初始化或覆盖,从而更新为正确的关键参数。如图8所示,通过本发明提供的控制方法,可以看到主机10可以对存储***20进行初始化,如框3中所示,并且主机10可以对存储***20写入数据,如框4所示。
请参阅图9所示,本发明还提出一种电子设备,所述电子设备包括处理器90和存储器100,存储器100存储有程序指令,处理器90运行程序指令实现上述的存储***的控制方法。处理器90可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件;存储器100可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(Non-Volatile Memory),例如至少一个磁盘存储器。存储器100也可以为随机存取存储器(Random Access Memory,RAM)类型的内部存储器,处理器90、存储器100可以集成为一个或多个独立的电路或硬件,如:专用集成电路(Application SpecificIntegrated Circuit,ASIC)。需要说明的是,上述的存储器100中的计算机程序可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质1101中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
请参阅图10所示,本发明还提出一种计算机可读存储介质1101,所述计算机可读存储介质1101存储有计算机指令110,所述计算机指令110用于使所述计算机执行上述的存储***的控制方法。计算机可读存储介质1101可以是,电子介质、磁介质、光介质、电磁介质、红外介质或半导体***或传播介质。计算机可读存储介质1101还可以包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘可以包括光盘-只读存储器(CD-ROM)、光盘-读/写(CD-RW)和DVD。
以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种存储***的控制方法,其特征在于,包括以下步骤:
在所述存储***中设置卡死循环指令,所述卡死循环指令包括重复写预设的程序语句;
当所述存储***运行固件时,检测所述存储***运行固件的关键参数,若所述关键参数出错,所述存储***执行所述卡死循环指令;
获取所述存储***卡死时的固件卡死错误数据,以及导致所述关键参数出错的固件卡死原因数据,其中,所述固件卡死错误数据包括出错的所述关键参数的数值和包含错误数据的用户信息,所述固件卡死原因数据包括出错的所述关键参数的类型;
识别所述卡死循环指令是否被触发,当所述卡死循环指令被触发,在所述存储***的闪存芯片中设置固件卡死标志;以及
若所述固件卡死标志被置起,当主机向所述存储***发送恢复指令,清除所述固件卡死标志,以及包含错误数据的所述用户信息的地址映射表,并重新运行固件。
2.根据权利要求1所述的一种存储***的控制方法,其特征在于,检测所述关键参数包括以下步骤:
在所述存储***的功能固件中***多个关键参数比较指令;
按照指令顺序运行所述功能固件和所述关键参数比较指令;以及
在执行所述关键参数比较指令时,根据预设的数值阈值范围和预设变量类型判断所述关键参数是否出错。
3.根据权利要求2所述的一种存储***的控制方法,其特征在于,执行所述卡死循环指令包括以下步骤:
当所述关键参数的数值超出所述数值阈值范围和/或所述关键参数的变量类型不符合所述预设变量类型,执行所述卡死循环指令;以及
在执行所述卡死循环指令前,所述存储***停止初始化所述功能固件的运行环境。
4.根据权利要求3所述的一种存储***的控制方法,其特征在于,在执行所述卡死循环指令时,记录所述固件卡死错误数据和所述固件卡死原因数据,以及功能固件运行信息,其中,所述功能固件运行信息包括功能固件运行的指令行数和指令内容。
5.根据权利要求4所述的一种存储***的控制方法,其特征在于,所述卡死循环指令包括重复写入卡死循环语句。
6.根据权利要求5所述的一种存储***的控制方法,其特征在于,识别所述卡死循环指令是否被触发包括以下步骤:
在所述存储***中设置卡死识别指令;
在所述存储***运行所述功能固件时,所述存储***随机读取所述卡死识别指令并执行所述卡死识别指令;
在执行所述卡死识别指令时,所述存储***判断所述功能固件的运行结果是否为所述卡死循环语句。
7.根据权利要求2所述的一种存储***的控制方法,其特征在于,设置所述固件卡死标志包括以下步骤:
根据所述功能固件的运行数据形成固件关联数据;
将所述固件关联数据的固定比特位置设置为固件卡死标志位;
将所述固件卡死标志位设置为高电位数据,以置起所述固件卡死标志;以及
将所述固件关联数据写入所述闪存芯片中。
8.根据权利要求2所述的一种存储***的控制方法,其特征在于,置起所述固件卡死标志后,在判断所述恢复指令是否发出前,将所述功能固件的运行进程返回到初始端。
9.根据权利要求8所述的一种存储***的控制方法,其特征在于,将所述功能固件的运行进程返回到初始端的步骤包括:
判断所述存储***是否为可断电设备;
当所述存储***为可断电设备,对所述存储***断电并重新上电,所述功能固件的运行进程回到初始端;以及
当所述存储***非可断电设备,停止所述存储***的指令运行进程,并对所述存储***发出回初始端指令,将所述功能固件的运行进程返回到初始端。
10.一种存储***,其特征在于,所述存储***包括计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1至9任一项所述存储***的控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211429956.4A CN115495275B (zh) | 2022-11-16 | 2022-11-16 | 一种存储***及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211429956.4A CN115495275B (zh) | 2022-11-16 | 2022-11-16 | 一种存储***及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115495275A CN115495275A (zh) | 2022-12-20 |
CN115495275B true CN115495275B (zh) | 2023-03-24 |
Family
ID=85115754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211429956.4A Active CN115495275B (zh) | 2022-11-16 | 2022-11-16 | 一种存储***及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495275B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806893A (zh) * | 2024-02-29 | 2024-04-02 | 合肥康芯威存储技术有限公司 | 一种存储器件异常数据的处理方法及存储器件 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949426A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种固件程序错误的检测方法、装置及存储设备 |
CN115113905A (zh) * | 2022-08-29 | 2022-09-27 | 摩尔线程智能科技(北京)有限责任公司 | 固件升级方法和固件升级装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6968477B2 (en) * | 2002-03-07 | 2005-11-22 | International Business Machines Corporation | System and method for system surveillance using firmware progress code |
KR20200076886A (ko) * | 2018-12-20 | 2020-06-30 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20210024763A (ko) * | 2019-08-26 | 2021-03-08 | 에스케이하이닉스 주식회사 | 메모리 시스템의 동작 중 펌웨어 오류를 처리하는 방법 및 장치 |
CN114138600A (zh) * | 2021-11-25 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种固件关键信息的存储方法、装置、设备及存储介质 |
CN115237753A (zh) * | 2022-06-24 | 2022-10-25 | 广州致存科技有限责任公司 | 固件排错方法、***、终端设备及存储介质 |
CN115185734A (zh) * | 2022-07-25 | 2022-10-14 | 苏州忆联信息***有限公司 | 基于中断的固件异常诊断方法、装置、计算机设备及存储介质 |
-
2022
- 2022-11-16 CN CN202211429956.4A patent/CN115495275B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949426A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种固件程序错误的检测方法、装置及存储设备 |
CN115113905A (zh) * | 2022-08-29 | 2022-09-27 | 摩尔线程智能科技(北京)有限责任公司 | 固件升级方法和固件升级装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115495275A (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101019209B1 (ko) | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 | |
US9262283B2 (en) | Method for reading kernel log upon kernel panic in operating system | |
TWI470420B (zh) | 除錯方法及電腦系統 | |
US7613952B2 (en) | Method for facilitating BIOS testing | |
JP2008009721A (ja) | 評価システム及びその評価方法 | |
EP2615552A1 (en) | System testing method | |
TWI759719B (zh) | 快閃記憶體控制器及用於快閃記憶體控制器的方法 | |
CN115495275B (zh) | 一种存储***及其控制方法 | |
CN115756984A (zh) | 内存测试方法、装置、设备及存储介质 | |
CN113315675B (zh) | 一种白盒交换机U-Boot自动化测试方法、***和存储介质 | |
KR890000100B1 (ko) | 제어 레지스터 처리방식 | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
US20090259835A1 (en) | System and method for tracking and recording system configurations of electronic devices | |
CN112445670A (zh) | 一种eMMC测试方法和装置 | |
TW201301023A (zh) | 主機板測試系統及方法 | |
US10922023B2 (en) | Method for accessing code SRAM and electronic device | |
CN114780421A (zh) | 基于虚拟指令集平台的异常测试方法、***及存储介质 | |
CN114496053A (zh) | 数据异常检测方法、装置、设备及计算机可读存储介质 | |
CN115373922A (zh) | 一种不同厂商smr硬盘自动测试装置、方法、终端及介质 | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
CN113721992A (zh) | 一种服务器的bios启动方法及相关装置 | |
CN107704270B (zh) | 基于二取二架构的μC/OS-II***启动引导方法及装置 | |
CN108279991B (zh) | 一种快速定位计算机设备机率性死机问题的方法 | |
CN117806893A (zh) | 一种存储器件异常数据的处理方法及存储器件 | |
TWI764581B (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 |