当前位置:首页 期刊杂志

面向STM32和RS422总线的伺服软件测试方法

时间:2024-05-04

文/樊茜 何雨昂 焦震 张震 郭钰

基于STM32的伺服软件是一种应用于ARM 平台的新型软件,并采用RS422串口通信协议,该类软件具有多指令、多时序、强实时的特点。软件产品质量直接影响甚至决定整个伺服系统的质量。面对规模越来越大的嵌入式软件,对软件测试的效率和有效性提出了更高的要求,一方面要尽早发现软件的缺陷,保证软件的质量;另一方面要保证项目的研制进度不受到影响。针对上述情况,本文提出了一种面向STM32和RS422总线的伺服软件测试平台,对被测软件的功能、接口、余量和强度指标进行充分考核。

1 基于ARM处理器的空间余量测试方法

新型的ARM嵌入式系统,使用KEIL开发编译器。测试人员需要对KEIL编译器下的目标文件结构进行分析,从而总结空间余量计算方法。

一个ARM程序包含3部分:RO,RW和ZI。RO是程序中的指令和常量;RW是程序中的已初始化变量;ZI是程序中的未初始化的变量,如图1。

使用KEIL软件成功编译工程后会生成系统MAP文件,MAP文件内包含Code、RO Data、RW Data、ZI Data的信息,分别代表编译后C文件的指令、常量、已被初始化的变量、未被初始化或初始化为0的变量。那么,该工程的RO则为Code与RO Data之和;RW为RW Data与ZI Data之和;ZI为ZI Data;另外,烧录到ROM中文件称之为ARM映像文件。该文件包含了RO和RW,而不包含ZI。因为ZI数据都是0,只要程序运行之前将ZI数据所在的区域一律清零即可。为验证上述理论,设计如下实验:

表1:RO实验数据

表2:RW实验数据

表3:ZI实验数据

实验1:验证RO数据。设计两段程序,它们之间差了一条“声明一个字符常量”语句。因此按照之前描述,两段程序之间应只会在RO Data中相差一个字节(字符常量为1字节),如表1所示。

实验2:验证RW数据。同样再看两个程序,它们之间只相差一个“已初始化的变量”,按照之前描述,已初始化的变量应该是算在RW Data中的,所以两段程序之间应该是RW Data大小有区别,如表2所示。

实验3:验证ZI数据。最后这两个程序的设计差别为一个未初始化的变量“a”,从之前的了解中,应该可以推测,这两个程序之间应该只有ZI Data有差别,如表3所示。

由此我们可以分析出,堆栈空间、代码空间、数据空间的测试方法。

图1:ARM程序的目标文件结构

针对堆栈空间,我们从MAP文件中查询堆栈空间的起始地址和终止地址,再将该区域内全赋值为0xFFFF,编译通过后上传被测软件并运行,此时使用Memory查看堆栈区的使用情况。公式如下:

针对代码空间,我们在MAP文件中查看所有Code和RO Data占用的空间数,找到Code和RO Data对应的存储区的地址长度,从而计算出代码空间余量。公式如下:

图2:测试环境搭建框图

针对数据空间,则在MAP文件中查看所有RW Data和ZI Data占用的空间数,然后找到RW Data和ZI Data对应的存储区的地址长度,最后计算出数据空间余量。公式如下:

2 面向STM32和RS422总线的伺服软件测试平台

根据被测伺服软件所提供的运行环境的不同,伺服软件测试平台一般分为三种类型:全实物仿真测试平台、半实物仿真测试平台、全数字仿真测试平台。这三种测试环境都是嵌入式软件测试过程中的重要手段和方法。但由于全实物仿真测试的可控性弱,构建经费多,该平台中的真实外围设备使得系统的设置缺乏灵活性,测试用例输入条件无法满足,测试结果记录困难,测试有效性差。全数字仿真测试则是在接口、实时性、数据真实性等方面较弱,部分与硬件特性紧密相关的软件特性无法有效测试,这种测试环境的通用性较差,且采用软件来模拟硬件的运行,与在实际环境中的运行将会存在差异。为解决两者之间的矛盾,保证真实性的同时又保证可控性,满足对高动态的测试要求,我们采用半实物仿真测试平台,就是在计算机仿真回路中接入一些实物,以取代相应部分数学模型的系统仿真,这种技术是建立在半实物仿真测试环境基础上的。

面向STM32和RS422总线的伺服软件的半实物仿真测试平台由目标机、仿真机系统和环境模拟设备组成。其中目标机包括伺服控制驱动器,用来运行被测软件;仿真机系统包括接入RS422板卡、装有LDRA Testbed、RTinsight、KEIL、RS422总线上位机测试软件等软件的工控机,实现弹上总线及设备的模拟与仿真以及给目标机发送控制指令;环境模拟设备包括供电电源、示波器、JlINK仿真器,主要实现软件在线调试,通过示波器观察看门狗复位和PWM波形。基于STM32和RS422总线的伺服软件测试平台组成如图2。

此次搭建的测试环境包含RS422串口总线设备。RS422串行通讯的特点主要是数据位按位顺序传送,所以最少只需一根传输线即可完成通信,成本低,容易实现远距离通信。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。软件在解析时同样按字节接收,由于通讯中每个帧包括固定长度的字节,所以软件对于错误帧的处理尤为关键。半实物仿真测试环境可以针对帧缺失和帧冗余进行测试,帧缺失指的是数据帧中的字节数少于固定长度,帧冗余则是字节数多于固定长度,首先通过串口调试软件发送错误帧,查看伺服软件是否响应错误帧,再发送正确的数据帧,查看软件是否可以正常处理,也就是验证软件能否从错误的状态下恢复回来。

半实物仿真测试环境最大程度地模拟软件的实际运行环境,真实地反映了软件的实际运行状态,有效地保证了软件测试实时性,最大限度地减小了测试环境对动态性能指标的影响。结合半实物仿真测试环境,使用硬件、数据和操作故障注入技术,能够全面考察基于STM32和RS422总线的伺服软件的功能、接口特性、容错机制和异常数据处理的能力。

3 面向RS422总线的软件强度测试方法

压力测试也称强度测试,是在强负载(大数据量、大量并发用户等)下的测试。通过查看伺服软件在峰值使用情况下的操作行为,发现被测软件的某项功能隐患、软件是否具有良好的容错能力和可恢复能力。在实际的运行状态下,伺服软件实时接收控制系统指令,并及时解码、保存当前控制指令,用于伺服系统闭环控制,在每个固定周期N ms发送一次控制指令消息,消息内容为伺服系统的角度命令值。本次测试采用串口调试软件配套RS422总线板卡,支持单条消息的定时发送,分辨率为1 ms。以伺服软件测试平台为基础,将测试流程中的消息配置为控制指令消息,并且定时发送周期设置为N ms,此时软件可以实时接收上位机发送的控制指令,进行闭环控制计算,测试人员可以通过设计测试用例,考察软件在这种状态下是否工作稳定和可靠。为了进一步考核软件在强负载下的工作状态,我们将上位机发送控制指令的周期逐步缩短,此时软件在单位时间内接收到的数据量明显增加,在此状态下,测试人员通过PWM接口的输出、变量监控等方法,查看软件是否具有某些隐患,也就是考核了软件的抗压能力。

4 结论

基于STM32和RS422总线的伺服软件是新型ARM系列伺服控制驱动软件,是今后嵌入式软件的重点发展方向。面对如此复杂需求的软件,深入研究基于STM32和RS422总线的伺服软件测试方法,具有重要意义。该测试方法,充分利用测试资源,缩短软件开发周期和成本,同时缩减软件测试平台搭建资金,进一步提高软件测试水平和同行业竞争力。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!