我想问一下在SW级别支持Lock-step(锁步,锁步)处理器。
据我所知,在AUTOSAR-ASILD中,锁步处理器用于故障转移系统,如下所示。
处理器的输入信号被复制到另一个处理器(其锁定步骤对)。
比较来自两个不同处理器的输出信号。
如果两个输出信号不同,则会生成陷阱。
我认为如果有生成的陷阱,则应该在SW级别的某处处理此生成的陷阱。 但是,我找不到任何此处理的标准。 我已经阅读了AUTOSAR中指定的SW主题中的一些错误处理,但我找不到任何令人满意的答案。
所以,我的问题总结如下。
谢谢。
答案 0 :(得分:1)
这里涉及多个概念,来自不同的来源。
ASIL级别由ISO 26262定义.ASIL-D是最高级别,使用锁步CPU是通常用于实现整个系统的ASIL-D合规性的方法之一。 Autosar并未定义您如何实现ASIL-D或任何ASIL级别。从Autosar的角度来看,lockstep将是MCU驱动程序的实现细节,而Autosar并不需要MCU来支持锁步。特定的锁步实现如何工作(是否在每条指令之后比较输出等)取决于硬件,因此您可以在相应的硬件手册中找到这些答案。
相应地,一些决策必须由从事系统工作的人员做出,包括功能安全专家。关于如何处理锁步故障的决定是一个这样的决定 - 你应该如何在系统级别定义对锁步陷阱的反应。 Autosar也没有定义这一点,尽管最合理的选择是在保存一些有关错误的信息后重置微控制器。
至于Autosar堆栈中应该处理陷阱的位置,这也是一个实现决策,尽管合理的选择是在MCAL级别发生这种情况 - 在某种程度上谈论级别甚至在这里有意义,如陷阱将在中断/陷阱上下文中运行,而不是正常的OS任务上下文。通常,陷阱的优先级高于任何中断,并且通常也不可能在软件中禁用陷阱。陷阱将由操作系统注册的某个例程处理,其注册方式与注册ISR的方式相同,因此您希望在用于OS配置的任何工具中配置陷阱处理程序。锁步陷阱可能(同样,取决于硬件)被认为是不可恢复的陷阱,这意味着陷阱处理程序最终应该触发复位。调用标准的ShutdownOS()函数可能是合理的。