在 Autosar 中,什么决定了 BSW 模块是否符合 ASIL 标准?
例如,我主要谈论的是 COM RTE OS 模块。
是否有一些额外的安全选项?
还是以某种安全的方式重新设计了模块?
在 Autosar 中,什么决定了 BSW 模块是否符合 ASIL 标准?
例如,我主要谈论的是 COM RTE OS 模块。
是否有一些额外的安全选项?
还是以某种安全的方式重新设计了模块?
你的问题有不同的方面。
(几乎与您要问的内容无关。)
关于1:
关于2:
关于3:
不是。看上面。
相同的代码可能需要也可能不需要,这取决于架构决策。
相同的代码可以有也可以没有,这取决于所涉及的开发过程是否足够严格。
顺便说一句,我看不出 AUTOSAR 与此有什么关系。尽管 ASIL 和 AUTOSAR 经常(但并非总是)是近邻。
OS 和 RTE 实际上是 AUTOSAR 的主要部分,以提供安全环境。操作系统有方法通过不同的 OsApplication 和 OsTasks 分离 QM 和 ASIL 应用程序,并根据每个 OsApplication 和/或 OsTasks 的 MPU 设置,在上下文切换时重新配置这些设置。
RTE 是胶水代码,它还包括实际的任务主体,因为可运行对象是通过 RteEventToTaskMapping 和 RteBswEventToTaskMappings 添加到任务中的。RTE 生成器还生成 SWC RTE 接口,包括例如 E2E 变压器生成,用于在 SWC S/R 端口上读取/写入的 E2E 保护信号。如果从不同的安全上下文调用 C/S 接口(例如 ASIL SWC 调用 QM SWC C/S 接口),则 C/S 接口也应该解耦。
COM 不一定需要是 ASIL,但如果使用 COM 超时监控,则可能是。但这也可以通过 E2E 保护和可在 ASIL 上下文中运行的 ASIL-SWC 来完成。但也要考虑,如果 COM 通过 RTE 调用 ASIL-SWC 中的回调处理程序。
通常,还使用 WDGM(或扩展)作为安全概念的一部分,用于 Runnable Alive/Logical-supervision。
不幸的是,从未指定 Dem/FiM 组合以实际处理 DemEvent 报告和 FunctionInhibition Mapping 以用于安全处理,以使函数进入安全状态。我不确定,这是否仍然可以更改。缺点是,出于安全原因,一些 AUTOSAR 堆栈供应商提供自己的,一些原始设备制造商有一些特定的模块,和/或公司必须找到自己的方式/组件,单独处理,添加许多不兼容的解决方案等等资源使用。
请考虑以下场景: MonitorA 报告失败 DemEvent_A (MonitorInternalDebouncing) MonitorB 报告失败 DemEvent_B (DemInternal Debounceing) MonitorC 报告失败 DemEvent_C (DemInternal Debounceing)
// DemEvent to FiM mapping, meaning, which functions are impacted
// If DemEvent is active, Functions are not allowed to run -> safe-mode
DemEvent_A --> FiM_FuncA, FiM_FuncB
DemEvent_B --> FiM_FuncA
DemEvent_C --> FiM_FuncC
在上面的示例中,如果 DemEvent_A 或 DemEvent_B 处于活动状态,则不应允许 FuncA 运行。如果 DemEvent_A 处于活动状态,则不允许使用 FuncB,但即使在 DemEvent_B 处于活动状态时仍允许使用 FuncB。FuncC 仅依赖于 DemEvent_C。
这样,一个函数(在 SWC_A、SWC_B、SWC_C 中实现)可以通过查询 FiM 来检查故障处理:
SWC_A:
void SWC_A_MainFunction(void) {
boolean bPerm = FALSE;
uint8 FuncAStat;
FiM_GetFunctionPermission(FiM_FuncA, &bPerm);
if (TRUE == bPerm) {
// FuncA allowed to run
FuncAStat = FUNCA_RUNNING;
Rte_Write_pFuncAStat_Status(FuncAStat);
} else {
// FuncA not allowed to run
Rte_Invalidate_pOutPort();
FuncAStat = FUNCA_MALFUNCTION;
Rte_Write_pFuncAStat_Status(FuncAStat);
}
}
使所有组件 ASIL 通常是没有意义的,但至少,它们应该符合 FFI(干扰自由)的要求,以确保它们只能访问它们设计的内存。然后,这些组件也可以在 ASIL 上下文中执行(例如,操作系统“可信功能”与“不可信功能”)。这允许在 ASIL 上下文中调用它们,而无需切换 OsAppl/OsTask 上下文,这可能会占用大量运行时。
RTE 不是 BSW 模块;它是生成的胶水代码。限定 RTE 的方法是限定它的生成器。
除此之外,@Yunnosch 的答案可以应用于 SwC 和 BSWM。
在 AUTOSAR 建模中,可以为组件/模块声明(但未确定)安全级别。如果您尝试将非 ASIL 模块分配给受信任的分区,配置器可能会引发错误。