基于can的嵌入式软件可靠性测试中的通信方法

文档序号:6602273阅读:244来源:国知局
专利名称:基于can的嵌入式软件可靠性测试中的通信方法
技术领域
本发明属于嵌入式软件可靠性测试技术领域,尤其是一种嵌入式软件可靠性测试 中的通信方法。
背景技术
软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测试。软 件可靠性测试的方法从概念上讲是一种面向需求,面向使用的黑盒测试方法。为了暴露软 件在使用过程的缺陷,软件可靠性测试需要运行大量的测试用例。软件可靠性测试是长时 间大规模的测试,对测试数据收发的实时性与确定性有很高的要求。由于嵌入式系统本身资源的限制,目前针对嵌入式软件可靠性测试大都采用宿主 机/目标机的模式,其基本结构如

图1所示。其中宿主机功能分为两部分离线部分和在线 部分。离线部分的功能包括测试用例及测试方案生成,测试脚本编写,测试过程监控,测试 回放,测试结果分析和处理,该部分功能不需要通讯的实时性;在线部分的功能包括解释 测试脚本,驱动目标机测试案例,对数据进行仿真处理,接收测试结果,实时比较,测试结果 实时显示,这部分的对通讯的实时性有严格要求。在一些较严格的嵌入式可靠性测试平台 中将这两部分严格分开,离线部分采用PC机,使用一般的PC桌面系统,如Windows,Linux。 实时处理部分采用工作站或微机,并使用实时操作系统,如VxWorks。目前宿主机的实时处 理部分与目标机大多采用以太网连接。虽然以太网技术较为成熟,但用于嵌入式软件测试 也有其缺点。由于以太网采用的是带有冲突检测的载波侦听多路访问协议(CSMA/⑶),无法 保证数据传输的实时性要求,而且以太网采用超时重发机制,单点的故障容易扩散,造成整 个网络系统的瘫痪。

发明内容
为了克服已有的嵌入式软件可靠性测试通信方法的实时性差、可靠性差和灵活性 差的不足,本发明提供一种实时性良好、可靠性好和灵活性高的基于CAN的嵌入式软件可 靠性测试中的通信方法。本发明解决其技术问题所采用的技术方案是一种基于CAN的嵌入式软件可靠性测试中的通信方法,包括相互通信的宿主机和 目标机,所述通信方法采用基于CAD总线协议,采用CAN扩展帧的ID域,PDU域根据ID域 的不同进行动态调整宿主机和目标机的三种不同类型的通讯方式。进一步,CAN扩展帧的ID域为29位,包括有紧急帧的标志,用1个bit表示,用于 目标机出现异常需要立刻报告给宿主机时使用,以及宿主机发送紧急处理命令时使用;宿 主机以及目标机的ID,用8个bit表示CAN帧是哪个节点发出的;帧结束标志,用1个bit 表示;功能号,用5个bit表示,共32个功能号;其余为保留位,用于扩展。
再进一步,CAN扩展帧的ID域中定义32各功能号分为四组,第一组的功能号为 0 7,暂时保留,作为以后扩展所用;第二组的功能号为8 15,对应的通讯方式为宿主机和目标机一应一答;第三组功能号为16 23,对应的通讯方式为目标机发送,宿主机不 需要应答;第四组功能号为24 31,对应的通讯方式为宿主机发送,目标机不需要应答。本发明的技术构思为CAN (ControIler Area Network)是BOSCH公司为现代汽车 应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性、灵活性等优点现已 广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部 门本文基于嵌入式软件可靠性测试的特点,在CAN总线协议的基础上提出了一种嵌 入式软件可靠性测试中宿主机和目标机通信的方法。该方法简单易用,并且具有高可靠性, 高实时性,高灵活性的特点。本发明的有益效果主要表现在实时性良好、可靠性好
图1是嵌入式软件可靠性测试基本结构图。图2是通信网络结构图。图3是CAN扩展帧的ID域组成示意图。图4是宿主机执行第8号功能的第一帧PDU的示意图。图5是宿主机执行第8号功能的随后的帧PDU的示意图。图6是执行第8号功能目标机的回复帧PDU的示意图。
具体实施例方式下面结合附图对本发明作进一步描述。参照图1 图6,一种基于CAN的嵌入式软件可靠性测试中的通信方法,包括相互 通信的宿主机和目标机,所述通信方法采用基于CAD总线协议,采用CAN扩展帧的ID域, PDU域根据ID域的不同进行动态调整宿主机和目标机的三种不同类型的通讯方式。CAN扩展帧的ID域为29位,包括有紧急帧的标志,用1个bit表示,用于目标机 出现异常需要立刻报告给宿主机时使用,以及宿主机发送紧急处理命令时使用;宿主机以 及目标机的ID,用8个bit表示CAN帧是哪个节点发出的;帧结束标志,用1个bit表示; 功能号,用5个bit表示,共32个功能号;其余为保留位,用于扩展。CAN扩展帧的ID域中定义32各功能号分为四组,第一组的功能号为0 7,暂时 保留,作为以后扩展所用;第二组的功能号为8 15,对应的通讯方式为宿主机和目标机 一应一答;第三组功能号为16 23,对应的通讯方式为目标机发送,宿主机不需要应答; 第四组功能号为24 31,对应的通讯方式为宿主机发送,目标机不需要应答。本发明CAN网络基本结构如图2所示。根据具体情况分配目标机执行测试案例以 最大限度地利用总线。某些情况下我们可能需要对某个测试案例的一些测试数据进行重复 测试,所以本发明还提供了分组测试的功能。每个目标机都有ID和组ID,每个目标机的初 始化组ID都为0。根据需要由宿主机分配组ID。如错误!未找到引用源。中节点1和节 点2为同一组CAN本身具有多主/从特点,但为简化通讯控制,本发明使用CAN通信需要区分主 从。即宿主机为主,目标机为从。从目标机的角度来说,通讯的方式按两种情况
被动状态一般情况下,目标机处于被动状态。通讯使用主从模式,即宿主机发 送请求,目标机予以答复。 主动状态在特殊情况下,如目标机检测到硬件故障或者操作系统严重错误时, 需要临时迅速地将含有当前状态的紧急报文传送给宿主机,在这种情况下,要求发送的报 文简短而且优先级高,以尽快让宿主机处理。
本发明使用具有29位CAN_ID的扩展帧,为了提高CAN帧的利用率,需尽可能地利 用CAN_ID、PDU这两部分。其中,CAN_ID既用于表示节点ID,又作为节点发送数据的优先 级,数字越低优先级越高。PDU用于承载有效数据。在29位的CAN_ID中定义了网络中各 ID、帧性质(紧急与否)、帧结束状态(多帧与否)、帧功能号等,同时还保留了部分的位以 便扩展。PDU部分按照CAN2. 0协议的规定使用最多8个字节。CAN_ID域有29个bit,如图3第一行所示。在传送时,按照ID28 IDO的顺序按 位传送。为了处理方便,使用4个byte来表示这29位,如图3第3行所示。其中byteO的 最后3位是无效的。在图3的第二行中,详细定义了各个位的功能。DURG 紧急帧的标志。当所发送的帧是紧急帧时,该位为0,非紧急帧时该位为1。 因为在CAN中,0的优先级高。紧急帧用于目标机出现异常需要立刻报告给宿主机时使用, 以及宿主机发送紧急处理命令时使用。紧急帧应该尽可能短而且少。2)B_ID7 B_ID0 宿主机以及目标机的ID。在CAN里面,不存在源地址和目的地 址。用这8个bit表示CAN帧是哪个节点发出的。任何节点都可以过滤不需要接收的节点 的帧。全0是宿主机ID,体现了宿主机的优先级最高。1 127是目标机ID。3)EOF 帧结束标志。由于使用主从通讯模式,允许一个节点连续发送多个CAN帧。 当节点后续还有CAN帧要发送,则该位置1 ;若不继续发送了,则该位置0。宿主机在接收多 个连续帧时需要设置超时时间,防止节点故障或者总线故障而导致宿主机无穷等待。 4) FUNC4 FUNCO 功能号。每个CAN帧都表示对某种功能的请求或者应答。对某 一请求,应答方填写与请求方相同的功能号。5) R 保留位,用于扩展时使用。PDU域的内容和长度根据CAN_ID域中的功能号的不同而改变。在CAN_ID域中 FUNC4 FUNCO代表功能号,共5个bit,所以有32种功能号可用。在宿主机和目标机的通 讯方式中有三种不同的类型·需要宿主机目标机一应一答的·目标机发送,宿主机不需要应答的 宿主机发送,目标机不需要应答的根据不同的功能,将这32个功能号分为4组。第一组的功能号为0 7,暂时保留,作为以后扩展所用。第二组的功能号为8 15,这组的功能需要宿主机和目标机一应一答,目前规定 了 8 11功能号的功能。当需要目标节点执行某个测试案例时,宿主机执行8号功能,可 以连续发送多帧(EOF为结束标识)。第一帧,如图4所示,PDUO为节点号,PDU1-2为测试 案例ID,PDU3-4为测试数据ID (1 65535),PDU5-7为功能执行ID,宿主机每执行一次8 号功能,此ID值加1。若该测试案例没有参数,那么测试数据ID为0,EOF为0,请求帧发 送结束。否则宿主机需要继续发送测试数据,可多帧发送,其PDU组成如图5所示,PDU0-2为执行ID,PDU3-7为测试数据。目标机回复执行该测试案例的结果,如图6所示,PDU0-2 为执行ID,PDU3-6为执行结果;9号功能和8号功能类似。唯一的不同是宿主机中第一帧 PDUO为组号。目前传输的数据类型只支持基本数据类型。一方面是考虑到易用性,另一方 面是因为大都测试案例的参数都只用到了基本数据类型。如果测试案例中用到其它的数据 类型或数组,那么我们可以将测试数据放到目标机,并进行编号,宿主机通过发送编号来指 定测试数据;当宿主机发觉某个目标机出现异常时,可以执行第10号功能询问该目标机的 健康状况,其中PDUO为目标机的ID。目标机回复健康状况,PDUO为软件状况,PDUl为硬件 状况;第11号功能是请求所有目标节点发送分组信息,宿主机不使用PDU域,目标机回复每 个节点的组号,PDUO为组号
第三组功能号为16 23,这组的功能只需目标机发送,宿主机不需要应答的,该 组的功能是将目标机的错误发送给宿主机,目前规定了 16、17号的功能。当目标机检测到 的测试用例出错时,目标机执行16号功能,发送测试用例的编号和错误信息。该帧为紧急 帧,PDU0-2为测试ID,PDU3为错误信息;当目标机出现严重错误时,目标机执行17号功能, 发送错误信息。该帧为紧急帧,PDUO为硬件状态,PDUl为软件状态第四组功能号为24 31,这组的功能只需宿主机发送,目标机不需要应答的,目 前只规定了 24 28号的功能。需要某个节点复位时,宿主机执行第24号功能,向某个节 点发送复位请求,PDUO为目标机ID,目标机复位;需要某些节点禁止或开启目标机发送紧 急帧时,宿主机执行第25号功能,PDUO = 1允许,PDUO = 0不允许,PDUl PDU7为目标 机ID。目标机初始化时为允许发送紧急帧;需要目标机执行某个特定应用时,宿主机执行 第26号功能,PDUO为节点ID,PDU1为已定义的应用程序编号,目标机执行该编号的应用程 序;27号功能为宿主机对目标机分组,PDUO为组号,PDUl 7为目标机ID ;28号功能为清 除组别,即设置所有目标机的组别为0。负载率是通讯网络的一个重要指标,CAN总线的负载率是指系统处于忙状态的
时间百分比,即各CAN帧占用总线时间百分比之和。准确的负载率计算公式可以帮助我
们在进行测试之前设计一个合理测试方案,在测试过程中宿主机也根据该公式调整策略。
一般情况下嵌入式软件测试过程中主机周期性地请求目标机执行案例。假设其执行周期
为T。y。le,宿主机请求帧在总线上的传输时间为Tsend,目标机回复帧在总线上的传输时间为
T ,+T
Tresp_。那么该组报文帧总线的占用率^为几=τ 若网络中有k个目标节点,那
cycle
么总线的负载率n为7 = Σ二礼。设CAN网络选定的总线传输速率为,则总线上的位传 输时间为IzVbus,若宿主机请求帧的位长度为Lsmd,目标机回复帧的位的总长度为Lresp。_,
则?^ =&, ;— =^=。由CAN协议可知CAN报文数据帧的扩展格式报文头为64位,
^bus^bus
数据帧的数据域的长度为n个字节,其中n为1 8之间的整数,那么Lteato = 64,Ldata = SXn5CAN总线采用了一种称为位填充的编码机制,其原理为发送方在发送五个连续相同 的位后,自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。所以当遇到如 “1111100001111”或“0000011110000”的形式时有最多的填充位。那么,长度为χ的位序列
最大的位填充个数为pfj。CAN协议规定CRC界定符、ACK场和帧结束为固定形式,不进行位填充。设Lstuff为最大的填充位长度,在CAN扩展帧中,它由CAN帧前39位需要的填充位数Lsl和数据场Ldata及CRC校验位L。,。需要的填充位数Ls2两部分组成,设Lerc为CRC校验 位的长度,Ldata为PDU长度,那么 所以一个CAN扩展帧的传输的最大位长度为 由上面的公式可知,Lftame是数据域长度η的函数,设Lftame = f (η)。在嵌入式软件 可靠性测试的过程中,几乎所有时间只用到上述描述功能中的第8号功能和第9号功能。设 一个案例的测试数据长度为η个字节,由上述描述的方法可知一个请求帧最多包含5字节 的测试数据。如果η为0,请求帧只需一个CAN帧。发送这个请求帧所需的长度 设目标机返回的测试结果长度为m(m= 1,2,3,4)个字节。回复帧PDUO 2为执 行ID,那么目标机回复的长度Lheato = f(m+3);设每个目标节点或每个组为一个node,每个 node包含&个目标机(对于单个节点,其值为1,对于一个组,其值为组的大小)。若网络 中有k个nodes,每个node的执行周期为Ti,那么网络的负载率η为 按照图2所示的网络结构图进行连接,将宿主机和目标板都接入CAN网络。每个 目标板需定义好各自的ID,其初始组ID都为0。本方法的硬件环境1.具备CAN控制器的开发板若干用作目标节点(网络目标节点个数最大值为 127)。2. CAN总线若干条用来连接成CAN网络。3.烧写器用来烧写应用程序至开发板。4. PC机或小型机一台用作宿主机5. CAN收发器一个用于将宿主机接入CAN网络本方法的软件环境1. CAN调试工具用来控制宿主机与目标机的交互,监控CAN网络等。可使用自行 开发的软件或已有的工具(ZLGCANTest等)。2.开发板IDE环境用来编写目标机代码,以及将代码编译烧写至开发板。对于CAN总线协议,为了保证网络中系统消息的实时性,推荐的最大带宽利用率为20% 30%。宿主机可通过上文提 供的CAN网络负载率计算公式(4),计算测试方案的 网络负载率并根据实际情况进行调整。
权利要求
一种基于CAN的嵌入式软件可靠性测试中的通信方法,包括相互通信的宿主机和目标机,其特征在于所述通信方法采用基于CAD总线协议,采用CAN扩展帧的ID域,PDU域根据ID域的不同进行动态调整宿主机和目标机的三种不同类型的通讯方式。
2.如权利要求1所述的基于CAN的嵌入式软件可靠性测试中的通信方法,其特征在于 CAN扩展帧的ID域为29位,包括有紧急帧的标志,用1个bit表示,用于目标机出现异常 需要立刻报告给宿主机时使用,以及宿主机发送紧急处理命令时使用;宿主机以及目标机 的ID,用8个bit表示CAN帧是哪个节点发出的;帧结束标志,用1个bit表示;功能号,用 5个bit表示,共32个功能号;其余为保留位,用于扩展。
3.如权利要求1或2所述的基于CAN的嵌入式软件可靠性测试中的通信方法,其特征 在于CAN扩展帧的ID域中定义32各功能号分为四组,第一组的功能号为0 7,暂时保 留,作为以后扩展所用;第二组的功能号为8 15,对应的通讯方式为宿主机和目标机一 应一答;第三组功能号为16 23,对应的通讯方式为目标机发送,宿主机不需要应答;第 四组功能号为24 31,对应的通讯方式为宿主机发送,目标机不需要应答。
全文摘要
一种基于CAN的嵌入式软件可靠性测试中的通信方法,包括相互通信的宿主机和目标机,所述通信方法采用基于CAD总线协议,采用CAN扩展帧的ID域,PDU域根据ID域的不同进行动态调整宿主机和目标机的三种不同类型的通讯方式。本发明提供一种实时性良好、可靠性好和灵活性高的基于CAN的嵌入式软件可靠性测试中的通信方法。
文档编号G06F11/36GK101867570SQ201010171389
公开日2010年10月20日 申请日期2010年5月13日 优先权日2010年5月13日
发明者张翼, 李红, 杨国青, 罗端, 胡博, 邓俊 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1