1.本发明涉及列车信号控制系统,尤其是涉及一种用于二取二系统的软件测试方法。
背景技术:
::2.铁路中,为了提高安全性,很多嵌入式系统都是采用二取二,例如输入输出单元,采用两个cpu(中央处理器),通过对两个cpu的结果进行比较,保证了输入输出的数据安全性。还有安全平台,平台本身采用二取二的架构,保证了上层数据的一致性。3.在铁路系统中,在对二取二嵌入式系统进行测试时候,往往采用pc机发送命令,嵌入式系统接收命令后,执行pc机发送的命令的方式进行测试。但是由于pc机发送命令采用udp或者tftp等其他网络协议,在发送命令时,由于网络延迟或者网络丢包,会造成两个cpu收到命令时间不同,这样一个cpu执行了错误模拟,另外一个cpu没有执行错误的模拟,可能造成测试结果的不同,如图1。技术实现要素:4.本发明的目的就是为了解决上述现有二取二系统测试过程中,由于网络延迟,导致桩代码不能同时打开或者关闭的问题而提供一种用于二取二系统的软件测试方法。5.本发明的目的可以通过以下技术方案来实现:6.根据本发明的一个方面,提供了一种用于二取二系统的软件测试方法,该方法包括以下步骤:7.步骤s1:pc机通过网络发送命令信息给嵌入式系统的cpua和cpub;8.步骤s2:在每个嵌入式软件cpua和cpub中,定义临时的数据缓存区,在收到网络数据后,cpua和cpub将收到的数据保存在临时数据缓存区;9.步骤s3:在主任务中,分别将临时缓存区内的数据发给对系的cpu,收到对系数据存在g_other_g_synctagbuf(另一通道缓存区)中;10.步骤s4:在更新任务中,轮询本系g_synctagbuf(本通道缓存区)中的数据,并判断是否需要cpua和cpub使用或者删除相同的桩数据,如果是使用,则执行相应使用操作,如果是删除,则执行步骤s5;11.步骤s5:删除相应的桩数据。12.作为优选的技术方案,所述的步骤s1中的消息格式为:13.14.其中m_tagname为消息包括桩的名字,m_bopen为打开还是关闭桩,m_bsync为是否要在cpua和cpub同时打开,m_data为数据。15.作为优选的技术方案,所述的步骤s4中的执行相应使用操作具体为:16.步骤s4‑1:如果不需要同步执行收到的桩,则cpua和cpub分别将桩复制到全局区域中,在cpua和cpub的其他任务中,当需要用到某个桩时候,从g_switchtable(桩列表)中获取,不需要与对系使用的数据相同;17.步骤s4‑2:如果需要同步执行收到的桩,在cpua和cpub会分别将自己的临时数据区域的数据和由对系发送的数据做比较。18.作为优选的技术方案,所述的步骤s4‑2中将自己的临时数据区域的数据和由对系发送的数据做比较,具体为:19.步骤s4‑2‑1:如果一致,则将数据同步到g_switchtable,保证cpua和cpub在使用g_switchtable中的数据时,两个cpu使用的相同的数据;20.步骤s4‑2‑2:如果不一致,则不更新,继续循环等待cpua和cpub都接收到数据。21.作为优选的技术方案,若所述的步骤s4‑2‑2中不一致的周期超过设定阈值,则发送不同步命令给pc端,在pc端收到不同步命令后,重新发送同样的命令给cpua和cpub,然后重新执行步骤s2。22.作为优选的技术方案,所述的设定阈值为5。23.作为优选的技术方案,在更新g_switchtable时,会将g_switchtable里面的需要更新的tagname(桩名称)与已有的进行查询,如果相同,则不再进行添加。24.作为优选的技术方案,所述的步骤s5:删除相应的桩数据具体为:25.步骤s5‑1:不需要同步,在更新任务中,轮询g_switchtable中的数据,找到需要删除的tagname,将其删除,不需要cpua和cpub同步删除;26.步骤s5‑2:如果需要同步,在cpua和cpub会分别将自己的临时数据区域的数据和由对系发送的数据做比较,是否临时数据区内都收到删除桩命令。27.作为优选的技术方案,所述的步骤s5‑2具体为:28.步骤s5‑2‑1:如果cpua和cpub都收到删除命令,在更新任务中,轮询g_switchtable中的数据,找到需要删除的tagname,将其删除,保证cpua和cpub同步删除;29.步骤s5‑2‑2:如果不一致,不删除,继续等到cpua和cpub都接收到数据。30.作为优选的技术方案,所述的步骤s5‑2‑2中,当5个周期还是为不一致,则发送不同步命令给pc端,在pc端接收到不同步命令后,可重新发送同样的命令给cpua和cpub,然后重新执行步骤s5。31.与现有技术相比,本发明具有以下优点:32.1)本发明设计可实现二取二系统动态同时开桩或关桩,减少因为桩导致的二取二不一致;33.2)本发明可以在当个系统中开桩或者关桩;34.3)本发明适合嵌入式二取二系统,可移植性强;35.4)本发明采用了反馈机制,支持自动化测试,提高了自动化测试的正确率。附图说明36.图1为现有软件测试的流程图;37.图2为本发明软件测试的流程图。具体实施方式38.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。39.为了解决由于网络延迟,造成两个cpu接收命令不同步的情况,需要在嵌入式系统中对两个cpu是否收到命令进行同步;有时需要在单cpu进行发送命令,也不需要同步,针对二取二的系统,此专利设计一种二取二系统的测试方法,保证两系在执行命令时,能够同步执行相同的命令,如图2。40.本发明用于二取二系统的软件测试方法,该方法包括以下步骤:41.步骤s1:pc机通过网络发送命令给嵌入式系统的cpua和cpub,消息格式为:[0042][0043]消息包括桩的名字m_tagname,打开还是关闭桩m_bopen,是否要在cpua和cpub同时打开m_bsync;以及数据m_data。[0044]步骤s2:在每个嵌入式软件cpua和cpub中,会定义临时的数据保存区[0045]fault_insert_itemg_synctagbuf[max_open_stub];[0046]在收到网络数据后,cpua和cpub将收到的数据保存在临时数据缓存区;[0047]步骤s3:在主任务中,分别将临时缓存区内的数据发给对系的cpu,收到对系数据存在g_other_g_synctagbuf中;[0048]步骤s4:然后在更新任务中,轮询本系g_synctagbuf中的数据,并判断是否需要cpua和cpub使用或者删除相同的桩数据,如果是使用,则执行以下步骤,否则执行步骤s5;[0049]步骤s4‑1:如果不需要同步执行收到的桩,则cpua和cpub分别将桩复制到全局区域fault_insert_itemg_switchtable[max_open_stub]中,在cpua和cpub的其他任务中,当需要用到某个桩时候,从g_switchtable中获取,不需要与对系使用的数据相同;[0050]步骤s4‑2:如果需要同步执行收到的桩,在cpua和cpub会分别将自己的临时数据区域的数据和由对系发送的数据做比较;[0051]步骤s4‑2‑1:如果一致,则将数据同步到g_switchtable,保证cpua和cpub在使用g_switchtable中的数据时,两个cpu使用的相同的数据;[0052]步骤s4‑2‑2:如果不一致,则不更新,继续循环等待cpua和cpub都接收到数据;[0053]步骤s4‑2‑2‑1:当cpua和cpub接收数据一致时,则将数据同步到g_switchtable;[0054]步骤s4‑2‑2‑2:当5个周期还是不同步,则发送不同步命令给pc端,在pc端收到不同步命令后,可以重新发送同样的命令给cpua和cpub,然后重新执行s2;[0055]反馈cpua和cpub不同步状态,是方便自动化测试。在自动化测试时,会出现需要cpua和cpub同步,可能一系因为网络丢包而导致没有收到,因此加入反馈机制,会减少网络丢包而导致的没有达到预期结果的情况。[0056]为了避免重复添加相同的桩信息,在更新g_switchtable时,会将g_switchtable里面的需要更新的tagname与已有的进行查询,如果相同,则不再进行添加。[0057]步骤s5:删除某个桩时;[0058]步骤s5‑1:不需要同步,在更新任务中,轮询g_switchtable中的数据,找到需要删除的tagname,将其删除,不需要cpua和cpub同步删除;[0059]步骤s5‑2:如果需要,在cpua和cpub会分别将自己的临时数据区域的数据和由对系发送的数据做比较,是否临时数据区内都收到删除桩命令;[0060]步骤s5‑2‑1:如果cpua和cpub都收到删除命令,在更新任务中,轮询g_switchtable中的数据,找到需要删除的tagname,将其删除,保证cpua和cpub同步删除;[0061]步骤s5‑2‑2:如果不一致,不删除,继续等到cpua和cpub都接收到数据;[0062]步骤s5‑2‑2‑1:当cpua和cpub都收到删除桩命令,轮询g_switchtable中的数据,找到需要删除的tagname,将其删除,保证cpua和cpub同步删除;[0063]步骤s5‑2‑2‑2:当5个周期还是为不同步,则发送不同步命令给pc端,在pc端接收到不同步命令后,可以重新发送同样的命令给cpua和cpub,然后重新执行s5。[0064]具体实施例[0065]pc机发送桩名字为m_tagname:change_the_speer_value;m_bopen=true;m_bsync=truem_data[0]=0x11;[0066]当cpua和cpub收到网络消息后,将change_the_speer_value的消息放在临时缓存区g_synctagbuf[0]中;[0067]在测试主任务中,cpua会将g_synctagbuf[0]发给cpub,cpu会将g_synctagbuf[0]发给cpua。每个cpu都会有本地缓存数据g_synctagbuf[0]和对系缓存数据g_other_synctagbuf[0][0068]当判断m_bsync=true时,需要将本地的g_synctagbuf[0]和g_other_synctagbuf[0]进行比较:[0069]如果两个都收到change_the_speer_value,则将数据同步到g_switchtable,并清空g_synctagbuf[0]和g_other_synctagbuf[0]内的数据;[0070]如果没有收到,则继续等待,直到g_synctagbuf[0]和g_other_synctagbuf[0]内的数据相同,[0071]如果在5周期内还不相同,则通知pc端重新发change_the_speer_value数据。[0072]以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3