搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介

前言

本系列请点击:《搞一下CP AUTOSAR入门》


所有系列请点击:《汽车电子系列分享》


在汽车电子ECU开发中,有一个不得不提的概念就是功能安全,对于从事汽车电子软件开发的工程师而言,功能安全等级的高低决定了设计开发ECU的水平,同时对于功能安全开发的标准ISO26262,也从各个阶段定义了汽车电子ECU开发的规范,今天所介绍的模块是一个和功能安全密切相关的模块,是ISO26262中对功能安全中的Timing的监控保护机制相关的模块。


​1、ISO26262对Timing的要求


在ISO26262-6:2018的附录D中对软件层面的Freedom from interference提出了三点要求,分别是Memory、Timing和Exchange Of Information。本文重点对Timing相关的保护机制做介绍,对于Timing的要求提出了如下关注要点:
blocking of execution
deadlocks
livelocks
incorrect allocation of execution time
incorrect synchronization between software elements


针对ISO26262提出的对Timing的监控和保护,在CP AUTOSAR中主要依靠两个主要的功能块实现。分别是OS的SC4等级的时间保护机制,还有就是利用WdgM整个功能站实现对时间的监控。


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第1张图片


其中OS的时间保护主要对Task级别进行时间保护,对Task执行的时间,嵌套中断的时间进行分析和保护,这块的功能后期会在OS的介绍中体现。


本篇主要介绍WdgM对时间的监控保护机制。WdgM对时间的保护和监控主要从Alive Supervisor、Deadline Supervisor以及Program Flow Supervisor三个层次实现时间的保护和监控。


2、WdgM功能Overview


WdgM主要用作程序执行中和时间相关的监控,在CP AUTOSAR的架构中对监控的实体叫做Supervised Entities(SE),检测的SE特定的位置叫做Checkpoint。


监控的概念主要体现在三个方面,分别是监控特定SE的执行频率,避免执行频率过快和过慢;监控两个Checkpoint的Deadline以及对特定的程序流进行监控(多个Checkpoint的执行逻辑)。


WdgM监控的SE可以是和功能安全相关的Function,也可以是一个SWC或者CDD甚至一个BSW模块。对于CP AUTOSAR中提供的监控模块主要包括WdgM、WdgIf、Internal Wdg Driver、External Wdg Driver。


根据系统定义和软件架构的设计可以选择对应的内外部驱动实现对SE的监控,下图展示了WdgM监控的整个逻辑,在相关的SWC或者CDD中设置对应的Checkpoint,然后周期的触发WdgM的服务,从而对程序流监控,而在监控出现时间的偏差则会触发Wdg Driver触发对应的Reaction。


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第2张图片


CP AUTOSAR ECU中的OS是基于OSEK操作系统而扩展的。所有扩展功能被分配到不同的操作系统扩展类型中,采用SC1-SC4表示,其中,SC1表示只使用调度表功能;SC2包含了调度表和时间保护;SC3包含了内存保护和调度表;SC4包含了调度表/时间保护和内存保护。同时操作系统也可以支持多核处理器。


​3、Alive Supervision


Alive Supervision主要用于对周期的函数或者任务做监控,主要是避免周期的函数或者任务执行频率太快或者太慢。在Alive Supervision中主要包含下面的配置参数:


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第3张图片


WdgMExpectedAliveInidications:
主要用于在一次Checkpoint中定义SE期望通知的次数


WdgMSupervisionReferenceCycle:
主要用于定义SE参考的周期


WdgMMinMargin、WdgMMaxMargin:
分别定义SE的Checkpoint执行次数的上下限


SE的WdgM_CheckpointReached每调用一次,对应的Checkpoint的Alive Counter就会加1,主函数在WdgMSupervisionReferenceCycle会去检测Alive Counter的数目。


只有Alive Counter在该周期内属于(Expected – Min Margin; Expected + Max Margin)范围就认为该SE处于正常的模式,如果Alive Counter小于(Expected – Min Margin)则认为所监控的SE执行太慢,相反Alive Counter大于(Expected + Max Margin),则认为SE执行的太快。


​4、Deadline Supervision


​Deadline Supervision主要用于监控非周期运行的SE,主要定义了某个事件发生后,在特定的时间窗内去执行相应的SE的Checkpoint,一般认为在事件发生后在定义的最短时间和最长时间内去执行相应的Checkpoint,认为程序属于正常的执行,如果在事件发生后执行相关SE的Checkpoint时间小于最小的时间,或者大于最大的时间去执行SE的Checkpoint都认为是错误的。在定义中主要配置下面的参数:


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第4张图片


WdgMDeadlineStartRef:
Deadline Supervision开始的参考事件


WdgM_CheckpointReached:
最终Deadline Supervision监控的Checkpoint


WdgMDeadlineMin:
从Ref事件到WdgM_CheckpointReached允许的最短时间,如果短于该时间,认为是错误


WdgMDeadlineMax:
从Ref事件到WdgM_CheckpointReached允许的最长时间,长于该时间也认为是错误的


​5、Logical Supervision


Logical Supervision也叫做程序流监控,主要用于监控程序是否按照正确的逻辑转换条件去执行。对于每一个Logical Supervision都有一个Graph来表示SE中各个Checkpoint点在控制流上的转换关系。下面有一段SE中简单的程序流如下:

搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第5张图片


对于这段简单的程序流设置了CP0_0到CP0_6的程序流监控,可以定义一个转换Graph来实现对该代码程序流以及转换关系的监控,如下所示:


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第6张图片


在逻辑监控中主要包含两大类Graph,分别是内部Graph和外部Graph。其中在内部的Graph中SE的所有Checkpoint各个连接和转换都属于一个Graph,通过Graph中的内部转换实现对于一个SE来说,可以有0个或者一个内部的Graph;对于外部的Graph而言,至少有两个Checkpoint属于不同的SE,Checkpoint的连接和转换通过外部转换实现。


6、Local Status & Global Status


在WdgM中每一个SE都有一个自己的Local Status来表示自己SE的Alive/Deadline/Logic Supervision的状态,同时WdgM还有一个全局的Global Status来表示整个监控功能的状态。


在WdgM初始化完成后每个SE的各个子功能监控的Local Status以及Global Status的状态都是OK的状态。每个SE的Local Status以及Global Status都包含了OK、DEACTIVATED、FAILED、EXPIRED状态。


在每个SE的功能做监控的时候,会根据监控的结果在MainFunction中设置对应的Local Status。其中Alive Supervision有单独的状态设置,而Deadline和Logic Supervision共用一个Local Status。


在使用的时候可以根据每个SE的三个监控设计的条件在MainFunction中会设置对应的状态,同时MainFunction根据定义的所有SE的状态输出对应的Global Status,如果最终的Global Status出现错误的时候,User可以认为系统的时间或者函数的调度功能已经导致程序出现了Error,那么可以去触发相应的错误处理以及故障反应.


下图展示了整个WdgM的状态管理,对于具体的WdgM的状态切换可以参考CP AUTOSAR WdgM的标准。


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第7张图片


7、Error Handling And Reaction


对于WdgM对时间以及程序执行的相关错误处理主要包括以下几个方面;


① 在检测到Global Status出现错误的时候,可以通过回调函数通知特定的SWC模块或者CDD模块,让上层的应用模块进行恢复机制的处理。


② 将错误的状态报告DEM,通过DEM进行统一的故障管理和处理


③ 重新复位对应的函数以及相关的Task所在的Partition,或者直接Shutdown对应的Partition.


④ 调用错误处理函数,将ECU进行软件复位


⑤ 通过外部Wdg模块进行MCU复位,切断MCU的供电。
对于具体的错误处理逻辑要结合整体的功能安全目标出发反应即可


8、Aurix Tricore Wdg Timeout监控实现


除了上面的时间相关的监控,程序执行中的Timeout也是一个重要的监控。在Aurix Tricore的芯片中有四个Wdg模块,其中一个是安全看门狗,然后三个核每一个核各有一个自己的Wdg。


通常在使用的时候可以将每个核的Wdg用于每个核的WdgM来监控对应的程序是否Timeout,可以采用一个外部的Wdg来监控整个MCU的运行。同时该芯片还有专门的安全管理模块SMU用来管理安全相关的功能,根据使用的Wdg以及关联到对应的SMU的Alarm来实现对时间和程序逻辑执行的安全管理以及安全反应。


在发生Timeout的时候可以在SMU进行恢复也可以调用相关的函数或者中断接口通知User,最终如果恢复不成功直接可以软件复位,同时也可以通过相应的引脚(eg:Error Pin)关联相关的外部ASIC芯片,在Timeout恢复失败后执行MCU断电,如下所示:


搞一下CP AUTOSAR 入门 | 03 CP AUTOSAR 安全Timing机制简介_第8张图片

本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

如果大家有想分享的内容,欢迎大家一起来分享! 更多内容请关注微信公众号《搞一下汽车电子》


更多CP AUTOSAR其他内容,也可以随时与我们联系。


联系我们

微信:shactiontech
邮箱:[email protected]

你可能感兴趣的:(汽车电子系列分享,搞一下CP,AUTOSAR入门,CP,AUTOSAR,AUTOSAR,经典autosar)