理论教育 基于软件的验证方法-汽车嵌入式系统手册

基于软件的验证方法-汽车嵌入式系统手册

时间:2023-08-26 理论教育 版权反馈
【摘要】:基于软件的验证在开发阶段的早期为分析其应用状态提供了一种强有力的工具。图12.11 时序层面2——动态时序仲裁和AI层组合起来后,这个时序层面在没有考虑基本软件层引起的延迟的情况下,提供了非常精确的帧的更新。

基于软件的验证方法-汽车嵌入式系统手册

基于软件的验证在开发阶段的早期为分析其应用状态提供了一种强有力的工具。

12.3.1.1 FlexRay抽象层次

对于每个仿真来说,计算工作都是一个大问题。要建立一个完整的FlexRay网络模型是一项异常复杂的工作:分布式ECU——它们中的每一个ECU都包含FlexRay控制器和带有系统软件层和应用层的MCU。此外,这些网络之间可以通过网关与其他网络连接,如图12.1所示。

为了最小化这种仿真的复杂度,仅对应用程序的建模列出全部细节。由于利用了FlexRay协议确定性的时序行为,所以FlexRay控制器和网络模型都被大大简化了。因此,我们将会介绍总体架构和时序层面上所谓的抽象层。

12.3.1.1.1 架构层面

如同在12.1.1.1节介绍的一样,FlexRay网络架构由通过共享通信媒介互相连接的ECU构成。每个ECU包括一个或多个FlexRay控制器和MCU。应用层和基本软件层在MCU上运行。应用层包括一系列软件组件,它们实施实际的应用功能[例如,防抱死系统(ABS)的计算程序]。系统软件层通过FlexRay控制器为传送和接收数据提供了工具和服务。应用软件组件利用基本软件层提供的服务,来和在其他ECU上运行的软件组件通信。

图12.8描述了这种带两个接口的ECU架构。首先在应用层和基础软件层之间存在所谓的应用接口(AI),其次在MCU的软件基础层和FlexRay通信控制器之间存在控制器-主机控制接口(CHI)。这些接口方便了仿真的进行。

1.应用接口

在这个层面上,仿真模型拥有应用软件组件的所有功能。模拟基本软件层和FlexRay控制器的硬件的功能提供应用接口(AI)。

AI是一个基于信号的接口,可以依照基本软件层面以及FlexRay控制器的时序,发送更新的信号。在仿真中使用这种接口可以对仿真模型做相当程度的简化。

这里只需要考虑信号更新的时序问题。像信号是如何被打包成帧以及FlexRay的时序这样的细节问题,建模时无须考虑它们。

2.控制器-主机接口

978-7-111-52251-5-Part04-48.jpg

图12.8 架构上的抽象层面

应用软件组件和基本软件层的所有功能在这个层面上进行仿真,而与此同时,FlexRay通信控制器的功能也被仿真,因此提供了CHI(控制器-主机接口)抽象。

CHI可以被建模成一个基于缓冲的接口,它根据FlexRay的时序传递帧的更新。在模拟中,建立这样的接口也使仿真简化不少。这里仅需考虑帧更新的时序问题。FlexRay控制器功能,如时钟同步和启动等问题在建模时无须详细考虑。

3.物理层接口

最后也可以看到这个接口:物理层接口(PLI),它位于FlexRay通信控制器功能和网络物理层之间。这个层面的仿真基本上没有什么意义,这是因为仿真精确的位时序(在这个抽象层上是需要这样的时序的)需要大量的计算工作。但是要注意的是,对于基于硬件的验证(12.3.2节),PLI是容易产生故障的一个重要接口,故应该在验证流程中把它考虑进去。

12.3.1.1.2 时序层

通过选择足够的时序分辨率,也将大大促进仿真。由于FlexRay协议的时间驱动特性,数据的传输是由预设的时序点触发的。这种时序层次(12.1.2节)可以用来引入时序层面的抽象。

1.时序层1:通信循环

在这个时序层面上,帧和所包含的信号的更新是以通信周期的尺度进行的。如图12.9所示,在每个通信周期的开始和结束处,所有信号和帧的内容都被更新了。待传输的数据在通信周期的开始被写入,待接收的数据在通信周期的结束处被读取。

978-7-111-52251-5-Part04-49.jpg

图12.9 时序层面1——通信循环

这个时序层可以和AI层混合优化,其目的是提供快速而十分抽象地了解信号的通信时序。假定由基本软件层引起的通信延迟足够小,以至于在每个通信周期的末尾都可以获得更新的信号。然而,在和CHI组合后,这个时序层就不能提供必需的精度以分析由基本软件层引起的通信延迟的影响细节。

2.时序层2:静态时隙和简单动态区间仲裁

这是一个其中的帧以及包含的信号的更新以一种更详细的方式执行的更加准确的层面。在静态区间,静态时隙的时序被模拟了出来。待传输的数据在每个静态时隙的开始被读取,静态时隙内接收到的数据是在时隙结束时提供的。图12.10显示了静态区间时隙1数据的更新次数。静态区间的其他时隙以同样的方法进行更新。

978-7-111-52251-5-Part04-50.jpg

图12.10 时序层面2——静态时序仲裁

对于动态区间,仅模拟该区间的开始端和结束端。待传输的数据在开始端被读取,在动态区间的结束段提供已经接收到的数据,如图12.11所示。

这个时序层可以和CHI层组合起来优化,从而分析由于基本软件层导致的传输延迟影响。例如,AUTOSAR FlexRay接口层包含着和FlexRay通信同步的通信操作,即它们对于FlexRay缓存的读、写入是同步的。这些通信操作的时序设置确定更新传输数据可行时刻的最早点和最晚点。这种影响可以和应用层的软件组件综合考虑来分析。

978-7-111-52251-5-Part04-51.jpg

图12.11 时序层面2——动态时序仲裁

和AI层组合起来后,这个时序层面在没有考虑基本软件层引起的延迟的情况下,提供了非常精确的帧的更新。但是这样的考虑可能会导致有关数据传送时刻最早点和最晚点的错误估计。

3.时序层3:静态时隙和高级动态区间仲裁(www.daowen.com)

这个时序层面是时序层2的优化。采样点的选择和时序层2的方法相同;然而,它更详细地模拟了微时隙媒介存取方案的行为。这种基于优先级算法,在动态区间最费力的部分出现峰值载荷的情况下,延迟了帧的传输(见12.1.2节)。

4.更加具体的方法

额外的模拟方法包括以更详细的方法模拟动态区间的时序。

12.3.1.2故障注入

仿真模型中的故障注入可以使得设计师在系统开发的初级阶段就可以分析系统的可靠性特性。其主要目标为:

(1)故障去除——测试容错机理的正确行为;

(2)故障预测——在故障情形下研究系统的鲁棒性。

在故障注入的时刻,仿真模型提供了一种完全控制故障位置和时间点的工具。在简化的FlexRay控制器和网络模型中,我们关注于可以看见的故障对那些先前描述的架构和时序层的影响。

在模拟模型中,AI和CHI一起在构架层被模拟成共享的存储。所以,按照选取的时序抽象层,这个共享的存储内容可以用于故障注入的访问。

12.3.1.2.1 应用接口

应用接口(AI)上的故障注入直接为支配与研究应用模型的行为提供了帮助。应用接口(AI)提供访问基本软件层的服务。在仿真模型中,这些服务是以非常简单的方式建模,并提供信号更新和比如NM的状态信息服务。

信号的更新在时域和值域中可以很容易受到影响。时域方面的影响取决于对应FlexRay协议的更新周期的、所选择的时序抽象层。与CAN网络其低优先级数据的周期可能剧烈跳动、甚至在无故障的情形下也剧烈跳动相比,FlexRay在静态区间和动态区间的保真动态提供确定性的传输周期作为设计过程的规定。即使在应用出错的情况下(但此时假定基本软件层和FlexRay控制器仍在正常工作),信号的更新周期仍然保持常数;然而,信号的值可能是错误的或者是无时效的。这种协议性质极大地促进了时域中应用故障的模拟:在规定的传输周期内在应用接口(AI)处,要么是正确的信号可用,要么是没有正确的信号,这些情况下都能仿真。在动态区间的最费力的部分内,在峰值负荷情形下信号的更新也可能丢失或者延迟,这也就是说,没有具体的故障。这种情况也可以通过去除AI中部分信号的值进行模拟。

值域偏差可以通过去除由AI提供的正确信号的部分内容来实现。这类故障模拟分析了如果存在错误输入数据,应用模型是如何反应的。通过关注通信网络的故障,这种方法研究了当存在矛盾数据传输的情况下整个系统的鲁棒性。由于这种故障,可能使得仅有部分ECU收到了正确的信号,而其他的ECU收到的是没有更新的信号。

基本软件层的其他功能比如NM,也可能受故障注入影响。可以改变一个或者一部分ECU的服务状况来获得错误状态,并分析这些应用模型是如何对这些故障做出反应的。

对于这些类型模拟AI处故障的方法,时序层1具有足够的尺度。当还要考虑基本软件层引起的延迟时,更精细尺度层面(即采用更高一级时序层面)的研究只提供实际数据。因此,下面介绍CHI层面是必要的。

12.3.1.2.2 控制器-主机接口

CHI上的故障注入旨在分析基本软件层和应用模型的作用。CHI提供存取控制器的状态参数与FlexRay CC的缓存内容。在仿真模型中,数据的传输是通过在规定的时序抽象层更新CHI的所有控制器状态参数来模拟的。基本软件层和应用模型则利用这些更新后的数值。

在这个接口上,所有可能发生在FlexRay控制器或者通信网络上的故障都可以被模拟。这些故障包括无效的帧接收、CRC错误、传入传出连接错误、通信通道错误,等等。

FlexRay技术规范既没有指定FlexRay控制器中CHI的寄存器,也没有规定缓存的布置。相反,描述了提供的服务以及信息的内容。对于故障模拟,最重要的服务包括以下几种。

1.时钟同步

FlexRay协议要求所有的控制器相互共享一个公共时基,其目的在于以时间驱动的方式完成执行、接收、传输的操作。为了建立这样一种公共时基,采用了分布式容错时钟同步算法[11]。只要一上电,每个控制器就会执行具体的启动程序来建立公共时基。在运行过程中,每个控制器都执行同步算法以保持和其他控制器的时钟一致。如果一个控制器没有同步,那么它就不可能充分参与数据传输。

存在多种可能使得一个控制器没有同步。这些可能包括:其他控制器没有上电;FlexRay通信通道受到破坏;或者FlexRay控制器的时钟频率不合规定,等等。

为了分析基于FlexRay应用的运行情况,我们只从一个很抽象化的角度,建立时钟同步算法模型。这种抽象视角有两种模式:FlexRay控制器的同步与非同步模式。在同步模式下,控制器可以正确接收和传输帧信号;在非同步模式下,控制器不能正确地接收到帧信号。进一步地说,当处于非同步状态时,假定控制器不会传输任何帧信号。

2.帧的接收

对于每一个被接收到的帧,“接收”状态在CHI中体现。这个接收状态表明帧是否已经被正确接收,或是在接收过程中是否发生了一些问题。在我们简化了的FlexRay控制器模型中,CHI中的帧接收状态是修改的,因此不同的故障情况是可以模拟的。这些故障情况包括:无效的CRC、校验和错误、编码冲突、时钟同步问题,等等。这些情况可以影响一个或一系列的帧,例如:

•一个具体节点上接收到的所有帧;

•一个具体通道上接收到的所有帧;

•一个具体周期内接收到的所有帧;

•其他子集的帧。

这种选取受影响的帧的方法使得不同类型的故障得以有效地注入系统。在仿真模型中,我们接着就可以准确地分析基本软件层和应用层的行为,比如可以分析是否准确地检测到这些节点或通信通道的故障。

3.帧传输

一个帧传输的成功或者失败都会影响到所有接收控制器CHI中接收状态的值。因此,修改所有接收控制器的CHI,就可以在仿真模型中模拟不同的传输故障。此外,如果传输控制器显示确认发出了一个失败的传输给发射器,那么CHI传输控制器必须可以修改。

4.时序抽象层的选取

CHI上的故障注入可以分析基本软件层和应用模型的行为。当应用模型的反应可以在AI中研究时,基本软件层的响应对这种故障注入来说具有特定的价值。时序层1对于这种研究是不够的,因为它不能提供在CHI上可获得帧的最早时刻点。时序层2、3以及更详细的方法,则可以提供足够信息进行CHI上的故障仿真。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈