一种NAND驱动程序测试系统及方法与流程

文档序号:26278539发布日期:2021-08-13 19:34阅读:82来源:国知局
一种NAND驱动程序测试系统及方法与流程

本发明涉及nand测试领域,具体是一种nand驱动程序测试系统及方法。



背景技术:

目前多类型测试命令同步混合测试系统存在开发及维护困难的问题。传统方法面对此类测试问题时,一般需要针对每一个种类型的命令编制独立的测试代码,而进行混合命令类型的测试时,再将这些代码重新整理糅合到一个新的用例中,此过程往往伴随着大量的接口修改、数据处理顺序调整等工作;且当混合类型变更后,上述工作还需要再次重新进行。

传统方法即使在设计阶段使用模块化设计,当进行多类型命令混合发送时,仅通过简单的分支、循环等方式实现的模块调用也经常不能满足复杂的数据处理,往往需要进行反复的精细调整,且在批量测试中一旦出现bug很难调试,部分情况下甚至需要拆解模块本身来保证混合测试时的命令序列。



技术实现要素:

针对现有技术的缺陷,本发明提供一种nand驱动程序测试系统及方法,通过模块化设计结合cpu的时分复用调度技术,解决了多类型测试命令同步混合测试系统开发及维护困难的问题。

为了解决所述技术问题,本发明采用的技术方案是:一种nand驱动程序测试系统,包括测试管理模块、信息统计模块、数据处理模块、命令生成模块、反馈信息分析模块、nand驱动程序接口模块、资源管理模块及调度模块;

测试管理模块负责监控整个测试流程并进行异常处理;

信息统计模块用于记录当前已发送及接收的命令数量、类型及状态,以及数据处理模块的比对结果;

数据处理模块用于将驱动程序返回的数据与预期数据进行比对,并将结果反馈至信息统计模块;

命令生成模块用于生成各种类型的驱动测试命令,命令生成模块在每次生成命令前,均需查询信息统计模块确认所需测试命令是否均已发送完成,若完成则停止模块运行,不再占用cpu;

反馈信息分析模块用于分析nand驱动程序返回的反馈信息,确定每一个反馈信息的内容及格式是否正确,并且是否与发送的命令相对应,同时确认是否存在需要处理的数据,将分析结果发送至信息统计模块和数据处理模块;

nand驱动接口模块用于按照nand驱动程序要求的格式与其进行通信;

调度模块用于确定各模块间的运行顺序,并根据调度优先级来决定下一步将进入命令发送、反馈接收或数据分析三者之中的哪种操作流程;

资源管理模块用于管理系统资源,当发送任一命令时,均需要从该模块获取此一类资源;当收取反馈信息或完成数据处理后,需要释放此一类资源到此模块;

测试启动后,测试管理模块配置信息统计模块,预设各种命令的类型及总数量,之后在调度模块的协调下,命令生成模块向资源管理模块申请系统资源产生测试命令,并由nand驱动程序接口模块发送至驱动程序,同时nand驱动程序接口模块查询驱动程序的反馈信息并将受到的反馈信息发送至反馈信息分析模块,反馈信息分析模块分析后将结果传输至信息统计模块及数据处理模块,当测试管理模块查询信息统计模块确定全部命令发送完成且相应数据处理完成后,测试结束;

除资源管理模块以外的每一个模块均接受调度模块的管理,分时独立占用cpu资源,实现对cpu的短时时分复用。

进一步的,调度模块调度除资源管理模块以外的每一个模块的过程为:

a、测试系统初始化时,为每一个模块分配独立的栈空间,使各个模块的运行互不干扰;

b、某一模块占用cpu运行时,其他模块的运行情况存入对应的栈中,运行中的模块暂停,将当前运行信息存入自身对应的栈中,并切换至调度模块;

c、由调度模块根据优先级决定下一个占用cpu的模块,任何已暂停的模块在被调度模块启用后,会将栈中存储的中断点信息重装入cpu,因此该模块在之前暂停的位置接续执行。

进一步的,某一模块占用cpu运行时,其他模块均处于挂起状态,直至调度模块将其唤醒并交付cpu使用权。

进一步的,每一个模块在每次阶段性工作完成后,均被调整调度优先级,以确保调度模块按照预设概率进行调度。

进一步的,针对模块的功能,设置它们对应的可裁剪性能。

进一步的,测试管理模块、信息统计模块、nand驱动接口模块、调度模块、资源管理模块不具备可裁剪性能,数据处理模块、命令生成模块、反馈信息分析模块具备可裁剪性能。

进一步的,在不需要反馈信息或数据处理的测试过程中裁减掉反馈信息分析模块或数据处理模块。

进一步的,根据测试需求,每次测试例化1个或多个命令生成模块,每个命令生成模块配置为不相同的功能。

进一步的,混合测试时,同时例化多个命令生成模块来生成多种不同类型的命令,从而验证驱动程序对多类型混合命令的处理情况。

本发明还公开了一种nand驱动程序测试方法,包括以下步骤:包括以下步骤:

s01)、测试系统初始化时,为每一个模块分配独立的栈空间以及调度时所需的初始优先级,然后启动测试管理模块;

s02)、测试管理模块发送配置信息至信息统计模块,确定需要发送的命令类型及每一种命令的数量;

s03)、启动命令生成模块进入命令生成流程,命令生成模块首先查询资源管理模块,查看系统能否分配给它对应的资源,如果可以获得此类资源则进入步骤s04,否则进入步骤s06;

s04)、如果可以获得此类资源,则命令生成模块生成对应的测试命令,将命令发送至nand驱动接口模块,并将命令状态更新信息发送至信息统计模块,之后主动释放cpu,同时要求调度模块启用nand驱动接口模块并指定要求其发送数据;

s05)、nand驱动接口模块将数据通过与驱动程序连接的接口fifo发送至驱动程序,之后主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块,进入步骤s07;

s06)、如果步骤s03中,命令生成模块无法获取所需的系统资源,则该模块将命令发送异常状态信息发送至信息统计模块,之后主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块;

s07)、信息统计模块更新统计信息,确认当前有多少命令完成收发,并根据时间戳计算性能;测试管理模块根据统计信息确认全部流程是否已完成,若完成则测试结束;若仍有命令需要发送,则首先查看统计信息中的异常信息,并与自身设定的等待超时信息相比对,如果异常状态的存在大于超时阈值,则强制终止测试并报错;如果统计信息中没有异常状态信息,则cpu使用权再次交付至调度模块;

s08)、调度模块接管根据预设调度方案调整各个模块的优先级,之后按照更新后的优先级顺序确认下一步进入哪一种测试:是另一种类型的命令生成流程,或者是命令接收流程,再或者是数据处理流程;如果该模块根据优先级查询确定测试需再次进入命令生成流程,则按照步骤s03至s07执行;如果测试需要进入反馈信息接收流程,则启用nand驱动接口模块并指定要求其接收数据,此时进入步骤s09;如果测试需要进入数据处理流程,则进入步骤s13;

s09)、反馈信息接收流程启动后,nand驱动接口模块读取与被测驱动程序连接的fifo,如果存在反馈数据,则进入步骤s10,否则进入步骤s12;

s10)、nand驱动接口模块将从驱动程序除获取的数据调整格式后,发送至反馈信息分析模块,然后主动释放cpu,并要求调度模块启用反馈信息分析模块;

s11)、反馈信息分析模块对收到的数据进行解析,查阅统计信息确认当前反馈信息是否与已发送的命令相对应,并解析反馈信息的格式是否正确;如果反馈信息同时还附带有大量数据放于内存,则将数据存储位置及相关处理信息发送至数据处理模块,调度模块在cpu较为空间的时机调用数据处理模块处理此类数据,以避免影响测试效率;之后反馈信息分析模块将反馈信息接收状态发送至信息统计模块,同时调用资源管理模块,根据测试需要释放对应命令发送时所申请的部分或全部系统资源;最后主动释放cpu,同时要求调度模块依次启用信息统计模块及测试管理模块,回到步骤s07进行操作;

s12)、如果“nand驱动接口模块读取与被测驱动程序连接的fifo,如果无任何数据,则主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块,此时回到步骤s07进行操作;

s13)、数据处理模块查看是否有数据需要处理,如果有需要处理的数据,则按照状态信息要求的内容对内存中的大量附带数据进行比对,之后将反馈信息接收状态放发送至信息统计模块,同时调用资源管理模块释放当前数据存储所占用的系统资源;最后主动释放cpu,同时要求调度模块依次启用信息统计模块及测试管理模块,回到步骤s07进行操作;如果没有需要处理的数据,则主动释放cpu并要求调度模块依次启用信息统计模块及测试管理模块,并回到步骤s07进行操作。

本发明的有益效果:本发明将驱动测试功能划分为不同的模块,通过对模块的裁剪、功能复用,以及模块对cpu的时分复用,满足了不同场景下的多任务同步测试需求,提高了开发效率和可维护性。

本发明给出了一套合理的模块组合,针对不同的混合类型仅需设置不同的命令发送及处理模块即可,测试过程、资源使用等基本需求也可通过管理模块进行了有效监控。而模块的cpu时分复用调度技术则为调度模块提供了一个通用的方法,调度器完全可以按照预设的需求按照顺序分配cpu给各模块,避免了使用简单的分支、循环代码调用模块带来的不确定性和调试困难,且仅需通过修改优先级即能调整不同类型测试命令的比例,做到了可靠和高效。

无论何种测试命令组合,均能通过本文所述方法迅速搭建起一个合理的驱动测试平台,因此本方法相较传统方法优势明显。

附图说明

图1为实施例1所述测试系统的原理框图;

图2为实施例2所述测试方法的流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步的说明。

实施例1

本实施例公开一种nand驱动程序测试系统,本系统将各种测试所需功能封装成模块,每个模块均可在调度程序的管理下,轮番独立占用cpu资源,通过短时时分复用方式模拟并行操作,结合模块的不同配置及模块间的合理连接,从而满足多种场景下对nand驱动程序的功能及性能测试需求。

如图1所示,所述测试系统包括测试管理模块、信息统计模块、数据处理模块、命令生成模块、反馈信息分析模块、nand驱动程序接口模块、资源管理模块及调度模块。整个测试过程中,测试管理模块负责监控整个测试流程并进行异常处理,调度模块负责为每一个模块合理分配cpu资源,并决定何时进行命令发送、反馈接收和数据处理工作,其他模块在这两类模块的协调下各司其职,保证测试过程顺利进行。

一个基本测试流程为:测试管理模块启动测试,配置信息统计模块预设各类命令的类型及总数量,之后在调度模块的协调下,命令生成模块向资源管理模块申请系统资源产生nand读/写/擦等类型的命令,并由nand驱动程序接口模块发送至驱动程序,同时该模块也会查询驱动程序的反馈并将收到的信息发送至反馈信息分析模块,此模块分析后将结果传输至信息统计模块及数据处理模块,当测试管理模块查询信息统计模块确认全部命令发送完成且相应数据处理完成后,测试结束。

测试模块可根据不同情况进行调整。进行混合测试时,可同时例化多个命令生成模块来生成多种不同类型的命令,从而验证驱动程序对多类型混合命令的处理情况;也可以在不需要反馈信息或数据处理的测试过程中裁减掉反馈信息分析模块或数据处理模块,从而节约cpu资源,提高运行效率。

图1是本发明的完整模块连接关系图,模块间的通信通过fifo进行。

图中每一个模块(资源管理模块除外)均可以在调度的管理下独立占用cpu资源,通过对cpu的短时时分复用,从宏观上达到所有模块同步工作的目标,从而实现多种测试命令的同步发送、反馈信息的同步接收及测试数据的同步处理。为避免某一模块长期占领cpu,每一个模块在每次阶段性工作完成后,均会被调整调度优先级,以确保调度模块按照预设概率进行调度。

根据测试需要,图中的部分模块可被裁剪以减少占用的资源并提高运行效率,各模块的说明如下:

测试管理模块:在测试启动后,配置信息统计模块,设定各种命令的预期发送数量,之后监控整个测试流程的进展,通过查看信息统计模块记录的命令数量及状态,结合自身记录的超时信息,判断测试是否已完成,或是否进入异常状态;本模块不可被裁剪;

信息统计模块:用于记录当前已发送及接收的命令数量、类型及状态,以及数据处理模块的比对结果;本模块不可被裁剪。

数据处理模块:用于将驱动程序返回的数据与预期数据进行比对,并将结果反馈至信息统计模块;根据测试需要,本模块可被裁剪。

命令生成模块:用于生成各种类型的驱动测试命令,如nand擦除命令、nand写入命令、nand读取命令等;此模块在每次生成命令前,均需查询信息统计模块确认是否所需测试命令均已发送完成,若完成则停止模块运行,不再占用cpu;根据测试需求,每次测试可例化1个或多个模块,每个模块均可配置为不相同的功能。本模块不可被裁剪。

反馈信息分析模块:用于分析nand驱动返回的反馈信息,确认每一个反馈信息的内容及格式是否正确,并且是否与发送的命令相对应,同时确认是否存在需要处理的数据,将上述结果发送至信息统计模块及数据处理模块;根据测试需要,本模块可被裁剪。

nand驱动接口模块:用于按照nand驱动程序要求的格式与其进行通信;本模块不可被裁剪。

调度模块:用于确定各模块间的运行顺序,并根据调度优先级来决定下一步将进入命令发送、反馈接收或数据分析三者之中的哪种操作流程;本模块不可被裁剪。

资源管理模块:管理ddr存储空间、命令上下文记录空间等系统资源;当发送任一命令时,均需要从该模块获取此一类资源;当收取反馈信息或完成数据处理后,需要释放此一类资源到此模块;该模块不具备独立的cpu占用权力和栈空间,而是可像代码函数一样直接被所有模块调用。本模块不可被裁剪。

本实施例是搭建一个开发效率高、测试覆盖面广的测试系统完成各项nand驱动功能及性能测试。

为解决搭建效率问题,设计了模块化方案,通过已有模块的配置和组合降低二次开发难度,提高可维护性;各个模块的功能和可配置/裁剪的说明详见以上描述。

为提高测试覆盖面,解决多种命令同步混合收发测试的问题,设计了调度功能,每一个模块(资源管理模块除外)均可以在调度的管理下独立占用cpu资源,具体实现方法为:

a、测试系统初始化时,为每一个模块分配独立的栈空间,使各个模块的运行互不干扰;

b、某一模块占用cpu运行时,其他模块的运行情况存入对应的栈中(即该模块处于挂起状态),运行中的模块可以随时暂停,将当前运行信息存入自身对应的栈中,并切换至调度模块;

c、由调度模块根据优先级决定下一个占用cpu的模块,任何已暂停的模块在被调度模块启用后,会将栈中存储的中断点信息重装入cpu,因此该模块可以在之前暂停的位置接续执行。

各个模块在调度模块的管理下,通过对cpu的短时时分复用,从宏观上达到所有模块同步工作的目标,从而实现多种测试命令的同步发送、反馈信息的同步接收及测试数据的同步处理。

本实施例中,除了资源管理模块以外的每个模块的切换均由调度模块进行,某一模块占用cpu运行时,其他模块均处于挂起状态,直至调度模块将其唤醒并交付cpu使用权;模块间的通信使用fifo进行。

实施例2

本实施例公开一种nand驱动储层序测试方法,如图2所示,包括以下步骤:

1、测试开始阶段,按照上文所述为每一个模块分配独立的栈空间,以及调度时所需的初始优先级,之后启动测试管理模块;

2、测试管理模块发送配置信息至信息统计模块,确定需要发送的命令类型及每一种命令的数量;

3、启动某一种类型的命令生成模块进入命令生成流程,该模块会首先查询资源管理模块,查看系统能否分配给它对应的资源,如是否有可用的命令id号,或是否有存放从驱动返回的大量数据的内存空间等;如果可以获得此类资源则进入步骤4,否则进入步骤6;

4、如果可以获得此类资源,则命令生成模块生成对应的测试命令,将命令发送至nand驱动接口模块,并将命令状态更新信息发送至信息统计模块,之后主动释放cpu,同时要求调度模块启用nand驱动接口模块并指定要求其发送数据;

5、nand驱动接口模块将数据通过与驱动程序连接的接口fifo发送至驱动程序,之后主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块,进入步骤7;

6、如果步骤3中,命令生成模块无法获取所需的系统资源,则该模块将命令发送异常状态信息发送至信息统计模块,之后主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块;

7、信息统计模块更新统计信息,确认当前有多少命令完成收发,并根据时间戳计算性能;测试管理模块根据统计信息确认全部流程是否已完成,若完成则测试结束;若仍有命令需要发送,则首先查看统计信息中的异常信息(如是否存在某一条测试命令长时间未发出,或某一条测试命令发出后长时间未收到反馈信息),并与自身设定的等待超时信息相比对,如果异常状态的存在大于超时阈值,则强制终止测试并报错;如果统计信息中没有异常状态信息,则cpu使用权再次交付至调度模块;

8、调度模块接管根据预设调度方案调整各个模块的优先级,之后按照更新后的优先级顺序确认下一步进入哪一种测试:是另一种类型的命令生成流程,或者是命令接收流程,再或者是数据处理流程;如果该模块根据优先级查询确定测试需再次进入命令生成流程,则按照步骤3~7执行;如果测试需要进入反馈信息接收流程,则启用nand驱动接口模块并指定要求其接收数据,此时进入步骤9;如果测试需要进入数据处理流程,则进入步骤13;

9、反馈信息接收流程启动后,nand驱动接口模块读取与被测驱动程序连接的fifo,如果存在反馈数据,则进入步骤10,否则进入步骤12;

10、nand驱动接口模块将从驱动程序除获取的数据调整格式后,发送至反馈信息分析模块,然后主动释放cpu,并要求调度模块启用反馈信息分析模块;

11、反馈信息分析模块对收到的数据进行解析,查阅统计信息确认当前反馈信息是否与已发送的命令相对应,并解析反馈信息的格式是否正确;如果反馈信息同时还附带有大量数据放于内存(例如nand读命令即会获取大量nand数据),则将数据存储位置及相关处理信息发送至数据处理模块,调度模块会在cpu较为空间的时机调用数据处理模块处理此类数据,以避免影响测试效率;之后反馈信息分析模块将反馈信息接收状态发送至信息统计模块,同时调用资源管理模块,根据测试需要释放对应命令发送时所申请的部分或全部系统资源;最后主动释放cpu,同时要求调度模块依次启用信息统计模块及测试管理模块,回到步骤7进行操作;

12、如果nand驱动接口模块读取与被测驱动程序连接的fifo,如果无任何数据,则主动释放cpu,并要求调度模块依次启用信息统计模块及测试管理模块,此时回到步骤7进行操作;

13、数据处理模块查看是否有数据需要处理,如果有需要处理的数据,则按照状态信息要求的内容对内存中的大量附带数据进行比对,之后将反馈信息接收状态放发送至信息统计模块,同时调用资源管理模块释放当前数据存储所占用的系统资源;最后主动释放cpu,同时要求调度模块依次启用信息统计模块及测试管理模块,回到步骤7进行操作;如果没有需要处理的数据,则主动释放cpu并要求调度模块依次启用信息统计模块及测试管理模块,并回到步骤7进行操作。

以上即为测试时的全部流程说明。

本发明提供了一个简单高效的结构框架,通过模块化设计结合cpu的时分复用调度技术,解决了多类型测试命令同步混合测试系统开发及维护困难的问题。

本发明所述测试方法可以全面高效的验证驱动程序的功能完整性、运行稳定性及命令吞吐效率。该方法将驱动测试功能划分为不同的模块,通过对模块的裁剪、功能复用,以及模块对cpu的时分复用,满足了不同场景下的多任务同步测试需求,提高了开发效率和可维护性。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1