AUTOSAR-BswM 模式管理

概述

本文档介绍 [1] 中规定的 AUTOSAR BSW 模块 BswM 的功能、API 和配置。

架构概览

下图显示了 BswM 在 AUTOSAR 架构中的位置。
AUTOSAR架构图

下图显示了 BswM 相邻模块的接口。这些接口将在API 接口章节中介绍。
BSW接口架构

3 功能说明

本章介绍 BswM 的一般功能。

3.1 特点

下表列出的功能涵盖了为 BswM 规定的全部功能。
AUTOSAR 标准功能作了规定。表中列出了相应的功能:

3.1.1 AUTOSAR 标准功能

  • CanSM 模式仲裁
  • ComM 模式仲裁
  • DcM模式仲裁
  • EcuM 模式仲裁
  • EthSM 模式仲裁
  • FrSM 模式仲裁
  • J1939Dcm 模式仲裁
  • J1939Nm 模式仲裁
  • LinSM 模式仲裁
  • LinTp 模式仲裁
  • NvM 模式仲裁
  • Sd 模式仲裁
  • Application模式仲裁
  • I-PDU 组处理(激活/停用/监测)
  • 处理 PduR 路由的操作
  • 嵌套规则执行
  • Rte 模式通知和开关
  • Rte 模式请求接口
  • 看门狗管理
  • 构建后处理
  • 预编译配置多分区

3.1.2 扩展功能

  • 计时器作为模式请求接口
  • Nm 作为模式请求接口
  • 用户条件作为模式请求接口
  • 通用模式开关作为Action
  • 计时器控制作为Action
  • 用户可操作BswM_Callout_Stub.c
  • 预配置状态机(通信、初始化、服务和 ECU 状态处理)
  • 即时模式请求接口初始化规则的仲裁
  • 模式规则控制 Action List 优先级控制
  • 支持 ASR3 IPduGroup APIS
  • PduR 模式请求端口 EthIf
  • 模式仲裁
  • 同步初始Action List

3.2 初始化

BswM 通过服务函数 BswM_Init 进行初始化。注意:在启动代码未将随机存取存储器 (RAM) 初始化为零的平台上,必须首先调用函数 BswM_InitMemory,然后才能调用 BswM_Init。所有可用模式都被设置为配置的初始化状态,该状态可以是未定义的,也可以设置为特定值。如果初始化状态未定义,则在首次出现模式请求/指示函数之前,不会对模式进行仲裁。

3.3 状态机

图 3-1 中的状态机图显示了 BswM 的一般处理过程。每个状态描述如下:
BswM状态机

BSWM_INIT
BswM 已初始化并准备好接收即时模式仲裁请求。延迟模式仲裁在循环调用的函数 BswM_MainFunction 中完成。

bswm_wait_immediate_request
在此状态下,BswM 等待模式仲裁请求。如果请求立即进行模式仲裁或调用 BswM_MainFunction 时,该状态将被解除。

bswm_main_function
调用 BswM_MainFunction 时将进入这种状态。在 BswM_MainFunction 中完成延迟模式仲裁。在 BswM_MainFunction 执行期间出现的立即模式仲裁请求将被排队,并在 BswM_MainFunction 结束时执行,此时所有延迟模式仲裁和控制均已完成。强制立即 "类型的模式仲裁请求不会排队,并且会中断延迟模式仲裁。

bswm_mode_arbitration_and_control
在此状态下,将完成已配置的模式规则仲裁,并执行真/假动作列表。类型为 "立即 "的新模式仲裁请求将被排队,类型为 "强制立即 "的仲裁请求将立即进行仲裁。

bswm_empty_queue
在此状态下,执行队列模式仲裁请求。

BSWM_DEINIT
调用函数 BswM_Deinit 时进入该状态。不接受模式仲裁请求,也不进行模式处理。只有在调用函数 BswM_Init 时才能离开该状态。

3.4 模式管理

BswM 管理用户定义的模式,其行为完全由配置定义。模式由以下部分组成
Mode Source: 这是模式仲裁的触发器,触发器可以是应用程序指示/请求函数或 BSW 指示/请求函数或 BswM_MainFunction()。
Mode Arbitration: 当模式源触发发生时,BswM 将在 BswM_MainFunction() 内立即或延迟仲裁特定模式规则。模式仲裁类型在第 3.4.1 和 3.4.3 章中有详细描述。
Mode Rule: 规则是一个逻辑布尔表达式,由使用不同运算符的特定条件组成。规则由 BswM 判定为 "真 "或 “假”。根据评估结果,BswM 执行配置的模式操作(真操作或假操作)。
Mode Actions: 这些操作包括 BSW 服务函数调用、用户调用函数调用或对嵌套规则或操作列表的调用,由 BswM 在模式仲裁后执行。

3.4.1 即时模式处理

即时模式仲裁直接根据模式请求/指示功能进行。如果在模式仲裁期间出现另一个模式请求/指示,BswM 会将该模式仲裁请求排入队列。当前模式仲裁结束后,模式请求队列将清空。图 3-2 中的顺序图显示了这一过程。
在这里插入图片描述

3.4.2 强制即时模式处理

强制立即模式仲裁直接在模式请求/指示函数中进行。强制立即请求会触发立即模式仲裁,中断主函数中的任何其他立即模式仲裁或延迟规则处理。此类模式处理不排队。

3.4.3 延迟模式处理

延迟模式仲裁在 BswM_MainFunction() 的执行过程中循环进行。如果在模式仲裁期间出现另一个模式请求/指示,BswM 会将该模式仲裁请求排入队列。模式请求队列将在 BswM_MainFunction() 结束时清空。图 3-3 中的序列图显示了这一过程。

3.5 Action List
Action List是在规则仲裁阶段之后进行的。是否执行操作列表取决于仲裁结果(True or False)。根据规则评估结果执行操作列表有两种方式:一种是每次评估规则并得出相应结果时执行(条件执行),另一种是仅在评估结果与上次评估结果相比发生变化时执行(触发执行)。这种执行类型通过配置来定义。如果对规则的仲裁会导致执行一个操作列表,那么该操作列表就会被标记为要执行。所有被标记的操作列表都会在规则仲裁后按其优先级执行。

3.6 错误处理
3.6.1 开发错误上报/Det
默认情况下,如果启用了Det功能(即预编译参数 BSWM_DEV_ERROR_DETECT==STD_ON),则会使用 [3] 中指定的 Det_ReportError() 服务向 DET 报告开发错误。
如果使用其他模块进行开发错误报告,则报告错误的函数原型可由集成者配置,但必须与 Det_ReportError()服务具有相同的签名。
报告的 BswM ID 为 42。一般Det 的服务标识和错误码可在BswM.h查看。

4 集成

本章提供了将 Vector MICROSAR BswM 集成到 ECU 应用环境中的必要信息, 其他的AUTOSAR 代码包集成内容也可参考。

4.1 交付范围
交付的 BswM 包含 4.1.1 和 4.1.2 章所述的文件:

4.1.1 静态文件

文件名称 源代码交付 对象代码交付 说明
BswM.c 这是 BswM 的源文件。它包含初始化函数、去初始化函数、循环主函数和所有 BSW 模式指示函数。
BswM.h 这是 BswM 的头文件。它包含 BswM API 函数的接口。
BswM_CanSM.h 该头文件包含 CAN 状态管理器回调函数的原型。
BswM_ComM.h 该头文件包含通信管理器回调函数的原型。
BswM_Dcm.h 该头文件包含诊断通信管理器回调函数的原型。
BswM_EcuM.h 该头文件包含电子控制单元状态管理器的回调函数原型。
BswM_EthSm.h 该头文件包含以太网状态管理器回调函数的原型。
BswM_FrSM.h 该头文件包含 FlexRay 状态管理器回调函数的原型。
BswM_J1939Dc m.h 该头文件包含 J1939Dcm 模块回调函数的原型。
BswM_J1939Nm.h 该头文件包含 J1939Nm 模块回调函数的原型。
BswM_LinSM.h 该头文件包含 LIN 状态管理器回调函数的原型。
BswM_LinTp.h 该头文件包含 LIN 传输协议的回调函数原型。
BswM_Nm.h 该头文件包含网络管理器回调函数的原型。
BswM_NvM.h 该头文件包含非易失性随机存取存储器管理器的回调函数原型。
BswM_PduR.h 该头文件包含 Pdu 路由器模块回调函数的原型。
BswM_Sd.h 该头文件包含服务发现模块回调函数的原型。
BswM_WdgM.h 该头文件包含看门狗管理器模块的回调函数原型。

4.1.2 动态配置文件
动态文件由配置工具生成。
BswM_Lcfg.c 该文件包含预编译和编译后变体的配置参数。
BswM_Cfg.h 该头文件包含编译前和编译后变量的一般定义和配置定义。
BswM_Private_ Cfg.h 该文件包含必要的包含项以及 BswM 使用的库和变量的声明。
BswM_PBcfg.c 该文件包含用于编译后变量模式仲裁的变量。
BswM_Callout_ Stubs.c 该文件包含已配置创建的回调函数的定义。

4.2 其他软件模块的初始化
BswM 可通过用户调用函数初始化软件组件。BswM 可在 EcuM 完成其 “后操作系统序列”(其中初始化操作系统、时间表管理器和 BswM)后实现初始化。
4.2.1 使用基本编辑器
为了配置 BswM 以初始化其他模块:
• 创建 "用户调用 "类型的 “操作”,其中包含初始化功能。
• 创建一个 “操作列表”,其中包含前面提到的 "用户呼出 "操作。
• 单击容器 “BswMModeControl”,使 "Init Action List Reference(初始动作列表参考)"可见。
• 为包含其他模块初始化调用的操作列表添加引用。
• 这些操作将在 BswM_Init 结束时调用。

模式管理指南》[2] 中列举了一系列初始化功能(如欲了解更多模式管理信息,请参阅该指南)。请注意,该列表并不完整,取决于您交付的 BSW 模块。

初始化访问 NVRAM 的基本驱动程序:
Spi_Init(NULL_PTR); Eep_Init(NULL_PTR); Fls_Init(NULL_PTR); NvM_Init(NULL_PTR); NvM_ReadAll();

NvM_ReadAll() 任务完成后,其余模块的初始化工作将继续进行:
Can_Init(NULL_PTR); CanIf_Init(NULL_PTR); CanSM_Init(NULL_PTR); CanTp_Init(NULL_PTR); Lin_Init(NULL_PTR); LinIf_Init(NULL_PTR); LinSM_Init(NULL_PTR); LinTp_Init(NULL_PTR); Fr_Init(NULL_PTR);FrIf_Init(NULL_PTR); FrSm_Init(NULL_PTR); FrTp_Init(NULL_PTR); StbM_Init(); PduR_Init(NULL_PTR); CanNm_Init(NULL_PTR); LinNM_Init(NULL_PTR); FrNm_Init(NULL_PTR); Nm_Init(NULL_PTR);IpduM_Init(NULL_PTR); Com_Init(NULL_PTR); ComM_Init(NULL_PTR); Dcm_Init(NULL_PTR); Dem_Init(NULL_PTR); RteStart();

请注意,在 "构建后 "变体中,之前的初始化函数可能包含 "构建后 "特定参数。详细信息请参见文档 [7],"BSW 模块初始化 "一章:BSW 模块初始化,其中总结了初始化构建后可加载 BSW 模块所需的步骤。

4.2.2 使用可视化配置
为方便配置其他模块的初始化,可使用 “自动配置:模块初始化”。更多信息请参见第 4.3 和 4.3.1 章。

4.3 支持预配置状态机(自动配置)
BswM 支持预配置状态机。这些状态机的内容基于当前配置。用户可以激活和修改这些状态机。它们可以在 DaVinci Configurator 5 Pro 的 "模式管理 "视图中找到。使用自动配置的状态机:

  1. 在配置编辑器中点击 “模式管理”。
  2. 打开 "BSW 管理 "窗口。
  3. 单击 “自动配置:<状态机名称>”。
  4. 点击 "配置模块初始化 "链接开始配置。
    在这里插入图片描述
    图 4-1 自动配置状态机

4.3.1 初始化
BswM 知道如何初始化多个模块:调用哪个函数、使用哪些参数以及包含哪些头文件。这些模块列在 "已知模块 "列表中。不过,预配置的初始化函数和包含的头文件可以由用户更改/调整。
外部模块 "列表包含 BswM 未知的模块。建议使用初始化函数和包含头,但有必要确保预配置参数的正确性,并在必要时对其进行调整。默认情况下,外部模块将在已知模块之后初始化。
在这里插入图片描述
图 4-2 配置模块初始化

模块列表按字母顺序排列。但初始化函数调用是根据生成器的内部逻辑生成的。要查看函数生成的实际顺序,请点击自动配置:模块初始化 -> 操作列表-> INIT_AL_Initialize。
项目列表按生成顺序显示。项目顺序可以手动更改。
在这里插入图片描述
图 4-3 编辑初始化顺序
如果再次通过配置窗口编辑模块初始化,将恢复默认的项目顺序,之前对操作列表项目顺序所做的更改也将丢失。
为避免更改已编辑的操作列表项顺序,有必要在重新配置时清除 "恢复默认顺序 "复选框。
在这里插入图片描述
图 4-4 恢复默认序列

4.3.2 ECU 状态处理
BswM 可以创建启动和关闭 ECU 的规则和操作。这种行为类似于 ASR 3 中的 EcuM。
在这里插入图片描述
图 4-5 ECU 状态处理功能配置
可以激活以下功能:DEM 初始化和shut-down 接口生成、启用和禁用 ComM 通信、激活 NvM 处理、启用 RTE 模式更改通知和call out 使能。

此外,还可以配置请求运行请求和运行后请求的用户数量,以及状态机处于运行模式状态的时间段。
一般情况下,可以选择配置 “关闭所有运行请求端口”,通过该 SWC 模式请求端口,可以在不考虑任何运行/运行后用户、运行请求计时器或通道状态的情况下强制关闭。

ECU 状态处理的状态机如图 4-6 所示。如果启用同步,状态将通知 RTE。
在这里插入图片描述图 4-6 ECU 状态处理状态机

4.3.3 通信控制
BswM 可以创建启动和停止 ECU 通信的规则和操作。
通信控制自动配置支持的功能有

只要 I-PDU 只属于一个通道,就可配置 CAN、ETH、LIN、FR 和 J1939 的 I-PDU 组切换。
• 如果 I-PDU 组中有来自不同通道的 I-PDU,则会显示为 “不可用”,必须手动完成配置。
可以重新初始化传输 (TX) 和接收 (RX) I-PDU。
• 对于 CAN,只有在总线状态从 "NO_COM "转换为 "FULL_COM "时才会执行重新初始化,而在总线状态为 "BUS_OFF "或 "SILENT "时则不会执行重新初始化。
启用和禁用 CAN、ETH 和 FlexRay 总线的 NM(如果该通道存在 NM)。
在切换属于 CAN、ETH 或 FlexRay 总线的 I-PDU 组时考虑 DCM 模式。
在切换属于 CAN 总线的 TX I-PDU 组时,考虑所选的 Nm 状态。
支持 CAN、ETH 和 FlexRay 总线的部分联网 (PNC) 配置。
• 如果 I-PDU 组可分配给 PNC,则 I-PDU 组会被列为相应 PNC 的子功能,并根据 PNC 状态打开或关闭。
• 考虑到只有在系统描述中有 PNC 映射条目时才能确定 PCN。
配置 J1939 模块。
• 将配置标准规则,在规则条件中考虑 J1939Nm 的状态。作为操作列表,模块 J1939Dcm 和 J1939Rm 的状态将被设置。
• 只包含同一节点 I-PDU 的 I-PDU 组将根据节点状态打开或关闭。
• 被确定为广播组的 I-PDU 组将根据 Dcm 广播状态打开或关闭。
• 根据信道和节点状态,启用和禁用 PduR 中的路由-管道
切换 LIN I-PDU 组。
• 只包含相同计划表 I-PDU 的 I-PDU 组将根据计划表状态打开或关闭。
• 设置起始时间表表。

4.3.4 服务控制
BswM 能够创建必要的端口,以控制应用程序的服务发现。
自动配置只有在 Sd 模块处于当前配置中时才可用,支持以下功能:

为每个选定的 SdClientService、SdEventHandler 或 SdConsumedEventGroup 创建一个 BswMSwitchPort(P- 端口),以便向应用程序提供其状态。
为每个选定的 SdClientService、SdServerService 或 SdConsumedEventGroup 创建一个 BswMSwcModeRequest (R-Port),以捕捉来自应用程序的请求并将其转发给 Sd。

4.4 关键部分
BswM 的代码段不得被传入的模式请求打断。因此,BswM 使用一个需要全局中断锁的独占区域:
bswm_exclusive_area_0 使用 BswM 提供模式指示的 BSW 模块的主要功能不应相互干扰。

4.5 周期Task
BswM 有一个循环主函数 BswM_MainFunction(),如果存在延迟模式请求端口、使用定时器或配置了 RTE 模式切换操作,则必须循环调用该函数。循环时间由用户决定,但必须考虑到延迟模式处理。

4.6 NvM - BswM 配置
在 BswM 中配置 NvM 请求端口时,必须勾选 NvM 常规配置中的必要复选框。
在 NvMCommon 中勾选复选框:“多区块任务状态信息” 在 NVMConfigBlock 中勾选 "区块状态信息 "复选框

5 API 描述

接口概览请参见图 2-2。

5.1 类型定义
本章将介绍 BswM 所定义的类型。

类型名称 C 型 说明 数值范围
BswM_ConfigType 在 BswM 初始化过程中用于生成后配置的指针, 在预编译时不使用。
BswM_ModeType uint16 确定 BswM 用户可申请的模式的数据类型 0 … 65535
在模式总数大于 255 时使用。
BswM_UserType uint16 标识向 BswM 发送模式请求的 BswM 用户的数据类型。 0 … 65535
用户总数大于 255 时使用。
BswM_HandleType uint8 / uint16 用于操作列表和规则 ID 的数据类型。 0 … 65535
取决于行动列表和规则的数量。

5.2 BswM 提供的服务
5.2.1 BswM_InitMemory
原型
void BswM_InitMemory (void)
参数
无 -
返回代码
空白 -
功能说明
在未使用初始化启动代码的情况下,初始化 BSW 模式管理器模块变量。该函数将 BswM 设置为未初始化状态。
特殊性和局限性

如果使用该函数,则应在启动后在任何其他 BSWM 函数之前调用。
该功能为同步功能。
该功能无反跳功能。
呼叫背景
该函数可从任务上下文中调用。

5.2.2 BswM_Init
原型
void BswM_Init (const BswM_ConfigType *ConfigPtr)
参数
ConfigPtr 指向编译后配置数据的指针。对于编译前的情况,应使用 NULL 指针。
返回代码
空白 -
功能说明
初始化 BSW 模式管理器。
特殊性和局限性

该功能为同步功能。
该功能无反跳功能。
每个分区都必须调用该函数。
呼叫背景
该函数可从任务上下文中调用。

5.2.3 BswM_Deinit

原型
void BswM_Deinit (void)
参数
无 -
返回代码
空白 -
功能说明
对 BSW 模式管理器进行去初始化。所有待处理的请求将被清除,BswM 不再接受任何模式请求。只有调用 BswM_Init()函数才能退出该状态。
特殊性和局限性

该功能为同步功能。
该功能无反跳功能。
呼叫背景
该函数可从任务上下文中调用。

5.2.4 BswM_GetVersionInfo

原型
void BswM_GetVersionInfo (Std_VersionInfoType *VersionInfo)
参数
版本信息 指向版本信息应复制到的地址的指针。
返回代码
空白 无
功能说明
返回该模块的版本信息。版本采用 BCD 编码。
特殊性和局限性

调用者必须确保在调用函数之前分配一个 Std_VersionInfoType 类型的变量。
该功能为同步功能。
该函数为可重入函数。
Call Context
该函数可在任务和中断上下文中调用。

5.2.5 BswM_RequestMode

原型
void BswM_RequestMode (BswM_UserType requesting_user.用户)
BswM_ModeType requested_mode)
参数
请求用户 请求模式的用户。
请求的模式 请求的模式。
返回代码
空白 -
功能说明
请求模式的通用函数调用。该函数只能用于没有特定模式请求接口的其他 BSW 模块和/或通用模式请求。
特殊性和局限性

该功能为同步功能。
该功能对不同用户具有可重入性。
该函数只允许应用程序用于通用模式请求。否则,应用程序不得使用此函数。
Call Context
该函数可在任务和中断上下文中调用。

5.2.6 BswM_ComM_CurrentMode

原型
void BswM_ComM_CurrentMode (NetworkHandleType Network.ComM_CurrentMode)
ComM_ModeType RequestedMode)
参数
网络 指示状态对应的 ComM 通信通道。
请求模式 ComM 通信通道的当前状态
返回代码
空白 -
功能说明
ComM 调用的函数,用于指示 ComM 信道的当前通信模式。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
只能由 ComM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.7 BswM_ComM_CurrentPNCMode

原型
void BswM_ComM_CurrentPNCMode (PNCHandleType PNC.CurrentPNCMode)
ComM_PncModeType RequestedMode)
参数
刚果国家警察 报告当前状态的 PNC 句柄。
请求模式 PNC 的当前模式。
返回代码
空白 -
功能说明
由 ComM 调用的函数,用于显示 PNC 的当前模式。
特殊性和局限性

该功能为同步功能。
对于不同的 PNC,该功能是可重入的。
只能由 ComM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.8 BswM_ComM_InitiateReset

原型
void BswM_ComM_InitiateReset (void)
参数
空白 -
返回代码
空白 -
功能说明
ComM 调用的功能,用于请求重置 ECU。
特殊性和局限性

该功能为同步功能。
只能由 ComM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.9 BswM_Dcm_ApplicationUpdated

原型
void BswM_Dcm_ApplicationUpdated (void)
参数
无 -
返回代码
空白 -
功能说明
DCM 调用的函数,用于通知 BswM 应用程序已更新。
特殊性和局限性

该功能为同步功能。
该函数为可重入函数。
只能由 DCM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.10 BswM_Dcm_CommunicationMode_CurrentState

原型
void BswM_Dcm_CommunicationMode_CurrentState
(NetworkHandleType 网络, Dcm_CommunicationModeType 请求模式)
参数
网络 诊断模式对应的通信通道。
请求模式 所请求的诊断通信模式。
返回代码
空白 -
功能说明
由 DCM 调用的函数,用于向 BswM 通报通信模式的当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
只能由 DCM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.11 BswM_CanSM_CurrentState

原型
void BswM_CanSM_CurrentState ( NetworkHandleType Network、
CanSM_BswMCurrentStateType CurrentState)
参数
网络 指示状态对应的 CAN 通道。
当前状态 CAN 通道的当前状态。
返回代码
空白 -
功能说明
CanSM 调用的函数,用于指示其当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
只能由 CanSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.12 BswM_EthIf_PortGroupLinkStateChg

原型
void BswM_EthIf_PortGroupLinkStateChg ( EthIf_SwitchPortGroupIdxType)
PortGroupIdx、
EthTrcv_LinkStateType PortGroupState)
参数
端口组 IDx 以太网接口上下文中的端口组索引。
端口组状态 端口组的当前状态。
返回代码
空白 -
功能说明
EthIf 调用的函数,用于指示某个以太网交换机端口组的链路状态变化。
特殊性和局限性

该功能为同步功能。
对于不同的以太网端口组,该功能是可重入的。
只能由 EthIf 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.13 BswM_EthSM_CurrentState

原型
void BswM_EthSM_CurrentState ( NetworkHandleType Network、
EthSM_NetworkModeStateType CurrentState)
参数
网络 指示状态对应的以太网通道。
当前状态 以太网通道的当前状态。
返回代码
空白 -
功能说明
EthSM 调用的函数,用于指示其当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
只能由 EthSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.14 BswM_FrSM_CurrentState

原型
void BswM_FrSM_CurrentState ( NetworkHandleType Network、
FrSM_BswM_StateType CurrentState)
参数
网络 指示状态对应的 FlexRay 集群。
当前状态 FlexRay 集群的当前状态。
返回代码
空白 -
功能说明
FrSM 调用的函数,用于指示其当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 FrSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.15 BswM_J1939DcmBroadcastStatus

原型
void BswM_J1939DcmBroadcastStatus ( uint16 NetworkMask)
参数
网络掩码 掩码,每个可用网络包含一个比特。1:启用网络 0:禁用网络
返回代码
空白 -
功能说明
该 API 将告诉 BswM 可用网络的理想通信状态。该状态通常通过 COM I-PDU 组开关激活。
特殊性和局限性

该功能为同步功能。
该功能无反跳功能。
该函数只能由 J1939Dcm 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.16 BswM_J1939Nm_StateChangeNotification

原型
void BswM_J1939Nm_StateChangeNotification ( NetworkHandleType Network、
uint8 Node, Nm_StateType NmState)
参数
网络 识别 J1939 通道。
节点 识别 J1939 节点
NmState J1939 节点的当前(新)状态
返回代码
空白 -
功能说明
状态更改后通知当前 J1939Nm 状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络和节点组合,该函数是可重入的。
该函数只能由 J1939Nm 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.17 BswM_LinSM_CurrentState

原型
void BswM_LinSM_CurrentState ( NetworkHandleType Network、
LinSM_ModeType CurrentState)
参数
网络 指示状态对应的 LIN 通道。
当前状态 LIN 通道的当前状态。
返回代码
空白 -
功能说明
LinSM 调用的函数,用于指示其当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 LinSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.18 BswM_LinSM_CurrentSchedule

原型
void BswM_LinSM_CurrentSchedule ( NetworkHandleType Network、
LinIf_SchHandleType CurrentSchedule)
参数
网络 所示时间表对应的 LIN 通道。
当前日程 LIN 通道当前活动的时间表表。
返回代码
空白 -
功能说明
由 LinSM 调用的函数,用于指示其当前时间表。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 LinSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.19 BswM_LinSM_ScheduleEndNotification

原型
void BswM_LinSM_ScheduleEndNotification (NetworkHandleType Network、
LinIf_SchHandleType Schedule)
参数
网络 所示时间表对应的 LIN 通道。
时间安排 已结束的 LIN 频道的节目表。
返回代码
空白 -
功能说明
LinSM 调用的通知计划结束的函数。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 LinSM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.20 BswM_LinTp_RequestMode

原型
void BswM_LinTp_RequestMode ( NetworkHandleType Network、
LinTp_Mode LinTpRequestedMode)
参数
网络 LIN TP 模式请求对应的 LIN 通道。
LinTpRequestedMode 请求的 LIN TP 模式。
返回代码
空白 -
功能说明
LinTp 调用的函数,用于请求相应 LIN 通道的模式。LinTp_Mode 主要与应使用的 LIN 计划表相关。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 LinTp 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.21 BswM_EcuM_CurrentState

原型
void BswM_EcuM_CurrentState (EcuM_StateType CurrentState)
参数
当前状态 要求的 ECU 运行模式
返回代码
空白 -
功能说明
EcuM 调用的功能,用于显示当前的 ECU 运行模式。
特殊性和局限性

该功能为同步功能。
该功能无反跳功能。
只能由生态管理调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.22 BswM_EcuM_CurrentWakeup
原型
void BswM_EcuM_CurrentWakeup ( EcuM_WakeupSourceType source、
EcuM_WakeupStateType state)
参数
消息来源 状态发生变化的唤醒源。
国 唤醒源的新状态。
返回代码
空白 -
功能说明
EcuM 调用的函数,用于指示唤醒源的当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的信号源,该函数是可重入的。
只能由生态管理调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.23 BswM_EcuM_RequestedState

原型
void BswM_ EcuM_RequestedState ( EcuM_StateType State、
EcuM_RunStatusType CurrentStatus)
参数
国家 EcuMFlex 请求的状态。
当前状态 运行请求协议的新结果。
返回代码
空白 -
功能说明
由 EcuM 调用的函数,用于指示运行请求协议状态的请求。
特殊性和局限性

该功能为同步功能。
该函数在不同状态下是可重入的。
只能由生态管理调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.24 BswM_MainFunction

原型
void BswM_MainFunction (void)
参数
无 -
返回代码
空白 -
功能说明
BswM 的主要功能。
特殊性和局限性

该功能为同步功能。
该功能无反跳功能。
该函数必须在 SchM [6] 配置的周期时间内调用。
Call Context
该函数可从任务上下文中调用。

5.2.25 BswM_NvM_CurrentBlockMode
原型
void BswM_NvM_CurrentBlockMode(NvM_BlockIdType Block、
NvM_RequestResultType CurrentBlockMode)
参数
街区 新 NvM 模式对应的区块。
当前区块模式 NvM 程序块的当前程序块模式。
返回代码
空白 -
功能说明
NvM 调用的函数,用于指示 NvM 块的当前块模式。
特殊性和局限性

该功能为同步功能。
该函数对不同区块具有可重入性。
该函数只能由 NvM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.26 BswM_NvM_CurrentJobMode

原型
void BswM_NvM_CurrentJobMode(uint8 ServiceId、
NvM_RequestResultType CurrentJobMode)
参数
服务标识 表示回调是指多块服务 NvM_ReadAll 还是 NvM_WriteAll。
当前工作模式 参数 ServiceId 所指示的多区块任务的当前状态。
返回代码
空白 -
功能说明
NvM 调用的函数,用于向 BswM 通报多区块任务的当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的服务,该函数是可重入的。
该函数只能由 NvM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.27 BswM_PduR_RxIndication

原型
void BswM_PduR_RxIndication(PduIdType RxPduId、
const PduInfoType *PduInfoPtr)
参数
RxPduId 接收 PDU 的 PduR ID。
PduInfoPtr 指针,用于存储 PDU 的所有信息。当前实现中未使用。
返回代码
空白 -
功能说明
PduR 调用的函数,用于向 BswM 通报收到的 PDU。
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 RxPduId,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.28 BswM_PduR_TpRxIndication
原型
void BswM_PduR_TpRxIndication(PduIdType id, Std_ReturnType result)
参数
本我 接收 PDU 的 PduR ID。
结果 接收结果。当前执行中未使用。
返回代码
空白 -
功能说明
PduR 调用的功能,用于向 BswM 通报收到的 TP PDU。
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 id,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.29 BswM_PduR_TpStartOfReception
原型
void BswM_PduR_TpStartOfReception ( PduIdType id, PduInfoType *info, PduLengthType TpSduLength,PduLengthType *bufferSizePtr)
参数
本我 接收 PDU 的 PduR ID。
信息 指针,用于存储 PDU 的所有信息。当前实现中未使用。
TpSduLength 要接收的 I-PDU 的总长度。当前实现中未使用。
缓冲区大小 接收缓冲区指针。当前实现中未使用。
返回代码
空白 -
功能说明
PduR 调用的函数,用于通知 BswM 开始接收 TP PDU。
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 id,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.30 BswM_PduR_TpTxConfirmation

原型
void BswM_PduR_TpTxConfirmation(PduIdType id, Std_ReturnType result)
参数
本我 已发送 TP PDU 的 PduR ID。
结果 传输结果。当前执行中未使用。
返回代码
空白 -
功能说明
PduR 调用的函数,用于向 BswM 通报已发送的 TP PDU。
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 id,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.31 BswM_PduR_Transmit
原型
void BswM_PduR_Transmit( PduIdType id, const PduInfoType *PduInfoPtr)
参数
本我 要传输的 PDU 的 PduR ID。
PduInfoPtr 指针,用于存储 PDU 的所有信息。当前实现中未使用。
返回代码
空白 -
功能说明
PduR 调用的函数,用于向 BswM 通报 PDU 发送事件
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 id,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.32 BswM_PduR_TxConfirmation
void BswM_PduR_TxConfirmation( PduIdType TxPduId )
参数
TxPduId 发送 PDU 的 PduR ID。
返回代码
空白 -
功能说明
PduR 调用的函数,用于向 BswM 通报已发送的 PDU。
特殊性和局限性

该功能为同步功能。
对于不属于同一配置端口的 TxPduId,该函数是可重入的。
该函数只能由 PduR 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.33 BswM_Sd_EventHandlerCurrentState

void BswM_Sd_EventHandlerCurrentState(uint16 SdEventHandlerHandleId, Sd_EventHandlerCurrentStateType EventHandlerStatus )
参数
SdEventHandlerHandleId 用于标识事件处理程序的 HandleId
事件处理状态 事件处理程序的状态
返回代码
空白 -
功能说明
服务发现调用的函数,用于指示事件处理程序的当前状态(请求/释放)。
特殊性和局限性

该功能为同步功能。
对于不同的句柄,该函数是可重入的。
该函数只能由 Sd 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.34 BswM_Sd_ClientServiceCurrentState

原型
void BswM_Sd_ClientServiceCurrentState(uint16 SdClientServiceHandleId, Sd_ClientServiceCurrentStateType CurrentClientState)
参数
SdClientServiceHandleId 用于标识客户服务的 HandleId。
当前客户端状态 客户服务的当前状态。
返回代码
空白 -
功能说明
服务发现调用的函数,用于指示客户服务的当前状态(可用/已停用)。
特殊性和局限性

该功能为同步功能。
对于不同的句柄,该函数是可重入的。
该函数只能由 Sd 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.35 BswM_Sd_ConsumedEventGroupCurrentState
原型
void BswM_Sd_ConsumedEventGroupCurrentState( uint16 SdConsumedEventGroupHandleId、
Sd_ConsumedEventGroupCurrentStateType ConsumedEventGroupState)
参数
SdConsumedEventGroupHandleId HandleId 用来标识消耗的事件组。
已消耗事件组状态 已消耗事件组的状态。
返回代码
空白 -
功能说明
服务发现调用的功能,用于显示已消耗事件组的当前状态(可用/已关闭)。
特殊性和局限性

该功能为同步功能。
对于不同的句柄,该函数是可重入的。
该函数只能由 Sd 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.36 BswM_Nm_StateChangeNotification
原型
void BswM_Nm_StateChangeNotification(NetworkHandleType nmNetworkHandle、
Nm_StateType nmPreviousState, Nm_StateType nmCurrentState)
参数
nmNetworkHandle 识别 NM 通道
nmPreviousState NM 通道的先前状态(未使用的参数)
nmCurrentState NM 通道的当前(新)状态
返回代码
空白 -
功能说明
Nm 调用的函数,用于向 BswM 通报其当前状态。
特殊性和局限性

该功能为同步功能。
对于不同的网络,该功能是可重入的。
该函数只能由 Nm 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.37 BswM_RuleControl
void BswM_RuleControl (BswM_HandleType ruleId, uint8 state)
参数
ruleId 应更改的规则的外部 ID。应使用符号名称定义。
国 新规则状态。以下值有效:禁用规则:bswm_deactivated
启用规则:BSWM_UNDEFINED、BSWM_TRUE 或 BSWM_FALSE
返回代码
空白 -
功能说明
为给定规则设置新状态,从而启用或禁用规则。
特殊性和局限性

该功能为同步功能。
对于不同的规则,该函数是可重入的。
该函数应由 BswM 的操作调用。
Call Context
该函数可在任务和中断上下文中调用。

5.2.38 BswM_WdgM_RequestPartitionReset
原型
void BswM_WdgM_RequestPartitionReset (ApplicationType Application)
参数
应用 新 NvM 模式对应的区块。
返回代码
空白 -
功能说明
WdgM 调用的函数,用于请求重置给定应用程序的相应分区。
特殊性和局限性

该功能为同步功能。
该函数为可重入函数。
该函数只能由 WdgM 调用。
Call Context
该函数可在任务和中断上下文中调用。

5.3 BswM 使用的服务
下表列出了 BswM 使用的其他组件提供的服务。有关原型和功能的详细信息,请参阅提供组件的文档。
在这里插入图片描述

5.4 回调函数
BswM 中没有回调函数。

5.5 可配置接口

5.5.1 呼出功能
用户调用函数可用作操作列表的一个项目。如果调用函数的声明已经存在,集成者必须通过用户包含文件提供该函数的外部声明。
在这里插入图片描述
图 5-1 现有的Callout
如果 BswM 要生成用户呼出原型:则应设置 "创建呼出 "复选框,并在给定字段中以列表形式定义参数原型,列表以分号分隔。函数原型在 “BswM_Callout_Stubs.c” 中生成。
在这里插入图片描述
图 5-2 生成呼出函数原型

下表描述了 BswM 呼出函数的声明:

原型
void [Callout Function Name] ( )
参数

返回代码

功能说明
如果用户呼出被配置为操作列表的一个项目,则 BswM 会在相应规则的上下文中调用该功能。
特殊性和局限性
Call context

中断或任务上下文,取决于使用调用的模式/规则配置。

5.6 服务端口
BswM 有一个服务组件,它依赖于以下容器:

BswMSwcModeRequest
BswMSwcModeNotification
BswMSwitchPort
BswMModeDeclaration
下面几章将介绍这些容器。

5.6.1 BswMSwcModeRequest (R Port)
BswM 可以通过发送方-接收方模式端口(Require Port)接收模式。这可以通过使用 BswMSwcModeRequest 来实现。
BswMSwcModeRequest 有一个对模式声明组原型的引用和一个对 VARIABLE-DATA-PROTOTYPE 的实例引用。如果配置了对模式声明组原型的引用,就无法确定与发送方-接收方-接口的关系。因此,有必要创建一个新的发送方-接收方-接口。给定的 BswMModeRequestDataElementPrototypeName 将用作数据元素名称。
发送方-接收方-接口被命名为

BswM_SRI_{ 模式-交换机-接口名称}{ 模式-声明-组-原型名称}
如果使用 VARIABLE-DATA-PROTOTYPE 的实例引用,BswM 将重复使用现有的发送方-接收方接口。
在这两种情况下,创建的 Ports 都会被命名:
接收
{BswMSwcModeRequest 的名称}。

5.6.2 BswMSwcModeNotification (R Port)
BswM 可以通过模式切换模式端口(Require Port)接收模式。这可以通过使用 BswMSwcModeNotification 来实现。
BswM 有一个模式声明组原型(Mode-Declaration-Group-Prototype)的引用。通过该原型可以确定一个模式-开关-接口,该接口将重新用于创建的端口。
创建的端口会被命名:

Notification_{ BswMSwcModeNotification 名称 }

5.6.3 BswMSwitchPort (P- Port)
BswM 可以通过模式切换模式端口(Provide Port)来切换模式。这可以通过使用 BswMSwitchPort 来实现。BswM 可以引用模式声明组原型。通过该原型可以确定一个模式切换接口,该接口将被重新用于创建的端口。
创建的端口会被命名:

交换机_{ BswMSwitchPort 名称 }

5.6.4 BswMRteModeRequestPort (P- Port)
BswM 可以通过发送方-接收方模式端口(Require Port)发送模式。这可以通过在 BswMRteModeRequest 操作中使用 BswMRteModeRequestPort 类型的端口来实现。BswM 使用 VARIABLE-DATA-PROTOTYPE 的实例引用(Instance-Reference),该实例引用代表已存在的发送方-接收方接口的数据元素。创建的 P 端口将使用该接口。
创建的端口会被命名:

Provide_{ BswMRteModeRequestPort 名称 }

5.6.5 BswMModeDeclaration
为方便 SWC 模式请求处理,BswM 可自行提供模式声明。为此,可以创建一个具有相应模式的 BswMModeDeclaration 容器。BswM SWC 验证会自动创建模式声明、相应的实现类型和带有模式声明组原型的模式开关接口。
模式切换接口已命名:

BswM_MSI_{BswMModeDeclaration 的名称}。
相应的模式-声明-组-原型已被命名:
BswM_MDGP_{BswmModeDeclaration 的名称}。实现类型已被命名:
BswM_{BswMModeDeclaration}的名称

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
autosar-eth是指AUTOSAR协会下的以太网标准。AUTOSAR汽车电子系统开发领域的一个全球化合作网络,旨在实现汽车电子系统的规范化和标准化。而autosar-eth则是AUTOSAR协会为汽车电子系统中的以太网通信提供的一个标准化方案。 autosar-eth主要涉及汽车电子系统中的以太网通信协议、硬件接口和软件架构。通过使用autosar-eth,不同供应商提供的汽车电子元件可以在同一汽车电子系统中进行无缝集成和交互。这个方案的目标是提供高效的以太网通信能力,以满足现代汽车电子系统对高带宽数据传输和实时通信的需求。 autosar-eth的主要特点包括: 1. 实时性能:autosar-eth提供了一种实时性能良好的以太网通信方案,可以满足汽车电子系统中实时数据传输的要求。 2. 可扩展性:autosar-eth支持复杂的网络拓扑结构和多种通信协议,能够适应不同规模和复杂程度的汽车电子系统。 3. 安全性:autosar-eth内置了安全机制,可以保护汽车电子系统中的数据传输和通信安全,防止恶意攻击和未授权访问。 4. 标准化:autosar-eth遵循AUTOSAR协会的标准,能够实现不同供应商之间的互操作性,促进汽车电子系统的标准化和可替代性。 总而言之,autosar-eth为汽车电子系统中的以太网通信提供了一种标准化、实时性好、安全可靠的解决方案,为汽车电子系统的开发、集成和维护提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈_大侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值