一种面向存储固件算法的仿真全自动化断点调试验证方法与流程

摘要: 本发明涉及嵌入式固件自动化仿真测试,特别是一种面向存储固件算法的仿真全自动化断点调试验证方法。背景技术:1、随着固态硬盘、嵌入式存储器及高性能存储控制器的持续发...
一种面向存储固件算法的仿真全自动化断点调试验证方法与流程

本发明涉及嵌入式固件自动化仿真测试,特别是一种面向存储固件算法的仿真全自动化断点调试验证方法。

背景技术:

1、随着固态硬盘、嵌入式存储器及高性能存储控制器的持续发展,存储固件承担的地址映射、磨损均衡、垃圾回收、错误恢复和协议处理等算法日趋复杂,其运行状态具有强时序性、并发性和硬件耦合性;面向存储固件算法的调试验证逐步由依赖物理样片和人工单步调试,发展为依托仿真环境开展业务场景重现、内部状态观测和自动化测试,并进一步与持续集成体系结合,以提高异常场景覆盖率、缺陷定位效率及版本回归验证的一致性,满足存储固件快速迭代和多平台适配的研发需求。

2、现有存储固件自动化验证通常依赖固件业务逻辑获取变量数据和运行状态,且为保证业务连续执行,通常不设置使业务线程停滞的断点;因此,对于持续时间较短的瞬时状态,测试脚本往往难以及时获取目标业务节点对应的内部变量数据,导致部分运行状态无法有效校验,验证覆盖率较低;若通过设置断点捕获所述瞬时状态,则依赖固件业务线程响应的变量读取又可能因业务线程停滞而无法执行;此外,现有断点触发、变量读取、结果校验及运行恢复之间缺少自动衔接,仍存在人工介入较多、验证结果难以复现的问题。

技术实现思路

1、鉴于上述现有存在的问题,提出了本发明。

2、因此,本发明提供了一种面向存储固件算法的仿真全自动化断点调试验证方法解决固件业务逻辑中的瞬时运行状态难以通过自动化脚本验证,以及固件业务线程停滞后变量数据难以稳定读取和断点调试验证流程难以自动闭环的问题。

3、为解决上述技术问题,本发明提供如下技术方案:

4、本发明提供了一种面向存储固件算法的仿真全自动化断点调试验证方法,其包括:编译存储固件并根据生成的符号文件建立变量地址索引表,在存储固件的待校验业务节点配置预设断点编号及断点阻塞逻辑,在仿真平台与存储固件之间设置断点控制标识、停滞状态标记以及独立于存储固件业务输入输出通路的内存访问路径;测试平台向仿真平台发送目标断点触发指令,仿真平台通过内存访问路径将目标断点编号写入断点控制标识,存储固件执行至待校验业务节点时,将读取的断点控制标识与待校验业务节点对应的预设断点编号进行比较,在二者匹配时更新停滞状态标记,并使执行待校验业务节点的固件业务线程进入循环阻塞,在循环阻塞过程中持续读取断点控制标识,仿真平台检测到停滞状态标记更新后,向测试平台反馈断点触发完成信号;测试平台响应于断点触发完成信号发送变量读取请求,仿真平台根据变量地址索引表和存储固件的内存基地址确定待读取变量的目标访问地址,并在固件业务线程保持循环阻塞期间,通过内存访问路径直接读取目标访问地址处的变量数据,所述变量数据的读取不调用处于循环阻塞状态的固件业务线程,测试平台将读取的变量数据与对应的预设校验条件进行比较,获得断点校验结果;在获得断点校验结果后,仿真平台通过内存访问路径清除断点控制标识,存储固件在循环阻塞过程中检测到断点控制标识被清除后,复位停滞状态标记并退出循环阻塞,恢复固件业务线程的调度。

5、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述编译存储固件并根据生成的符号文件建立变量地址索引表,包括:

6、在存储固件编译阶段保留调试符号信息,生成包含固件变量符号信息的符号文件;

7、解析各待观测变量对应的变量名称、目标结构体的程序内偏移地址、结构体内成员偏移地址及数据长度,建立对应关系,形成变量地址索引表。

8、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述在存储固件的待校验业务节点配置预设断点编号及断点阻塞逻辑,包括:

9、通过宏定义对各待校验业务节点对应的预设断点编号进行枚举,在各待校验业务节点对应的固件代码位置插入通用断点函数,并将对应的预设断点编号作为通用断点函数的输入参数,使各待校验业务节点对应的固件代码位置与预设断点编号建立对应关系;

10、构建断点信息维护表,将各预设断点编号与对应的固件代码位置、所属业务模块、待观测变量名称、变量数据长度及预设校验条件进行关联;

11、在通用断点函数中读取断点控制标识,将断点控制标识与输入通用断点函数的预设断点编号进行比较,在二者匹配时更新停滞状态标记,并使执行待校验业务节点的固件业务线程进入循环阻塞,在循环阻塞过程中持续读取断点控制标识,直至检测到断点控制标识变为非触发状态值,存储固件确定断点控制标识被清除并退出循环阻塞。

12、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述在仿真平台与存储固件之间设置断点控制标识、停滞状态标记以及独立于存储固件业务输入输出通路的内存访问路径,包括:

13、在仿真平台与存储固件共同访问的共享内存空间中,通过地址映射方式分别为断点控制标识和停滞状态标记配置共享内存地址;

14、将断点控制标识配置为由仿真平台写入并由存储固件读取,将停滞状态标记配置为由存储固件写入并由仿真平台读取;

15、在仿真平台中配置内存访问接口,使仿真平台通过内存访问接口访问断点控制标识、停滞状态标记以及目标访问地址对应的存储区域,且不经过存储固件业务输入输出通路,形成独立于存储固件业务输入输出通路的内存访问路径。

16、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述仿真平台根据变量地址索引表和存储固件的内存基地址确定待读取变量的目标访问地址,包括:

17、获取测试平台发送的变量读取请求,所述变量读取请求包括待读取变量名称;

18、获取存储固件的运行内存基地址;

19、根据待读取变量名称检索变量地址索引表,获取待读取变量所属目标结构体的程序内偏移地址、待读取变量对应的结构体内成员偏移地址和数据长度;

20、将存储固件的运行内存基地址、目标结构体的程序内偏移地址以及待读取变量对应的结构体内成员偏移地址求和,得到待读取变量的目标访问地址。

21、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述在固件业务线程保持循环阻塞期间,通过内存访问路径直接读取目标访问地址处的变量数据,包括:

22、在固件业务线程保持循环阻塞期间,仿真平台通过内存访问路径访问目标访问地址对应的存储区域;

23、根据变量地址索引表中待读取变量对应的数据长度,从目标访问地址处读取变量数据,并将读取的变量数据发送至测试平台;

24、测试平台将读取的变量数据与对应的预设校验条件进行比较,获得断点校验结果。

25、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,所述仿真平台通过内存访问路径清除断点控制标识,存储固件在循环阻塞过程中检测到断点控制标识被清除后,复位停滞状态标记并退出循环阻塞,恢复固件业务线程的调度,包括:

26、在获得断点校验结果后,仿真平台通过内存访问路径向断点控制标识写入非触发状态值,以清除断点控制标识;

27、存储固件在循环阻塞过程中持续读取断点控制标识,在检测到断点控制标识变为非触发状态值时,确定断点控制标识被清除并复位停滞状态标记;

28、存储固件退出循环阻塞,恢复固件业务线程的调度,并继续执行待校验业务节点之后的业务流程。

29、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,还包括掉电重启场景下的断点配置恢复步骤:

30、在执行掉电重启测试前,仿真平台保存待校验业务节点对应的预设断点编号、待观测变量信息以及预设校验条件,形成断点配置数据;

31、所述待观测变量信息包括待观测变量名称和变量数据长度;

32、在存储固件重新启动后、存储固件执行至对应的待校验业务节点之前,仿真平台加载断点配置数据,并通过内存访问路径将断点配置数据中的预设断点编号写入断点控制标识;

33、存储固件执行至对应的待校验业务节点时,将读取的断点控制标识与待校验业务节点对应的预设断点编号进行比较,在二者匹配时更新停滞状态标记,并使执行待校验业务节点的固件业务线程进入循环阻塞,以在固件业务线程保持循环阻塞期间完成变量数据读取和断点校验。

34、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,还包括:

35、根据预设测试流程确定多个待校验业务节点,并依次获取各待校验业务节点对应的预设断点编号;

36、针对各待校验业务节点,测试平台依次向仿真平台发送对应的目标断点触发指令,仿真平台依次执行将目标断点编号写入断点控制标识、检测停滞状态标记、通过内存访问路径读取变量数据以及清除断点控制标识的操作,测试平台依次将读取的变量数据与对应的预设校验条件进行比较,获得各待校验业务节点对应的断点校验结果;

37、对各待校验业务节点对应的断点触发信息、变量访问信息以及断点校验结果进行汇总,生成固件算法验证报告。

38、作为本发明所述面向存储固件算法的仿真全自动化断点调试验证方法的一种优选方案,其中,还包括变量修改验证步骤:

39、在固件业务线程保持循环阻塞期间,测试平台根据预设测试场景确定待修改变量以及对应的目标变量值,并向仿真平台发送包括待修改变量名称和目标变量值的变量修改请求;

40、仿真平台根据变量地址索引表和存储固件的内存基地址确定待修改变量的目标访问地址,并通过内存访问路径将目标变量值写入待修改变量的目标访问地址,所述目标变量值的写入不调用处于循环阻塞状态的固件业务线程;

41、在写入目标变量值后,仿真平台通过内存访问路径清除断点控制标识,存储固件在循环阻塞过程中检测到断点控制标识被清除后,复位停滞状态标记并退出循环阻塞,恢复固件业务线程的调度,根据写入后的目标变量值继续执行对应业务流程;

42、测试平台向仿真平台发送后续待校验业务节点对应的目标断点触发指令,仿真平台通过内存访问路径将后续待校验业务节点对应的目标断点编号写入断点控制标识,使存储固件执行至后续待校验业务节点时进入循环阻塞;

43、在固件业务线程保持循环阻塞期间,仿真平台根据变量地址索引表和存储固件的内存基地址确定后续待校验业务节点对应的待读取变量的目标访问地址,并通过内存访问路径直接读取目标访问地址处的变量数据,测试平台将读取的变量数据与对应的预设校验条件进行比较,获得断点校验结果,以验证写入目标变量值后的固件算法执行状态。

44、本发明有益效果为:通过在待校验业务节点设置编号化断点及阻塞逻辑,并利用独立于存储固件业务输入输出通路的内存访问路径在固件业务线程循环阻塞期间读取变量数据,实现确定停滞时刻内部状态的稳定获取,提高了断点校验的准确性;通过将符号索引、断点触发、停滞确认、变量校验及断点释放进行自动联动,实现断点调试验证流程的闭环执行,减少了人工介入,提高了验证效率和结果复现性。