CN113254339A - 一种nand驱动程序测试系统及方法 - Google Patents
一种nand驱动程序测试系统及方法 Download PDFInfo
- Publication number
- CN113254339A CN113254339A CN202110582981.5A CN202110582981A CN113254339A CN 113254339 A CN113254339 A CN 113254339A CN 202110582981 A CN202110582981 A CN 202110582981A CN 113254339 A CN113254339 A CN 113254339A
- Authority
- CN
- China
- Prior art keywords
- module
- test
- information
- scheduling
- command
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 175
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 57
- 230000006870 function Effects 0.000 claims abstract description 14
- 238000007726 management method Methods 0.000 claims description 80
- 238000004458 analytical method Methods 0.000 claims description 29
- 230000002159 abnormal effect Effects 0.000 claims description 16
- 238000013500 data storage Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000007405 data analysis Methods 0.000 claims description 3
- 238000010998 test method Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 abstract description 15
- 238000011161 development Methods 0.000 abstract description 8
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013142 basic testing Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开一种NAND驱动程序测试系统及方法,将驱动测试功能划分为不同的模块,通过对模块的裁剪、功能复用,以及模块对CPU的时分复用,满足了不同场景下的多任务同步测试需求,提高了开发效率和可维护性。本发明针对不同的混合类型仅需设置不同的命令发送及处理模块即可,测试过程、资源使用等基本需求也可通过管理模块进行了有效监控。而模块的CPU时分复用调度技术则为调度模块提供了一个通用的方法,调度器完全可以按照预设的需求按照顺序分配CPU给各模块,避免了使用简单的分支、循环代码调用模块带来的不确定性和调试困难,且仅需通过修改优先级即能调整不同类型测试命令的比例,做到了可靠和高效。
Description
技术领域
本发明涉及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的时分复用,满足了不同场景下的多任务同步测试需求,提高了开发效率和可维护性。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
Claims (10)
1.一种NAND驱动程序测试系统,其特征在于:包括测试管理模块、信息统计模块、命令生成模块、NAND驱动程序接口模块、资源管理模块及调度模块;
测试管理模块负责监控整个测试流程并进行异常处理;
信息统计模块用于记录当前已发送及接收的命令数量、类型及状态,以及数据处理模块的比对结果;
命令生成模块用于生成各种类型的驱动测试命令,命令生成模块在每次生成命令前,均通过查询信息统计模块确认所需测试命令是否均已发送完成,若完成则停止模块运行,不再占用CPU;
NAND驱动接口模块用于按照NAND驱动程序要求的格式与其进行通信;
调度模块用于确定各模块间的运行顺序,并根据调度优先级来决定下一步将进入命令发送、反馈接收或数据分析三者之中的哪种操作流程;
资源管理模块用于管理系统资源,当发送任一命令时,均需要从该模块获取此一类资源;当收取反馈信息或完成数据处理后,需要释放此一类资源到此模块;
测试启动后,测试管理模块配置信息统计模块,预设各种命令的类型及总数量,之后在调度模块的协调下,命令生成模块向资源管理模块申请系统资源产生测试命令,并由NAND驱动程序接口模块发送至驱动程序,当测试管理模块查询信息统计模块确定全部命令发送完成且相应数据处理完成后,测试结束;
除资源管理模块以外的每一个模块均接受调度模块的管理,分时独立占用CPU资源,实现对CPU的短时时分复用。
2.根据权利要求1所述的NAND驱动程序测试系统,其特征在于:还包括数据处理模块和反馈信息分析模块;
数据处理模块用于将驱动程序返回的数据与预期数据进行比对,并将结果反馈至信息统计模块;
反馈信息分析模块用于分析NAND驱动程序返回的反馈信息,确定每一个反馈信息的内容及格式是否正确,并且是否与发送的命令相对应,同时确认是否存在需要处理的数据,将分析结果发送至信息统计模块和数据处理模块;
测试时, NAND驱动程序接口模块查询驱动程序的反馈信息并将受到的反馈信息发送至反馈信息分析模块,反馈信息分析模块分析后将结果传输至信息统计模块及数据处理模块。
3.根据权利要求1所述的NAND驱动程序测试系统,其特征在于:调度模块调度除资源管理模块以外的每一个模块的过程为:
a、测试系统初始化时,为每一个模块分配独立的栈空间,使各个模块的运行互不干扰;
b、某一模块占用CPU运行时,其他模块的运行情况存入对应的栈中,运行中的模块暂停,将当前运行信息存入自身对应的栈中,并切换至调度模块;
c、由调度模块根据优先级决定下一个占用CPU的模块,任何已暂停的模块在被调度模块启用后,会将栈中存储的中断点信息重装入CPU,因此该模块在之前暂停的位置接续执行。
4.根据权利要求1或3所述的NAND驱动程序测试系统,其特征在于:某一模块占用CPU运行时,其他模块均处于挂起状态,直至调度模块将其唤醒并交付CPU使用权。
5.根据权利要求1所述的NAND驱动程序测试系统,其特征在于:每一个模块在每次阶段性工作完成后,均被调整调度优先级,以确保调度模块按照预设概率进行调度。
6.根据权利要求1所述的NAND驱动程序测试系统,其特征在于:资源管理模块管理包括DDR存储空间、命令上下文记录空间在内的系统资源,资源管理模块不具备独立的CPU占用权力和栈空间,被所有模块调用。
7.根据权利要求1所述的NAND驱动程序测试系统,其特征在于:根据测试需求,每次测试例化1个或多个命令生成模块,每个命令生成模块配置为不相同的功能。
8.根据权利要求7所述的NAND驱动程序测试系统,其特征在于:混合测试时,同时例化多个命令生成模块来生成多种不同类型的命令,从而验证驱动程序对多类型混合命令的处理情况。
9.一种NAND驱动程序测试方法,其特征在于:包括以下步骤:
S01)、测试系统初始化时,为每一个模块分配独立的栈空间以及调度时所需的初始优先级,然后启动测试管理模块;
S02)、测试管理模块发送配置信息至信息统计模块,确定需要发送的命令类型及每一种命令的数量;
S03)、启动命令生成模块进入命令生成流程,命令生成模块首先查询资源管理模块,查看系统能否分配给它对应的资源,如果可以获得此类资源则进入步骤S04,否则进入步骤S06;
S04)、如果可以获得此类资源,则命令生成模块生成对应的测试命令,将命令发送至NAND驱动接口模块,并将命令状态更新信息发送至信息统计模块,之后主动释放CPU,同时要求调度模块启用NAND驱动接口模块并指定要求其发送数据;
S05)、NAND驱动接口模块将数据通过与驱动程序连接的接口FIFO发送至驱动程序,之后主动释放CPU,并要求调度模块依次启用信息统计模块及测试管理模块,进入步骤S07;
S06)、如果步骤S03中,命令生成模块无法获取所需的系统资源,则该模块将命令发送异常状态信息发送至信息统计模块,之后主动释放CPU,并要求调度模块依次启用信息统计模块及测试管理模块;
S07)、信息统计模块更新统计信息,确认当前有多少命令完成收发,并根据时间戳计算性能;测试管理模块根据统计信息确认全部流程是否已完成,若完成则测试结束;若仍有命令需要发送,则首先查看统计信息中的异常信息,并与自身设定的等待超时信息相比对,如果异常状态的存在大于超时阈值,则强制终止测试并报错;如果统计信息中没有异常状态信息,则CPU使用权再次交付至调度模块;
S08)、调度模块接管根据预设调度方案调整各个模块的优先级,之后按照更新后的优先级顺序确认下一步进入哪一种测试,如果根据优先级查询确定测试需再次进入命令生成流程,则按照步骤S03至S07执行。
10.根据权利要求9所述的NAND驱动程序测试方法,其特征在于:步骤S08中,调度模块根据优先级查询确定测试需要进入反馈信息接收流程,则启用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进行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110582981.5A CN113254339B (zh) | 2021-05-27 | 2021-05-27 | 一种nand驱动程序测试系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110582981.5A CN113254339B (zh) | 2021-05-27 | 2021-05-27 | 一种nand驱动程序测试系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254339A true CN113254339A (zh) | 2021-08-13 |
CN113254339B CN113254339B (zh) | 2024-02-02 |
Family
ID=77184748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110582981.5A Active CN113254339B (zh) | 2021-05-27 | 2021-05-27 | 一种nand驱动程序测试系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254339B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708324B1 (en) * | 1999-06-24 | 2004-03-16 | Cisco Technology, Inc. | Extensible automated testing software |
CN101551777A (zh) * | 2009-05-08 | 2009-10-07 | 刘志方 | 移动终端软件基于异常和中断机制的装置和测试方法 |
CN102169462A (zh) * | 2011-04-27 | 2011-08-31 | 中国科学院光电技术研究所 | 基于NAND Flash的数据记录方法与记录控制器 |
CN105718369A (zh) * | 2016-01-19 | 2016-06-29 | 国家电网公司 | 计算机软件测试异常处理系统及测试方法 |
CN108334447A (zh) * | 2017-12-31 | 2018-07-27 | 江苏易润信息技术有限公司 | 一种测试处理计算机软件异常的系统及方法 |
-
2021
- 2021-05-27 CN CN202110582981.5A patent/CN113254339B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708324B1 (en) * | 1999-06-24 | 2004-03-16 | Cisco Technology, Inc. | Extensible automated testing software |
CN101551777A (zh) * | 2009-05-08 | 2009-10-07 | 刘志方 | 移动终端软件基于异常和中断机制的装置和测试方法 |
CN102169462A (zh) * | 2011-04-27 | 2011-08-31 | 中国科学院光电技术研究所 | 基于NAND Flash的数据记录方法与记录控制器 |
CN105718369A (zh) * | 2016-01-19 | 2016-06-29 | 国家电网公司 | 计算机软件测试异常处理系统及测试方法 |
CN108334447A (zh) * | 2017-12-31 | 2018-07-27 | 江苏易润信息技术有限公司 | 一种测试处理计算机软件异常的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113254339B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11526276B2 (en) | Upgrade management method and scheduling node, and storage system | |
CN110597531B (zh) | 分布式的模块升级方法、装置及存储介质 | |
CN104657212A (zh) | 一种任务调度的方法及系统 | |
CN100488123C (zh) | 通信设备的软件及硬件版本管理方法和系统 | |
CN113157411A (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN113254339B (zh) | 一种nand驱动程序测试系统及方法 | |
CN114489989A (zh) | 一种基于代理客户端并行调度的方法及系统 | |
EP4418721A1 (en) | Base station version downloading method, network management server, base station, device and medium | |
US20230350794A1 (en) | Method, apparatus and device for software testing, and compute-readable storage medium | |
CN113297080B (zh) | 一种物联网平台的简易测试方法 | |
CN115964296A (zh) | 自动驾驶安全验证平台的评估方法、装置、设备及介质 | |
CN115221041A (zh) | 多设备的测试方法、装置、电子设备及存储介质 | |
CN100546253C (zh) | 一种电信设备单元的管理方法 | |
CN114531316A (zh) | 一种面向通用服务高可靠性的总线系统 | |
CN112882878A (zh) | 电能表操作系统的资源占用测试方法、装置和计算机设备 | |
CN114443069B (zh) | 一种动态扩展的集群构建操作系统镜像的方法、系统 | |
CN112148384B (zh) | Sca波形组件加载方法、装置、可读介质及电子设备 | |
CN115811549B (zh) | 支持混合异构运行时的云边资源管理调度方法及系统 | |
CN111078358B (zh) | 一种基于软件容器的试验数据处理方法及系统 | |
CN117093345B (zh) | 任务链表的执行方法、装置、终端设备及存储介质 | |
CN115695189A (zh) | 一种基于联络中心系统的设备升级方法及装置 | |
CN113703477A (zh) | 一种自动席位切换系统及方法 | |
CN114253686A (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN100544475C (zh) | 无线通讯系统指定资源绑定特定终端测试的实现方法 | |
CN117453541A (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 |