发明内容
本发明的目的是提供一种Flash控制器的功能测试方法、装置、设备及计算机可读存储介质,用于提高Flash控制器的功能仿真测试的成功率。
为解决上述技术问题,本发明提供一种Flash控制器的功能测试方法,包括:
预先搭建Flash控制器仿真平台;
基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码;
向待测Flash控制器发送所述Flash操作指令码,以使所述待测Flash控制器对所述Flash控制器仿真平台部署的第一Flash仿真模型执行与所述Flash操作指令码对应的Flash操作指令;
获取所述待测Flash控制器执行所述Flash操作指令的执行结果;
根据所述执行结果确定所述待测Flash控制器的功能测试结果;
其中,所述待测Flash控制器和第一Flash仿真模型所在的数据链路和所述指令读取数据链路为不同的数据链路。
可选的,所述Flash控制器仿真平台还部署有第二Flash仿真模型;
所述基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码,具体为:
向辅助Flash控制器发送读取指令,以使所述辅助Flash控制器在所述第二Flash仿真模型中获取并返回与所述读取指令对应的Flash操作指令码;
其中,所述辅助Flash控制器被系统总线分配的基地址与所述待测Flash控制器被所述系统总线分配的基地址不同。
可选的,搭建所述Flash控制器仿真平台,具体为:
基于ACE总线协议,建立与通过高级高性能总线接入片内总线网络的所述待测Flash控制器的通信连接,并部署所述第一Flash仿真模型与所述待测Flash控制器对应的串行外设接口的连接关系。
可选的,部署所述第一Flash仿真模型与所述待测Flash控制器对应的串行外设接口的连接关系,具体包括:
获取所述待测Flash控制器待连接的Flash芯片对应的Flash模型代码和所述Flash模型代码的仿真说明文件;
基于所述Flash模型代码和所述仿真说明文件部署所述第一Flash仿真模型与所述串行外设接口的连接关系。
可选的,所述Flash操作指令码的类型具体包括:Flash写入操作指令码、Flash读取操作指令码和Flash擦除操作指令码。
可选的,所述Flash操作指令具体为对目的地址的Flash写入操作指令;
相应的,所述获取所述待测Flash控制器执行所述Flash操作指令的执行结果,具体包括:
向所述待测Flash控制器发送对所述目的地址的Flash读取操作指令,得到所述待测Flash控制器反馈的数据读取结果;
若所述数据读取结果为所述Flash写入操作指令对应的数据,则确定执行结果为成功执行;否则确定所述执行结果为未成功执行。
可选的,还包括:
根据所述待测Flash控制器在执行所述Flash操作指令时的CPU总线时序、串行外设接口总线时序、芯片内执行模式,以及与所述第一Flash仿真模型对应的端口数据时序,确定所述待测Flash控制器的工作状态;
相应的,所述根据所述执行结果确定所述待测Flash控制器的功能测试结果,具体为:
若所述执行结果为成功执行且所述待测Flash控制器的工作状态为正常工作状态,则确定所述功能测试结果为合格;否则确定所述功能测试结果为不合格。
为解决上述技术问题,本发明还提供一种Flash控制器的功能测试装置,包括:
部署单元,用于预先搭建Flash控制器仿真平台;
第一获取单元,用于基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码;
发送单元,用于向待测Flash控制器发送所述Flash操作指令码,以使所述待测Flash控制器对所述Flash控制器仿真平台部署的第一Flash仿真模型执行与所述Flash操作指令码对应的Flash操作指令;
第二获取单元,用于获取所述待测Flash控制器执行所述Flash操作指令的执行结果;
判断单元,用于根据所述执行结果确定所述待测Flash控制器的功能测试结果;
其中,所述待测Flash控制器和第一Flash仿真模型所在的数据链路和所述指令读取数据链路为不同的数据链路。
为解决上述技术问题,本发明还提供一种Flash控制器的功能测试设备,包括:
存储器,用于存储指令,所述指令包括上述任意一项所述Flash控制器的功能测试方法的步骤;
处理器,用于执行所述指令。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述Flash控制器的功能测试方法的步骤。
本发明所提供的Flash控制器的功能测试方法,在预先搭建Flash控制器仿真平台的基础上,基于与待测Flash控制器和Flash控制器仿真平台的第一Flash仿真模型不同数据链路的指令读取数据链路,获取预存于指定存储位置的Flash操作指令码,继而向待测Flash控制器发送该Flash操作指令码,验证待测Flash控制器执行该Flash操作指令码对应的Flash操作指令的执行结果以及最终得到待测Flash控制器的功能测试结果,区分了指令读取数据链路和待测Flash控制器执行Flash操作指令的链路,消除了待测Flash控制器读取Flash操作指令码和执行Flash操作指令的冲突,从而有效提高了Flash控制器的功能仿真测试的成功率。
本发明还提供了一种Flash控制器的功能测试装置、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
具体实施方式
本发明的核心是提供一种Flash控制器的功能测试方法、装置、设备及计算机可读存储介质,用于提高Flash控制器的功能仿真测试的成功率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种Flash控制器的功能测试方法的流程图。
如图1所示,本发明实施例提供的Flash控制器的功能测试方法包括:
S101:预先搭建Flash控制器仿真平台。
S102:基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码。
S103:向待测Flash控制器发送Flash操作指令码,以使待测Flash控制器对Flash控制器仿真平台部署的第一Flash仿真模型执行该Flash操作指令码对应的Flash操作指令。
S104:获取待测Flash控制器执行Flash操作指令的执行结果。
S105:根据执行结果确定待测Flash控制器的功能测试结果。
其中,待测Flash控制器和第一Flash仿真模型所在的数据链路和指令读取数据链路为不同的数据链路。
在具体实施中,本发明实施例提供的Flash控制器的功能测试方法基于CPU实现,在系统级芯片(SoC)上,CPU具体为ARM处理器。在实际应用中,ARM处理器通过ACE总线协议接入片内总线网络,Flash控制器通过高级高性能总线(Advanced High Performance Bus,AHB)接入片内总线网络,基于片内总线网络预先分配的基地址与ARM处理器通信,Flash控制器通过串行外设接口与片外Flash芯片连接。因此,针对系统级芯片,步骤S101中搭建Flash控制器仿真平台,具体为:
基于ACE总线协议,建立与通过高级高性能总线接入片内总线网络的待测Flash控制器的通信连接,并部署第一Flash仿真模型与待测Flash控制器对应的串行外设接口的连接关系。
其中,部署第一Flash仿真模型与待测Flash控制器对应的串行外设接口的连接关系,具体包括:
获取待测Flash控制器待连接的Flash芯片对应的Flash模型代码和Flash模型代码的仿真说明文件;
基于Flash模型代码和仿真说明文件部署第一Flash仿真模型与串行外设接口(Serial Peripheral Interface,SPI)的连接关系。
在搭建Flash控制器仿真平台时,需要Flash仿真模型来模拟物理上的Flash芯片。根据待测Flash控制器将要连接的Flash芯片的厂家和型号,从对应的官网上获取用于RTL仿真的对应Flash模型代码和仿真说明文件。该Flash模型代码的行为描述与物理上的Flash芯片相同,能模拟实现Flash芯片的所有功能,同时对应管脚的输入输出时序与Flash芯片管脚的时序相同。在部署第一Flash仿真模型与串行外设接口的连接关系时,第一Flash仿真模型的输入输出接口与要模拟的Flash芯片的管脚相同,根据管脚对应关系,第一Flash仿真模型的管脚接口与Flash控制器仿真平台的串行外设接口相连,仿真中使用对第一Flash仿真模型的操作来模拟对物理上Flash芯片的对应操作。在针对系统级芯片上的Flash控制器进行仿真功能验证时,串行外设接口采用QSPI(四线串行外设接口)形式。
对于步骤S102来说,Flash操作指令码为CPU编译器生成的可执行文件,CPU从指定存储位置获取Flash操作指令码以对待测Flash控制器进行功能验证。区分于待测Flash控制器和第一Flash仿真模型所在的数据链路,CPU通过指令读取数据链路,获取预存于指定存储位置的Flash操作指令码,指定存储位置可以位于外部存储介质,也可以位于Flash控制器仿真平台中除第一Flash仿真模型外的其他存储空间。
对于步骤S103来说,CPU向待测Flash控制器发送Flash操作指令码。待测Flash控制器在正常工作状态下,会接收并解析Flash操作指令码得到Flash操作指令,并向第一Flash仿真模型执行该Flash操作指令。
对于步骤S104来说,CPU向待测Flash控制器发送相应的命令(如对写入操作指令的数据的读取命令)以获取待测Flash控制器执行Flash操作指令的执行结果。
具体来说,Flash操作指令码是根据待测Flash控制器的功能说明以及待测Flash控制器下发控制命令的要求设定的,Flash操作指令码的类型具体可以包括:Flash写入操作指令码、Flash读取操作指令码和Flash擦除操作指令码等操作指令码,以对待测Flash控制器进行Flash的写入、读取、擦除等作为存储介质的功能验证。
例如,Flash操作指令具体为对目的地址的Flash写入操作指令;
相应的,步骤S104中获取待测Flash控制器执行Flash操作指令的执行结果,具体包括:
向待测Flash控制器发送对目的地址的Flash读取操作指令,得到待测Flash控制器反馈的数据读取结果;
若数据读取结果为Flash写入操作指令对应的数据,则确定执行结果为成功执行;否则确定执行结果为未成功执行。
对步骤S105来说,可以在待测Flash控制器能够成功执行所有Flash操作指令码对应的Flash操作指令后,认为待测Flash控制器的功能测试结果为合格。为具体分析待测Flash控制器的功能测试结果,本发明实施例提供的Flash控制器的功能测试方法还包括:
根据待测Flash控制器在执行Flash操作指令时的CPU总线时序、串行外设接口总线时序、芯片内执行模式,以及与第一Flash仿真模型对应的端口数据时序,确定待测Flash控制器的工作状态;
相应的,步骤S105中根据执行结果确定待测Flash控制器的功能测试结果,具体为:
若执行结果为成功执行且待测Flash控制器的工作状态为正常工作状态,则确定功能测试结果为合格;否则确定功能测试结果为不合格。
本发明实施例提供的Flash控制器的功能测试方法,在预先搭建Flash控制器仿真平台的基础上,基于与待测Flash控制器和Flash控制器仿真平台的第一Flash仿真模型不同数据链路的指令读取数据链路,获取预存于指定存储位置的Flash操作指令码,继而向待测Flash控制器发送该Flash操作指令码,验证待测Flash控制器执行该Flash操作指令码对应的Flash操作指令的执行结果以及最终得到待测Flash控制器的功能测试结果,区分了指令读取数据链路和待测Flash控制器执行Flash操作指令的链路,消除了待测Flash控制器读取Flash操作指令码和执行Flash操作指令的冲突,从而有效提高了Flash控制器的功能仿真测试的成功率。
图2为本发明实施例提供的一种Flash控制器仿真平台的架构示意图。
在上述实施例的基础上,在本发明实施例提供的Flash控制器的功能测试方法中,Flash控制器仿真平台还部署有第二Flash仿真模型;
则步骤S102中基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码,具体为:
向辅助Flash控制器发送读取指令,以使辅助Flash控制器在第二Flash仿真模型中获取并返回与读取指令对应的Flash操作指令码。
其中,辅助Flash控制器被系统总线分配的基地址与待测Flash控制器被系统总线分配的基地址不同。
在具体实施中,第二Flash仿真模型的部署方式可以参考第一Flash仿真模型的部署方式。
如图2所示,CPU 201通过ACE总线接入片内总线网络。辅助Flash控制器202通过AHB总线接入片内总线网络,辅助Flash控制器202通过QSPI总线连接第二Flash仿真模型203,构成指令读取数据链路。待测Flash控制器204通过AHB总线接入片内总线网络,待测Flash控制器204通过QSPI总线连接第一Flash仿真模型205,构成指令码执行链路。辅助Flash控制器202和待测Flash控制器204在系统总线上分配的基地址不同,以此区分CPU201对不同Flash仿真模型的操作,避免读取指令失败、仿真无法进行等问题。
在实际应用中,Flash操作指令码存放在第二Flash仿真模型203中。第一Flash仿真模型205可以为空,也可以预先存放等待读取的文件内容,该文件内容可修改。CPU 201通过片内总线网络与辅助Flash控制器202通信,读取Flash操作指令码,而后通过片内总线网络将Flash操作指令码发送到待测Flash控制器204。待测Flash控制器204解析Flash操作指令码得到相应的Flash操作指令,在第一Flash仿真模型205中执行Flash操作指令。
上文详述了Flash控制器的功能测试方法对应的各个实施例,在此基础上,本发明还公开了与上述方法对应的Flash控制器的功能测试装置、设备及计算机可读存储介质。
图3为本发明实施例提供的一种Flash控制器的功能测试装置的结构示意图。
如图3所示,本发明实施例提供的Flash控制器的功能测试装置包括:
部署单元301,用于预先搭建Flash控制器仿真平台;
第一获取单元302,用于基于指令读取数据链路,获取预存于指定存储位置的Flash操作指令码;
发送单元303,用于向待测Flash控制器发送Flash操作指令码,以使待测Flash控制器对Flash控制器仿真平台部署的第一Flash仿真模型执行与Flash操作指令码对应的Flash操作指令;
第二获取单元304,用于获取待测Flash控制器执行Flash操作指令的执行结果;
判断单元305,用于根据执行结果确定待测Flash控制器的功能测试结果;
其中,待测Flash控制器和第一Flash仿真模型所在的数据链路和指令读取数据链路为不同的数据链路。
进一步的,本发明实施例提供的Flash控制器的功能测试装置还可以包括:
检查单元,用于根据待测Flash控制器在执行Flash操作指令时的CPU总线时序、串行外设接口总线时序、芯片内执行模式,以及与第一Flash仿真模型对应的端口数据时序,确定待测Flash控制器的工作状态;
相应的,判断单元305根据执行结果确定待测Flash控制器的功能测试结果,具体为:
若执行结果为成功执行且待测Flash控制器的工作状态为正常工作状态,则确定功能测试结果为合格;否则确定功能测试结果为不合格。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图4为本发明实施例提供的一种Flash控制器的功能测试设备的结构示意图。
如图4所示,本发明实施例提供的Flash控制器的功能测试设备包括:
存储器410,用于存储指令,所述指令包括上述任意一项实施例所述的Flash控制器的功能测试方法的步骤;
处理器420,用于执行所述指令。
其中,处理器420可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器420可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器420也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器420可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器420还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器410可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器410还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器410至少用于存储以下计算机程序411,其中,该计算机程序411被处理器420加载并执行之后,能够实现前述任一实施例公开的Flash控制器的功能测试方法中的相关步骤。另外,存储器410所存储的资源还可以包括操作系统412和数据413等,存储方式可以是短暂存储或者永久存储。其中,操作系统412可以为Windows。数据413可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,Flash控制器的功能测试设备还可包括有显示屏430、电源440、通信接口450、输入输出接口460、传感器470以及通信总线480。
本领域技术人员可以理解,图4中示出的结构并不构成对Flash控制器的功能测试设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的Flash控制器的功能测试设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的Flash控制器的功能测试方法,效果同上。
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。
为此,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如Flash控制器的功能测试方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-OnlyMemory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的Flash控制器的功能测试方法的步骤,效果同上。
以上对本发明所提供的一种Flash控制器的功能测试方法、装置、设备及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。