功能抑制管理器规范(Specification of Function Inhibition Manager)

📄 文档 ID:082 🏷 类型:SWS(软件规范说明) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:59 📌 状态:Final 🔗 原 PDF:AUTOSAR_SWS_FunctionInhibitionManager.pdf

目录

1 介绍与功能概述(Introduction and functional overview)

功能抑制管理器(Function Inhibition Manager,FiM)负责为软件组件及其内部功能提供控制机制。在此上下文中,一个功能可由一个、若干或部分可运行实体的内容构建,这些可运行实体具有相同的权限 / 抑制条件集。通过 FiM,可以抑制(停用应用功能)这些功能,这些功能可以配置,甚至在运行时(post-built 配置)进行修改。

功能和可运行实体是不同且独立的分类类型。可运行实体主要由其调度需求定义。相比之下,功能由其抑制条件分类。FiM 服务重点关注 SW-C 中的功能,但不仅限于它们。BSW 的功能也可以使用 FiM 服务。

这些功能被分配到某个标识符(FID - function identifier)以及该特定标识符的抑制条件。功能在执行前会轮询其各自 FID 的权限状态。如果某个特定标识符的抑制条件成立,则相应的功能不再被执行

FiM 与 Dem 密切相关,因为诊断事件及其状态信息被支持为抑制条件。因此,需要在发生故障时停止的功能(例如某个传感器的故障)可以用特定的标识符表示。如果检测到故障并且事件被报告给 Dem,则 FiM 抑制 FID,从而抑制相应的功能。

为了处理功能与关联事件之间的关系,功能的标识符(FID)抑制条件(事件)被引入到 SW-C 模板(BSW 等价)中。在配置过程中,构建数据结构(即抑制矩阵)以处理标识符对某些事件的敏感性。

软件组件可以作为一种事件集合集成到新环境中,无需大量工作即可配置。此外,当出现诸如"如果检测到特定事件,哪些功能被抑制"之类的问题时,系统分析会得到支持。FiM 的数据基础用作事件与待抑制 SW-C 之间已配置关系的文档

在 AUTOSAR 中,RTE 根据 SW-C 的接口和调度需求处理 SW-C。相比之下,FiM 处理抑制条件,并通过相应的标识符(FID)为可运行体内的功能控制提供支持机制。因此,FiM 概念和 RTE 概念彼此不干扰

FiM 规范文档的基本目标是:

2 缩略语与缩写(Acronyms and abbreviations)

缩略语 / 术语说明
Activity state(活动状态)活动状态是软件组件正在执行的状态。活动状态源自作为前置条件的权限状态以及物理使能条件。它由 FiM 计算,也作为状态变量可用。它只能从软件组件内的本地信息推导。详见第 7.2.1.6 节。
APIApplication Programming Interface(应用程序编程接口)
BSWBasic Software(基础软件)
DemDiagnostic Event Manager(诊断事件管理器)
ECUElectronic Control Unit(电子控制单元)
FIDFunction Identifier(功能标识符)
FiMFunction Inhibition Manager(功能抑制管理器)
Functionality(功能)功能包括系统的用户可见用户不可见功能方面(AUTOSAR_Glossary.pdf [2])。
此外——在 FiM 上下文中——功能可由一个、若干或部分可运行实体的内容构建,这些可运行实体具有相同的权限/抑制条件集。通过 FiM,可以配置这些功能的抑制甚至通过标定进行修改。每个功能由唯一的FunctionId表示。功能以其特定的抑制条件集为特征,而可运行实体具有特定的调度条件。
HWHardware(硬件)
IDIdentification/Identifier(识别/标识符)
Inhibition Condition(抑制条件)一个 FID、抑制掩码以及 Dem 事件/组件状态之间的关系(见 FiMInhibitionConfiguration)。
ISOInternational Standardization Organization(国际标准化组织)
MILMalfunction Indication Light(故障指示灯)
Monitoring function(监测功能)
  • 软件组件的一部分。
  • 用于监测并最终检测特定传感器、执行器故障的机制,或合理性检查。
  • 报告来自 SW-C 内部处理或来自其他基础软件模块返回值进一步处理的事件状态。
  • 另见 AUTOSAR_SWS_DiagnosticEventManager [3]
NVRAMNon Volatile Memory(非易失性存储器)
OBDOn-board Diagnostics(车载诊断)
OBDIIEmission-related On-board Diagnostics(排放相关车载诊断)
OEMOriginal Equipment Manufacturer(原始设备制造商)
OSOperating System(操作系统)
Permission state(权限状态)权限状态包含由其 FID 表示的功能是可执行还是不应运行的信息。该状态由 FiM 根据报告的事件控制。详见第 7.2.1.6 节。
RAMRandom Access Memory(随机访问存储器)
ROMRead-only Memory(只读存储器)
RTERuntime Environment(运行时环境)
Runnable entity(可运行实体)可运行实体是原子软件组件的一部分,可以独立于该原子软件组件的其他可运行实体执行和调度。它由可由 RTE 启动的指令序列描述。每个可运行实体与恰好一个 EntryPoint 关联。
SW-CSoftware Component(软件组件)
UDSUnified Diagnostic Services(统一诊断服务)
WPAUTOSAR Work Package(AUTOSAR 工作包)
Xxx_API 提供者的占位符

表 2.1:缩略语与缩写

3 相关文档(Related documentation)

3.1 输入文档

3.2 相关标准与规范

3.3 相关规范

AUTOSAR 提供了关于基础软件模块的通用规范 [1, SWS BSW General],对功能抑制管理器同样有效。

因此,SWS BSW General 规范应被视为功能抑制管理器的附加且必需的规范。

4 约束与假设(Constraints and assumptions)

[SWS_Fim_00007] FID 编号在每个 FiM 中应当唯一。

类型Valid
满足SRS_Fim_04701

由于软件组件与基础软件之间的通信仅限于一个 ECU,FiM 只能控制位于同一 ECU上的 FID。请注意,RTE 当前不支持位于不同 ECU 上的基础软件与软件组件之间的通信。

4.1 限制(Limitations)

必须为整个系统考虑时序约束。注意,进程和响应时间强烈依赖于 FiM 模块的实现。因此,如果对 FiM 响应速度的需求超过任务的周期(时间片),则这些需求必须由 FiM 实现(特别是受影响的应用)专门考虑。FiM 必须实现一些特殊措施,这些措施在本 AUTOSAR 文档中未明确指定,因为这里的实现是有意未规定的。

[SWS_Fim_00043] FiM 应当独立于其他 FID 的状态来计算 FID 的权限。

类型Valid
满足SRS_Fim_04706

FiM 不支持 FID 之间的相互依赖。这意味着一个 FID 不会影响另一个 FID。

4.2 在汽车领域的适用性(Applicability to car domains)

FiM 旨在满足 ECU 在系统检测到故障(例如开路或短路)时集中处理系统反应的设计需求。因此,FiM 的直接适用领域目前是车身底盘动力总成 ECU。然而,FiM 也完全可以用于其他汽车领域(如信息娱乐)的 ECU 实现。

一个主要约束是 FiM 单独无法处理以下类型的 SW 组件:

  1. 时间关键型——对于本地重构(例如在无效信号情况下的快速备份反应),可能太慢。
  2. 物理交互型——可能不够灵活。
  3. 安全关键型——可能没有足够的软件完整性。

5 与其他模块的依赖(Dependencies on other modules)

[SWS_Fim_00044] AUTOSAR 功能抑制管理器(FiM)诊断事件管理器(Dem)、具有 FID 接口的软件组件(SW-C)ECU 状态管理器RTE 以及应被 FiM 抑制的 BSW 模块之间存在接口和依赖。

类型Valid
满足SRS_BSW_00384

5.1 需求

本规范的需求有三个来源:

5.1.1 用例(Use Cases)

在每个 ECU 上,通常使用 FiM 服务的一个实例和多个使用此服务的原子软件组件实例。这些原子软件组件在本文档中进一步称为"客户端"。

此外,基础软件中还有一些部分,要么控制 FiM 管理器(例如用于初始化和关闭的 ECU 状态管理器),要么自己查询 FiM 以获取执行权限。

6 需求追溯(Requirements traceability)

下表引用了 [3] 中指定的特性,并链接到这些特性的实现。

需求描述由以下 SRS 满足
SRS_BSW_00301所有 AUTOSAR 基础软件模块应仅导入必要的信息SWS_Fim_00999
SRS_BSW_00302所有 AUTOSAR 基础软件模块应仅导出其他模块所需的信息SWS_Fim_00999
SRS_BSW_00304所有 AUTOSAR 基础软件模块应使用以下数据类型代替本地 C 数据类型SWS_Fim_00027
SRS_BSW_00305数据类型命名约定SWS_Fim_00027
SRS_BSW_00306AUTOSAR 基础软件模块应与编译器和平台无关SWS_Fim_00999
SRS_BSW_00307全局变量命名约定SWS_Fim_00999
SRS_BSW_00308AUTOSAR 基础软件模块不应在头文件中定义全局数据,而应在 C 文件中定义SWS_Fim_00999
SRS_BSW_00309所有 AUTOSAR 基础软件模块应通过显式分配 const 关键字来指示所有具有只读用途的全局数据SWS_Fim_00999
SRS_BSW_00310API 命名约定SWS_Fim_00006SWS_Fim_00011SWS_Fim_00021
SRS_BSW_00312共享代码应可重入SWS_Fim_00011SWS_Fim_00021
SRS_BSW_00314所有内部驱动模块应将中断帧定义与服务例程分离SWS_Fim_00999
SRS_BSW_00323所有 AUTOSAR 基础软件模块应检查传入的 API 参数的有效性SWS_Fim_00999
SRS_BSW_00325中断服务例程和中断上下文中运行的函数的运行时应保持简短SWS_Fim_00999
SRS_BSW_00328所有 AUTOSAR 基础软件模块应避免代码重复SWS_Fim_00999
SRS_BSW_00330应允许在源代码使用且运行时关键的情况下使用宏代替函数SWS_Fim_00999
SRS_BSW_00331所有基础软件模块应严格区分错误和状态信息SWS_Fim_00015
SRS_BSW_00333对于每个回调函数,应指定它是否从中断上下文调用SWS_Fim_00999
SRS_BSW_00334所有基础软件模块应提供一个包含元数据的 XML 文件SWS_Fim_00999
SRS_BSW_00336基础软件模块应能够关闭SWS_Fim_00999
SRS_BSW_00342应可能创建由源代码模块和目标代码模块组成的 AUTOSAR ECU(可混合)SWS_Fim_00999
SRS_BSW_00343基础软件模块规范和配置的时间单位应优先采用物理时间单位SWS_Fim_00999
SRS_BSW_00344BSW 模块应支持链接时配置SWS_Fim_00013
SRS_BSW_00345BSW 模块应支持预编译配置SWS_Fim_00013
SRS_BSW_00347应对 BSW 驱动器的不同实例进行命名分离SWS_Fim_00999
SRS_BSW_00353目标和编译器特定范围的所有整数类型定义应放在并组织在单一类型头文件中SWS_Fim_00999
SRS_BSW_00357对于 API 调用的成功/失败,应定义标准返回类型SWS_Fim_00999
SRS_BSW_00358AUTOSAR 基础软件模块实现的 init() 函数的返回类型应为 voidSWS_Fim_00006SWS_Fim_00045SWS_Fim_00059
SRS_BSW_00359所有 AUTOSAR 基础软件模块的回调函数应避免使用 void 以外的返回类型(如果可能)SWS_Fim_00999
SRS_BSW_00360AUTOSAR 基础软件模块的回调函数允许具有参数SWS_Fim_00999
SRS_BSW_00361编译器特定范围的所有非标准化关键字的映射应放在并组织在编译器特定的类型和关键字头文件中SWS_Fim_00999
SRS_BSW_00373每个 AUTOSAR 基础软件模块的主处理函数应根据定义的约定命名SWS_Fim_00060
SRS_BSW_00375基础软件模块应报告唤醒原因SWS_Fim_00999
SRS_BSW_00377基础软件模块可以返回模块特定类型SWS_Fim_00027
SRS_BSW_00378AUTOSAR 应提供布尔类型SWS_Fim_00999
SRS_BSW_00384基础软件模块规范应至少在描述中指定它们需要哪些其他模块SWS_Fim_00044
SRS_BSW_00386BSW 应指定用于检测错误的配置SWS_Fim_00999
SRS_BSW_00404BSW 模块应支持 post-build 配置SWS_Fim_00062
SRS_BSW_00405BSW 模块应支持多个配置集SWS_Fim_00062
SRS_BSW_00406表示 BSW 模块是否初始化的静态状态变量应在调用 BSW 模块的任何 API 之前以值 0 初始化SWS_Fim_00045SWS_Fim_00055SWS_Fim_00056SWS_Fim_00057SWS_Fim_00058SWS_Fim_00059
SRS_BSW_00409所有生产代码错误 ID 符号由 Dem 模块定义,应由其他 BSW 模块从 Dem 配置中获取SWS_Fim_00999
SRS_BSW_00416要初始化的模块的顺序应是可配置的SWS_Fim_00018
SRS_BSW_00417不属于 SW-C 的软件应在 DEM 完全运行后报告错误事件。SWS_Fim_00999
SRS_BSW_00422错误状态信息的预去抖在 DEM 内完成SWS_Fim_00999
SRS_BSW_00423具有 AUTOSAR 接口的 BSW 模块应可使用 SW-C 模板的方法描述SWS_Fim_00999
SRS_BSW_00424BSW 模块主处理函数不应进入等待状态SWS_Fim_00999
SRS_BSW_00425BSW 模块描述模板应提供对可调度对象的已定义触发条件建模的方法SWS_Fim_00999
SRS_BSW_00426BSW 模块应确保在 BSW 模块之间共享的数据的数据一致性SWS_Fim_00999
SRS_BSW_00427ISR 函数应在 BSW 模块描述模板中定义和文档化SWS_Fim_00999
SRS_BSW_00428BSW 模块应说明其主处理函数是否必须以特定顺序或序列执行SWS_Fim_00999
SRS_BSW_00429对 OS 的访问受到限制SWS_Fim_00999
SRS_BSW_00432模块应具有用于读/接收和写/发送数据路径的单独主处理函数SWS_Fim_00999
SRS_BSW_00433主处理函数仅允许从 BSW Scheduler 提供的任务体中调用SWS_Fim_00999
SRS_Fim_04700应提供用于查询 FID 权限状态的接口SWS_Fim_00010SWS_Fim_00011SWS_Fim_00090SWS_Fim_00094
SRS_Fim_04701由 FIM 监管的功能应由静态配置定义SWS_Fim_00002SWS_Fim_00003SWS_Fim_00007
SRS_Fim_04702FIM 应支持不同的抑制选项SWS_Fim_00012
SRS_Fim_04706应提供功能的抑制条件的单独配置SWS_Fim_00008SWS_Fim_00013SWS_Fim_00016SWS_Fim_00043
SRS_Fim_04709应在执行功能之前评估权限状态SWS_Fim_00011
SRS_Fim_04712启动时的权限状态应被初始化SWS_Fim_00018
SRS_Fim_04713应提供计算权限状态的方法SWS_Fim_00009SWS_Fim_00015SWS_Fim_00020
SRS_Fim_04717权限状态应被更新SWS_Fim_00021SWS_Fim_00022
SRS_Fim_04719应提供汇总诊断事件状态的机制SWS_Fim_00061
SRS_Fim_04721应支持 OBD 功能SWS_Fim_00999
SRS_Fim_04723FIM 应为每个 FID 提供一个布尔型配置选项SWS_Fim_00105SWS_Fim_00106SWS_Fim_00107SWS_Fim_00108

7 功能规范(Functional specification)

7.1 背景与原理(Background & Rationale)

功能抑制管理器允许查询软件组件及其内部功能的权限/抑制状态。在 FiM 上下文中,FID(功能标识符)标识一个应用功能以及该特定标识符的抑制条件。功能在执行前会轮询其 FID 的权限状态。如果某个特定标识符的抑制条件适用,则相应的功能不再被允许执行。通过 FiM,可以配置这些功能的抑制甚至通过标定进行修改。Dem 事件及其状态信息被支持为抑制条件。

为了处理功能与关联影响事件之间的关系,功能的标识符(FID)和抑制条件(事件)被包含在 SW 组件模板(BSW 等价)中。在 FiM 配置期间,构建数据结构(即抑制矩阵)以处理标识符对某些事件的敏感性。

7.2 需求

7.2.1 FiM 核心变量

7.2.1.1 "诊断事件"的定义

"诊断事件"是由 Dem 提供给特定诊断监测功能的标识符,用于报告错误。

详见 AUTOSAR_SWS_DiagnosticEventManager 文档 [3]。

7.2.1.2 "监测状态"的定义

"监测状态"是由 Dem 根据监测功能报告的值计算的状态。可能的值由 Dem_MonitorStatusType 定义。

详见 AUTOSAR_SWS_DiagnosticEventManager 文档 [3]。

7.2.1.3 "被监测组件"的定义

"被监测组件"是由 Dem 提供给特定被监测组件(硬件组件或信号)的标识符。"被监测组件"的 FAILED 状态表示所有分配的监测功能的结果以及从其他 DemComponents 继承的故障信息。

详见 AUTOSAR_SWS_DiagnosticEventManager 文档 [3]。

7.2.1.4 "汇总事件"的定义

[SWS_Fim_00061] FiM 配置应支持汇总事件。一个汇总事件由多个单一诊断事件组成。

类型Valid
满足SRS_Fim_04719

在配置过程中,这些单一事件可以组合成汇总事件ECUC_FiM_00037)。汇总事件简化了处理与该特定汇总事件关联或由其表示的多个事件。为了简单起见,该特定汇总事件可以在 SW-C 模板中用作抑制条件。

[SWS_Fim_00064] FiM 还应能够处理与一个汇总事件关联的所有 FID 的抑制条件,如果与该汇总事件关联的某个 Dem 事件之一被报告给 FiM。

类型Valid

因此,该特定汇总事件仅代表多个诊断事件(参考 10.2.3)。汇总事件的用例例如组合所有指示传感器故障的错误条件:

传感器 X 有多个诊断,例如对地短路、对电池短路和开路:X_SCG、X_SCB 和 X_OC。功能 FID_0、FID_1、...、FID_N 在此故障情况下应被抑制。直接配置需要 3 * N 个容器 FiMInhibitionConfiguration,其中 FIM_INH_EVENT_ID = X_SCG/SCB/OCFIM_INH_FUNCTION_ID = FID_0/.../N

使用汇总事件(FiMSummaryEvent),一组事件可以通过选择 FiMInhSumRef 重用于多个抑制配置。这可以简化配置。

7.2.1.5 "功能标识符"的定义

FiM 实现功能权限的计算。计算的对象是 SW 组件或逻辑单元,它们接收信息"权限授予"/"权限拒绝"。

为了寻址这些组件,它们必须在 FIM 中配置,并分配一个功能标识符以通过接口寻址它们。

[SWS_Fim_00002] 配置过程应保证 FunctionId 在每个 FiM 中唯一。两个具有不同事件依赖关系的不同功能绝不应具有相同的 FunctionId(另见 SWS_Fim_00007)。

类型Valid
满足SRS_Fim_04701

[SWS_Fim_00003] FiM 模块的环境应使用 FunctionId 直接指向关联的功能信息(权限状态等)。

类型Valid
满足SRS_Fim_04701

[SWS_Fim_00010] 信息流从 Dem 提供事件信息更改的 API 调用开始。该信息被处理并评估到 FID 的依赖关系。最后,FID 的权限状态通过 RTE 的 API 访问(图 7.1)。

类型Valid
满足SRS_Fim_04700

图 7.1:确定 FID 权限状态的逻辑信息流(权限状态存储在 RAM 中的实现)

每个 FID 的权限状态根据分配给特定 FID 的 EventId 计算。然后,每个 FID(例如 FID_K)的计算权限状态被"与"运算以确定最终权限状态。这意味着 FiM 将 FID 的权限状态存储在 RAM 中的实现。

或者,FiM 可以轮询监测状态以重新计算权限状态。轮询由请求其权限状态的功能(SW-C 或 BSW)或周期任务触发。在这种情况下,任何事件更改时 FiM 中不会增加处理负担。

7.2.1.6 "功能标识符权限状态"的定义

[SWS_Fim_00015] FID 权限状态包含由其 FID 表示的功能是否可以执行的信息。如果权限状态 == TRUE,则与 FID 关联的功能被允许执行。如果权限状态 == FALSE,则与 FID 关联的功能不允许执行。

类型Valid
满足SRS_BSW_00331SRS_Fim_04713

权限状态基于 Dem 报告的事件。因此,权限状态不直接考虑物理条件(例如温度、发动机转速等),而是考虑那些报告给 Dem 的条件(例如传感器故障)。

除了权限状态作为前置条件外,活动状态(功能是否处于活动状态)还包括表示功能是否确实被执行(即处于活动状态)的物理使能条件。

如上所述,一种可能的实现是在状态变量中提供权限状态。替代方法是在查询时根据底层依赖关系计算权限。

提示:如果权限状态存储在状态变量中,则它们是每个 FID 的唯一值。SW 组件通过 FiM_GetFunctionPermission 访问状态。

[SWS_Fim_00009] 如果实现使用状态变量表示 FID 的权限,则状态变量应在 ECU 开发阶段由标定系统(由 AUTOSAR 定义)可读,以用于跟踪目的。

类型Valid
满足SRS_Fim_04713

7.2.2 FiM 核心功能

7.2.2.1 FiM 数据结构

[SWS_Fim_00013] FiM 的配置过程应在 FiM 模块内创建数据结构,以存储抑制关系(EventID - FID - 适用掩码)。

类型Valid
满足SRS_BSW_00344SRS_BSW_00345SRS_Fim_04706

可配置的 EventId 数量和抑制掩码分配给一个 FID。每个 FID 的 EventId 数量和抑制掩码必须匹配,以便为每个配置的事件存在相应的抑制掩码。

抑制掩码包含 FID 的抑制条件,前提是关联的 EventId 具有特定状态(Dem_EventStatusExtendedType)。这些掩码定义 FID 对事件的敏感状态。然而,掩码不仅根据 Dem_EventStatusExtendedType 寻址某些位,它实际上从 Dem_EventStatusExtendedType选择一种算法来计算布尔抑制条件。

FiM 数据结构的实现无法规定。抑制矩阵的一种可能实现是每个抑制源的标定值块。

图 7.2:抑制掩码

[SWS_Fim_00008] FiM 模块应提供通过 post-built 配置修改抑制条件的可能性。

类型Valid
满足SRS_Fim_04706

根据实现,可能无法:

7.2.2.2 Dem 与功能抑制管理器(FiM)之间的交互

[SWS_Fim_00022] FiM 模块的目的是基于支持为抑制条件的 Dem 事件,提供控制(允许/禁止)SW-C 中功能的服务。

类型Valid
满足SRS_Fim_04717

[SWS_Fim_00065] 功能抑制管理器应使用软件组件提供的 FID - EventID - 抑制掩码关系来确定所有已配置 FID 的权限状态。

类型Valid

在报告事件的监测状态发生变化时,Dem 通过 API 函数 FiM_DemTriggerOnMonitorStatus 通知 FiM 监测状态变化(如果启用了 DemTriggerFiMReports)。

在收到监测状态变化的通知后,FiM 使用 API Dem_GetMonitorStatus 重新计算功能抑制。

注释:从功能的角度来看,抑制/释放条件的同步更新可以在 FiM_MainFunction API 之内或之外进行。

如第 4.1 节所述,FiM 的实现高度依赖于从应用派生的需求(例如时序需求)。如果应用需要快速响应时间,FiM 必须足够快地提供 FID 信息以允许触发跛行回家功能。

API FiM_DemTriggerOnMonitorStatus 仅在每个 FID 存储状态变量时相关。在不存储状态且每次查询时计算权限状态的替代实现中,API FiM_DemTriggerOnMonitorStatus 无效。

作为实现的示例,图 3 显示了单个 EventId-FID 链接的计算。左侧,监测状态由 Dem 报告为 Dem_EventStatusExtendedType。该状态与为与 FID 关联的 EventId 配置的掩码进行比较。

为每个 FID 分配一个抑制计数器。抑制计数器包含当前抑制 EventId 的数量。

如果计算周期性执行(通过 Dem_GetMonitorStatus 读取监测状态),则当状态和掩码匹配时抑制计数器应递增;否则抑制计数器不更新。这适用于 FiM_GetFunctionPermission(如果权限状态必须在查询时计算)和 FiM_MainFunction API。

在监测状态变化触发时,应使用存储的当前抑制 EventId(抑制计数器)来计算权限状态。如果 FiM_DemTriggerOnMonitorStatus 报告监测状态变化,则应执行以下操作:

如果抑制计数器 > 0,则 FID 权限状态应设置为 FALSE,否则 FID 权限状态应设置为 TRUE

图 7.3:基于监测状态信息的权限状态计算

[SWS_Fim_00012] FiM 模块应根据抑制源的实际状态和每个抑制源的标定掩码计算抑制状态(参考 10.2.7)。如果监测状态等于标定掩码(=Defect、Tested、NotTested),FiM 模块应抑制 FID。如果事件的掩码不再与标定值匹配,则抑制被停用。

类型Valid
满足SRS_Fim_04702

可选地,可以使用已测试状态进行抑制。根据抑制条件,如果事件具有状态"Tested"或"NotTested",则抑制可以处于活动状态。如果未选择已测试值,则已测试状态不相关。

可用的状态标志组合被分配给具有"Tested"、"Not_Tested"或"Last_Failed"等口头表示的预定义值。

[SWS_Fim_00098] 功能抑制管理器应使用 FID - DemComponentId - 抑制配置来确定已配置 FID 的权限状态。

类型Valid

在 DemComponent 的 FAILED 状态发生变化时,应重新计算功能状态。每当组件状态为 FAILED(ComponentFailedStatus = TRUE)时,FID 被抑制。

[SWS_Fim_00099] 如果 FIM 配置为周期性轮询状态,则 FIM 应使用 API Dem_GetComponentFailed 获取组件的当前 FAILED 状态。

类型Valid

[SWS_Fim_00100] 如果 FIM 配置为在 eventStatus 触发FiMCyclicEventEvaluation),则 FIM 应通过提供函数 FiM_DemTriggerOnComponentStatus 来接受 DemComponent 的状态变化信息。

类型Valid
7.2.2.3 SW 组件与功能抑制管理器(FiM)之间的交互

[SWS_Fim_00016] 配置工程师应在编译时为每个 FID 提供处理功能与事件依赖关系所需的抑制条件。

类型Valid
满足SRS_Fim_04706

注意,通过标定的修改应是可能的。使用 SW 组件模板内容的 FiM 配置机制应考虑这些要求。

首先,需要引入并分配 FID。此外,对于每个 FID,应由 SW 组件提供导致 FID 抑制的事件列表及关联掩码。第 10 章介绍 SW 组件模板如何考虑这些配置要求。

在配置过程中,构建数据结构。根据实现,这可以是事件到所有受影响 FID 的映射,或者反之,FID 到影响它的所有事件的映射。

控制意味着在实现的功能中,通过 AUTOSAR 服务查询 FID 的权限。

[SWS_Fim_00020] FiM 模块应通过同步响应传入的权限查询来确保对功能的即时控制。FiM 模块应通过将权限状态存储为状态变量或在权限查询时评估事件状态来实现此行为。

类型Valid
满足SRS_Fim_04713

[SWS_Fim_00105] 如果使用接口 FiM_SetFunctionAvailable 将功能(FID)设置为不可用,则其权限状态 FiM_GetFunctionPermission 应始终返回 FALSE。

类型Valid
满足SRS_Fim_04723
7.2.2.4 FiM 使用的应用示例

图 7.4:FiM 使用

7.2.2.5 初始化

[SWS_Fim_00018] 如果使用 Dem 事件状态信息,则 FiM 模块应在初始化时根据 Dem 的所有恢复的监测状态信息(不仅仅是存储在故障存储器中的事件)计算所有 FID 的权限状态。

类型Valid
满足SRS_BSW_00416SRS_Fim_04712

7.2.3 OBD 功能

7.2.3.1 IUMPR 支持

为了跟踪日常使用中诊断功能的行为,特别是发现故障的能力,法规要求根据标准化驾驶曲线跟踪此性能。这称为"在使用监测性能比"(IUMPR,In-Use Monitor Performance Ratio),定义为可发现故障的次数(=分子)除以标准化驾驶曲线已完成的次数(=分母),如各 OBD 法规中所定义。相关数据记录基于 FID 和 EventID 在 Dem 中分配。

因此,根据引用的 FID 的 FiM 配置,可以评估是否需要停止 Ratio Id 特定的数据记录。特别是,在使用 $07 服务中可见期间,IUMPR 跟踪应停止。

Dem 可以将 FiM 配置用于其 IUMPR 计算,或通过调用专用 FID 的 FiM_GetFunctionPermission

注意:FiM 不为 OBDII 提供特殊功能,但使用已存在的 OBDII 机制。

7.3 错误分类(Error classification)

7.3.1 开发错误(Development Errors)

[SWS_Fim_00076] 开发错误类型如表 7.1 所示。

类型Valid
错误类型相关错误码值 [hex]
在 FiM 模块完全初始化之前或 FiM 模块关闭后调用 API 函数FIM_E_UNINIT0x01
使用错误的 FID 调用 FiM_GetFunctionPermissionFIM_E_FID_OUT_OF_RANGE0x02
Dem 使用无效的 EventId 调用 FiMFIM_E_EVENTID_OUT_OF_RANGE0x03
使用 NULL 指针调用 APIFIM_E_PARAM_POINTER0x04
无效的配置集选择FIM_E_INIT_FAILED0x05

表 7.1:开发错误类型

7.3.2 运行时错误(Runtime Errors)

无运行时错误。

7.3.3 瞬态故障(Transient Faults)

无瞬态故障。

7.3.4 生产错误(Production Errors)

无生产错误。

7.4 配置约束(Configuration Constraints)

[SWS_Fim_CONSTR_0001] 对于每个配置的 FiMInhibitionConfiguration,应至少配置 FiMInhSumRefFiMInhEventRefFiMInhComponentRef 之一。

类型Valid

8 API 规范(API specification)

8.1 导入类型(Imported types)

本章列出了从以下文件包含的所有类型:

[SWS_Fim_00081] 导入类型

模块头文件导入类型
DemDem.hDem_ComponentIdType
Rte_Dem_Type.hDem_EventIdType
Rte_Dem_Type.hDem_MonitorStatusType
SchMSchM.hSchM_ReturnType
Std_TypesStandardTypes.hStd_ReturnType
StandardTypes.hStd_VersionInfoType

表 8.1:FiM_ImportedTypes

8.2 类型定义(Type definitions)

8.2.1 FiM_ConfigType

[SWS_Fim_00092] FiM_ConfigType

NameFiM_ConfigType
TypeStructure
Range-- 实现特定
Description此类型为 FIM 的 post build 参数定义数据结构。初始化时,FIM 获得指向此类型结构的指针以访问其配置数据,这是初始化所必需的。
Available viaFiM.h

表 8.2:FiM_ConfigType

8.3 函数定义(Function definitions)

这是为上层模块提供的函数列表。

8.3.1 ECU 状态管理器 <-> FiM 接口

8.3.1.1 FiM_Init

[SWS_Fim_00077] FiM_Init

Service nameFiM_Init
Syntaxvoid FiM_Init(const FiM_ConfigType* FiMConfigPtr)
Service ID [hex]0x00
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)FiMConfigPtr –
Parameters (inout)None
Parameters (out)None
Return valueNone
Description此服务初始化 FIM。
Available viaFiM.h

表 8.3:FiM_Init(注:见第 9.1 章)

[SWS_Fim_00045] 如果开启了开发错误检测,FiM 模块应向 DET 报告错误,如果它未成功完成初始化且检测到不允许的访问。

类型Valid
满足SRS_BSW_00358SRS_BSW_00406

[SWS_Fim_00059] 表示 FiM 是否已初始化的静态状态变量应在调用 FiM 的任何 API 之前以值 0 初始化。FiM_Init 应将静态状态变量设置为不等于 0 的值。

类型Valid
满足SRS_BSW_00358SRS_BSW_00406

为了快速恢复权限状态,建议如果 Dem 和 FiM 实现为集群,Dem 提供对监测状态信息的直接访问。在这种情况下,FiM 需要了解 Dem 的数据结构,以便可以直接访问 EventId 状态。

注意:关闭期间没有显式动作。权限状态在 ECU 关闭之前保持有效,因为它们直接依赖于监测状态信息。

8.3.2 SW 组件 <-> FiM 接口

8.3.2.1 FiM_GetFunctionPermission

[SWS_Fim_00011] FiM_GetFunctionPermission

Service nameFiM_GetFunctionPermission
SyntaxStd_ReturnType FiM_GetFunctionPermission(FiM_FunctionIdType FID, boolean* Permission)
Service ID [hex]0x01
Sync/AsyncSynchronous
ReentrancyReentrant
Parameters (in)FID:功能的标识。FunctionId 在 FIM 中配置。
Min: 1 (0: 表示无功能)
Max: FIM 中 FID 配置的结果(Max 为 255 或 65535)
Parameters (inout)None
Parameters (out)Permission:TRUE: FID 有权限运行;FALSE: FID 无权限运行,即不应被执行
Return valueStd_ReturnType:E_OK: 请求被接受;E_NOT_OK: 请求未被接受,即 FIM 初始化未完成
Description此服务向功能报告权限状态。
Available viaFiM.h

表 8.4:FiM_GetFunctionPermission(满足:SRS_BSW_00310SRS_BSW_00312SRS_Fim_04700SRS_Fim_04709

[SWS_Fim_00066] SW 组件和 BSW 应使用 FiM_GetFunctionPermission 函数来查询执行由相应 FID 表示的某个功能的权限。

[SWS_Fim_00025] 函数 FiM_GetFunctionPermission 应同步传递返回值,以便在软件组件中直接使用此信息来控制和执行底层代码。

[SWS_Fim_00055] 如果为模块 FiM 启用了开发错误检测:函数 FiM_GetFunctionPermission 应在 FID 范围上执行合理性检查。如果 FID 超出范围,函数应引发开发错误并返回无权限(FALSE)。

类型Valid
满足SRS_BSW_00406

[SWS_Fim_00056] 如果为模块 FiM 启用了开发错误检测:函数 FiM_GetFunctionPermission 应检查模块 FiM 的初始化是否已完成。如果函数检测到初始化未完成,它应引发开发错误并返回无权限(FALSE)。

类型Valid
满足SRS_BSW_00406
8.3.2.2 FiM_SetFunctionAvailable

[SWS_Fim_00106] FiM_SetFunctionAvailable

Service nameFiM_SetFunctionAvailable
SyntaxStd_ReturnType FiM_SetFunctionAvailable(FiM_FunctionIdType FID, boolean Availability)
Service ID [hex]0x07
Sync/AsyncSynchronous
ReentrancyReentrant
Parameters (in)FID:功能的标识。
Availability:所请求 FID 的权限:TRUE: 功能可用;FALSE: 功能不可用。
Parameters (inout)None
Parameters (out)None
Return valueStd_ReturnType:E_OK: 请求被接受;E_NOT_OK: 请求未被接受(例如给定的 FID 无效)
Description此服务设置功能的可用性。仅当 FiMAvailabilitySupport 配置为 True 时,该功能才可用。
Available viaFiM.h

表 8.5:FiM_SetFunctionAvailable(满足:SRS_Fim_04723

8.3.3 Dem <-> FiM 接口

8.3.3.1 FiM_DemTriggerOnMonitorStatus

[SWS_Fim_00021] FiM_DemTriggerOnMonitorStatus

Service nameFiM_DemTriggerOnMonitorStatus
Syntaxvoid FiM_DemTriggerOnMonitorStatus(Dem_EventIdType EventId)
Service ID [hex]0x02
Sync/AsyncSynchronous
ReentrancyReentrant
Parameters (in)EventId:事件的标识。事件号在 DEM 中配置。
Min: 1 (0: 表示无事件或故障) Max: DEM 中事件号配置的结果(Max 为 255 或 65535)
Parameters (inout)None
Parameters (out)None
Return valueNone
Description此服务由 Dem 调用以通知 Fim 监测状态变化。
Available viaFiM_Dem.h

表 8.6:FiM_DemTriggerOnMonitorStatus(满足:SRS_BSW_00310SRS_BSW_00312SRS_Fim_04717

[SWS_Fim_00057] 如果为模块 FiM 启用了开发错误检测:函数 FiM_DemTriggerOnMonitorStatus 应在 EventId 上执行合理性检查。如果所请求的 EventId 在 Dem 配置中不存在,函数应引发开发错误 FIM_E_EVENTID_OUT_OF_RANGE

类型Valid
满足SRS_BSW_00406

[SWS_Fim_00058] 如果为模块 FiM 启用了开发错误检测:函数 FiM_DemTriggerOnMonitorStatus 应检查 FiM 的完整初始化。如果函数检测到初始化未完成,它应引发开发错误。

类型Valid
满足SRS_BSW_00406
8.3.3.2 FiM_DemTriggerOnComponentStatus

[SWS_Fim_00101] FiM_DemTriggerOnComponentStatus

Service nameFiM_DemTriggerOnComponentStatus
Syntaxvoid FiM_DemTriggerOnComponentStatus(Dem_ComponentIdType ComponentId, boolean ComponentFailedStatus)
Service ID [hex]0x06
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)ComponentId:DemComponent 的标识。
ComponentFailedStatus:组件的新 FAILED 状态。
Parameters (inout)None
Parameters (out)None
Return valueNone
Description在组件失败状态更改时触发。
Available viaFiM_Dem.h

表 8.7:FiM_DemTriggerOnComponentStatus

8.3.3.3 FiM_DemInit

[SWS_Fim_00006] FiM_DemInit

Service nameFiM_DemInit
Syntaxvoid FiM_DemInit(void)
Service ID [hex]0x03
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)None
Parameters (inout)None
Parameters (out)None
Return valueNone
Description此服务重新初始化 FIM。
Available viaFiM_Dem.h

表 8.8:FiM_DemInit(满足:SRS_BSW_00310SRS_BSW_00358

[SWS_Fim_00069] 函数 FiM_DemInit 应计算所有 FID 的权限状态。

[SWS_Fim_00082] 如果 Dem 和 FiM 实现为两个独立的模块,函数 FiM_DemInit 应通过函数 Dem_GetMonitorStatus 同步访问 EventId 状态。

8.3.3.4 FiM_GetVersionInfo

[SWS_Fim_00078] FiM_GetVersionInfo

Service nameFiM_GetVersionInfo
Syntaxvoid FiM_GetVersionInfo(Std_VersionInfoType* versioninfo)
Service ID [hex]0x04
Sync/AsyncSynchronous
ReentrancyReentrant
Parameters (in)None
Parameters (inout)None
Parameters (out)versioninfo:指向存储此模块版本信息的指针。
Return valueNone
Description此服务返回此模块的版本信息。
Available viaFiM.h

表 8.9:FiM_GetVersionInfo

8.3.4 回调通知(Call-back notifications)

本章列出了由 FiM 模块提供并由下层模块使用的所有函数。

无指定回调通知。

8.3.5 调度函数(Scheduled functions)

本章列出了由 FiM 模块提供并由基础软件模块调度器直接调用的所有函数。

8.3.5.1 FiM_MainFunction

[SWS_Fim_00060] FiM_MainFunction

Service nameFiM_MainFunction
Syntaxvoid FiM_MainFunction(void)
Service ID [hex]0x05
Description
Available viaSchM_FiM.h

表 8.10:FiM_MainFunction(满足:SRS_BSW_00373

权限状态的评估可以在事件变化时或周期性执行。

[SWS_Fim_00070] 如果 FiM 模块轮询监测状态(如配置参数 FiMEventUpdateTriggeredByDem = FALSE 中所定义)并决定以循环方式进行,则 FiM_MainFunction 应用所有 EventId 的抑制掩码计算权限状态。应使用 API Dem_GetMonitorStatus 获取 EventId 的状态信息。

[SWS_Fim_00097] 如果 Dem_GetMonitorStatus 返回 E_NOT_OK,FIM 不应在抑制掩码计算中考虑此事件。

[SWS_Fim_00067] FiM 应使用抑制掩码周期性评估所有 EventId 的实际 EventId 状态信息,然后计算相应的 FID 权限状态。如果 Dem 和 FiM 实现为单独的模块,FiM 应使用 API Dem_GetMonitorStatus 访问监测状态信息。如果 Dem 和 FiM 实现为绑定包(bundle),FiM 应访问 Dem 的监测状态结构。

8.3.6 期望接口(Expected Interfaces)

本章列出了模块 FiM 所需的其他模块的所有函数。

8.3.6.1 强制接口(Mandatory Interfaces)

本章定义了实现模块核心功能所需的所有接口。

[SWS_Fim_00079] 强制接口

API 函数头文件描述
Dem_GetMonitorStatusDem.h获取事件的当前监测状态。
SchM_ActMainFunction_FiM<none>调用 SchM_ActMainFunction 函数以触发相应主处理函数的激活。
SchM_CancelMainFunction_FiM<none>调用 SchM_CancelMainFunction 函数以触发相应主处理函数请求激活的取消。

表 8.11:FiM 强制接口

8.3.6.2 可选接口(Optional Interfaces)

本章定义了实现模块可选功能所需的所有接口。

[SWS_Fim_00080] 可选接口

API 函数头文件描述
Det_ReportErrorDet.h报告开发错误的服务。

表 8.12:FiM 可选接口

8.4 服务接口(Service interfaces)

本章指定了通过 VFB 操作 FiM 功能的端口和端口接口。

8.4.1 客户端-服务器接口(Client-Server-Interfaces)

8.4.1.1 FiM_FunctionInhibition

使用 SW-C 模板的概念,接口定义如下:

[SWS_Fim_00090] 服务接口 FunctionInhibition

NameFunctionInhibition
CommentSW 组件可以使用此服务来查询执行由 FID 表示的某个功能的权限。
IsServicetrue
Variation--
Possible Errors0 E_OK
1 E_NOT_OK

表 8.13:服务接口 FunctionInhibition

操作

GetFunctionPermission

Comments获取相应 FID 的权限状态。
Variation--
Parameters Permission
Comment: 所请求 FID 的权限。TRUE: FID 有权限运行;FALSE: FID 无权限运行,即不应被执行
Type: boolean
Variation: --
Direction: OUT
Possible ErrorsE_OK: 操作成功
E_NOT_OK: 请求未被接受,即 FIM 初始化未完成

表 8.14:操作 GetFunctionPermission(满足:SRS_Fim_04700

8.4.1.2 FiM_ControlFunctionAvailable

使用 SW-C 模板的概念,接口定义如下:

[SWS_Fim_00107] 服务接口 ControlFunctionAvailable

NameControlFunctionAvailable
CommentSW 组件可以使用此服务来设置功能的可用性。
IsServicetrue
Variation{ecuc(FiM/FiMGeneral/FiMAvailabilitySupport)} == True
Possible Errors0 E_OK
1 E_NOT_OK

表 8.15:服务接口 ControlFunctionAvailable

操作

SetFunctionAvailable

Comments设置功能的可用性。
Variation--
Parameters Availability
Comment: 所请求 FID 的权限:TRUE: 功能可用;FALSE: 功能不可用
Type: boolean
Variation: --
Direction: IN
Possible ErrorsE_OK: 操作成功
E_NOT_OK: 请求未被接受

表 8.16:操作 SetFunctionAvailable(满足:SRS_Fim_04723

8.4.2 实现数据类型(Implementation Data Types)

8.4.2.1 FiM_FunctionIdType

[SWS_Fim_00027] FiM_FunctionIdType

NameFiM_FunctionIdType
KindType
Derived fromBase Type: uint16 / uint8(平台相关)
DescriptionFunctionID 的类型
Range0..255, 0..65535
功能的标识符
可配置,大小取决于系统复杂性。
注意:并非所有数字都有效。FIM 数据生成工具应仅分配有效值。
Variation--
Available viaRte_FiM_Type.h

表 8.17:实现数据类型 FiM_FunctionIdType(满足:SRS_BSW_00304SRS_BSW_00305SRS_BSW_00377

8.4.3 端口(Ports)

[SWS_Fim_00094] 端口 Func_{Name}

NameFunc_{Name}
KindProvidedPort
InterfaceFunctionInhibition
Description客户端可以查询 FiM 以获取特定功能的执行权限。表示功能的 FID 不直接由客户端 SW-C 使用。而是使用"端口定义参数值"机制,每个 FID 映射到单独的端口,该端口负责通过 RTE 进行数据交换。
Port Defined Argument Value(s)Type: FiM_FunctionIdType
Value: {ecuc(FiM/FiMConfigSet/FiMFID/FiMFunctionId.value)}
VariationName = {ecuc(FiM/FiMConfigSet/FiMFID.SHORT-NAME)}

表 8.18:端口 Func_{Name}(满足:SRS_Fim_04700

[SWS_Fim_00108] 端口 Control_{Name}

NameControl_{Name}
KindProvidedPort
InterfaceControlFunctionAvailable
Description客户端可以设置特定功能的可用性。
Port Defined Argument Value(s)Type: FiM_FunctionIdType
Value: {ecuc(FiM/FiMConfigSet/FiMFID/FiMFunctionId.value)}
Variation({ecuc(FiM/FiMGeneral/FiMAvailabilitySupport)} == True)
Name = {ecuc(FiM/FiMConfigSet/FiMFID.SHORT-NAME)}

表 8.19:端口 Control_{Name}(满足:SRS_Fim_04723

8.4.4 内部行为(Internal Behavior)

FiM 服务的 InternalBehavior 仅由本地 RTE 看到。除了将功能标识符定义为端口定义参数外,InternalBehavior 必须指定操作调用的可运行实体:

Internal Behavior FiM {

// definition of associated operation-invoked RTE-events not shown
// (it is done in the same way as for any SWC type)

// section "runnable entities":

RunnableEntity GetFunctionPermission
symbol "FiMGetFunctionPermission"
canbeInvokedConcurrently = TRUE
}

9 序列图(Sequence diagrams)

9.1 FiM 初始化序列

[SWS_Fim_00102] Dem 和 Fim 的初始化应始终遵循以下顺序:

step 0) Dem_PreInit

step 1) 非易失性存储器数据必须可用

step 2) FiM_Init(设置内部变量);在 FiM_Init 之后,Fim 尚未准备好使用。

step 3) Dem_Init:执行内部 DEM 初始化,并使用 FiM_DemInit 最终初始化 FIM。

注释:从步骤 3 开始,Dem 和 Fim 最终初始化并准备好使用。

[SWS_Fim_00103] FiM_DemInit 应仅在系统启动后的首次 Dem_PreInit 期间使用。

[SWS_Fim_00104] 在 FIM 完整初始化(FiM_DemInit)之前不应使用 FiM_GetFunctionPermission

图 9.1:FiM 初始化序列

9.2 FiM_DemTriggerOnMonitorStatus

下面的序列图说明了 Dem 如何通过调用 FiM_DemTriggerOnMonitorStatus 通知 FiM 某个监测状态的变化。此外,它还通过使用 FiM_GetFunctionPermission 请求权限状态来说明 FID 如何受到影响。

图 9.2:FiM_DemTriggerOnMonitorStatus

10 配置规范(Configuration specification)

本章定义了配置参数及其到容器的聚类。第 10.1 章描述了基础知识。它还指定了一个模板(表),您应将其用于参数规范。我们打算在规范中保留第 10.1 章以保证理解。第 10.2 章指定了模块 FiM 的结构(容器)和参数。第 10.3 章指定了模块 FiM 的已发布信息。

10.1 如何阅读本章(How to read this chapter)

详情请参阅 SWS_BSWGeneral [1] 中的第 10.1 章"配置规范介绍"。

10.2 容器与配置参数(Containers and configuration parameters)

以下章节总结了所有配置参数。参数的详细含义在第 7 章和第 7.3 章中描述。

[SWS_Fim_00062] 支持多配置集的容器

满足SRS_BSW_00404SRS_BSW_00405

10.2.1 FiM

Module SWS ItemECUC_FiM_00612
Module NameFiM
Module DescriptionFiM(功能抑制管理器)模块的配置。
Post-Build Variant Supporttrue
Supported Config VariantsVARIANT-POST-BUILD, VARIANT-PRE-COMPILE
Container NameMultiplicityScope / Dependency
FiMConfigSet1此容器包含 FiM 模块的配置参数和子容器,支持多个配置集。
FiMGeneral1

10.2.2 FiMGeneral

SWS Item: [ECUC_FiM_00040] · Container Name: FiMGeneral

配置参数:

NameECUC ID说明
FiMAvailabilitySupport[ECUC_FiM_00610]此配置参数指定 Fim 是否应支持设置功能可用性的服务。true: 支持服务;false: 不支持服务。Pre-compile time, scope: local, Default: false.
FiMDevErrorDetect[ECUC_FiM_00087]启用或关闭开发错误检测和通知。true: 启用;false: 禁用。Pre-compile time, scope: local, Default: false.
FiMEventUpdateTriggeredByDem[ECUC_FiM_00086]此配置参数指定 FIM 获取 EventId 状态的方式。TRUE: DEM 通知 FIM 监测状态变化;FALSE: FIM 周期性或按需从 DEM 模块轮询监测状态。Pre-compile time, scope: local, Default: false.
FiMMainFunctionPeriod[ECUC_FiM_00611]允许配置周期循环任务的时间。注意:此配置值应等于 RTE 模块的 BSW 调度器配置中的值。AUTOSAR 配置标准是使用 SI 单位,因此此参数定义为以秒为单位的浮点值。Pre-compile time, scope: local, Range: ]0..INF[
FiMMaxEventsPerFidInhibitionConfiguration[ECUC_FiM_00608]此配置参数指定一个 FiMInhibitionConfiguration 中抑制事件的最大数量。仅适用于 post build 配置版本,可用于分配存储和执行配置的最大内存大小。Pre-compile time, scope: local, Range: 1..65535.
FiMMaxFiMInhibitionConfigurations[ECUC_FiM_00606]此配置参数指定 FiMInhibitionConfiguration 的最大数量。仅适用于 post build 配置版本,可用于分配存储和执行配置的最大内存大小。Pre-compile time, scope: local, Range: 1..65535.
FiMMaxInputEventsPerSummaryEvents[ECUC_FiM_00609]此配置参数指定每个汇总事件的输入事件的最大数量。仅适用于 post build 配置版本,可用于分配存储和执行配置的最大内存大小。Pre-compile time, scope: local, Range: 1..65535.
FiMMaxSumEventsPerFidInhibitionConfiguration[ECUC_FiM_00607]此配置参数指定一个 FiMInhibitionConfiguration 中抑制汇总事件的最大数量。仅适用于 post build 配置版本,可用于分配存储和执行配置的最大内存大小。Pre-compile time, scope: local, Range: 1..65535.
FiMMaxSummaryEvents[ECUC_FiM_00091]此配置参数指定可配置的最大汇总事件数。Pre-compile time, scope: local, Range: 0..65535.
FiMVersionInfoApi[ECUC_FiM_00094]此配置参数用于打开或关闭获取版本信息的 API。Pre-compile time, scope: local, Default: false.

图 10.3:FiMGeneral 配置概述

10.2.3 FiMConfigSet

SWS Item: [ECUC_FiM_00601] · Container Name: FiMConfigSet

此容器包含 FiM 模块的配置参数和子容器,支持多个配置集。

Container NameMultiplicityScope / Dependency
FiMFID1..*此容器包括所有 FID 的符号名称。
FiMInhibitionConfiguration1..*此容器包括关于事件和 FID 之间关系的所有配置参数。
FiMSummaryEvent0..*汇总 EventId 定义记录由一个汇总事件 ID 和特定的 Dem 事件组成。

10.2.4 FiMFID

SWS Item: [ECUC_FiM_00039] · Container Name: FiMFID

此容器包括所有 FID 的符号名称。

配置参数:FiMFunctionId [ECUC_FiM_00085] - FID 的唯一标识符,类型:EcucIntegerParamDef,范围 0..65535。

10.2.5 FiMInhibitionConfiguration

SWS Item: [ECUC_FiM_00038] · Container Name: FiMInhibitionConfiguration

此容器包括关于事件和 FID 之间关系的所有配置参数。

配置参数:

NameECUC ID说明
FiMInhInhibitionMask[ECUC_FiM_00096]此配置参数用于指定事件 - FID 关系的抑制掩码。EcucEnumerationParamDef。可选值:
  • FIM_LAST_FAILED - DEM_UDS_STATUS_TF 标志被设置
  • FIM_NOT_TESTED - DEM_UDS_STATUS_TNCTOC 标志被设置
  • FIM_TESTED - DEM_UDS_STATUS_TNCTOC 标志未设置
  • FIM_TESTED_AND_FAILED - 两个标志同时满足
FiMInhComponentRef[ECUC_FiM_00605]对功能权限所需的 DemComponent 的引用。Reference to DemComponent, Multiplicity: 0..*
FiMInhEventRef[ECUC_FiM_00100]选择单个 DEM 事件。Symbolic name reference to DemEventParameter, Multiplicity: 0..*
FiMInhFunctionIdRef[ECUC_FiM_00095]Reference to FiMFID, Multiplicity: 1
FiMInhSumRef[ECUC_FiM_00102]选择汇总事件。Reference to FiMSummaryEvent, Multiplicity: 0..*

10.2.6 FiMSummaryEvent

SWS Item: [ECUC_FiM_00603] · Container Name: FiMSummaryEvent

汇总 EventId 定义记录由一个汇总事件 ID 和特定的 Dem 事件组成。该记录意味着在汇总事件(上述定义)情况下应禁用的特定 FID,将在任何特定事件下被禁用。可能的解决方案是将事件作为汇总事件分配以及特定事件列表。在配置过程中,汇总事件替代引用的单一事件。但是,未说明此需求如何解决——是通过配置过程还是通过 FiM 内的实现。FiM 配置工具也可以为汇总事件构建合适的数据结构并在 FiM 实现中处理。

配置参数:FiMInputEventRef [ECUC_FiM_00604] - 组合到此汇总事件的 DemEventParameters 的引用。Symbolic name reference to DemEventParameter, Multiplicity: 1..*

10.3 Published Information

详情请参阅 SWS_BSWGeneral [1] 中的第 10.3 章"已发布信息"。

A 不适用的需求(Not applicable requirements)

[SWS_Fim_00999] 这些需求不适用于本规范。

(满足:SRS_BSW_00301SRS_BSW_00302SRS_BSW_00306SRS_BSW_00307SRS_BSW_00308SRS_BSW_00309SRS_BSW_00314SRS_BSW_00323SRS_BSW_00325SRS_BSW_00328SRS_BSW_00330SRS_BSW_00333SRS_BSW_00334SRS_BSW_00336SRS_BSW_00342SRS_BSW_00343SRS_BSW_00347SRS_BSW_00353SRS_BSW_00357SRS_BSW_00359SRS_BSW_00360SRS_BSW_00361SRS_BSW_00375SRS_BSW_00378SRS_BSW_00386SRS_BSW_00409SRS_BSW_00417SRS_BSW_00422SRS_BSW_00423SRS_BSW_00424SRS_BSW_00425SRS_BSW_00426SRS_BSW_00427SRS_BSW_00428SRS_BSW_00429SRS_BSW_00432SRS_BSW_00433SRS_Fim_04721

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)

质量评级A 级