Autosar学习----AUTOSAR_SWS_BSWGeneral(七)
💥💥🔍 🔍 欢迎来到本博客❤️❤️💥💥
🐡优势:❤️博客内容尽量做到通俗易懂,逻辑清晰。
⛳️座右铭:恒心,耐心,静心。
⛳️ 欢迎一起交流分享
目录
API规范
- Imported types
- 8.2 Type definitions
- 8.2 类型定义总结
- 8.3 Function definitions
- 8.3.1 General specification on API functions![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5c8f392ea82d43eea534cce31eac2394.png#pic_center)
- 可重入性术语和定义 (reentrancy)
- 其他注意事项
- 8.3.2 初始化函数
- 8.3.3 反初始化函数
- 8.3.4 获取版本信息
- 8.4 回调通知
- 8.5 调度函数
- 8.6 预期接口
- 8.6.1 强制接口
- 8.6.2 可选接口
- 8.6.3 可配置接口
- 8.7 服务接口
Imported types
当新增新的类型时,需要新增对应的表格,用来描述新增类型的定义头文件、类型含义等等,表格规范如下:
8.2 Type definitions
8.2 类型定义总结
在AUTOSAR基本软件模块的规范中,8.2节主要涉及数据类型的定义,具体内容如下:
-
命名约定:
- 所有由BSW模块定义的数据类型(除了ConfigType)应遵循命名约定:
<Ma>_<Tn>Type
,其中<Ma>
是模块缩写,<Tn>
是类型名称,采用驼峰命名法。
- 所有由BSW模块定义的数据类型(除了ConfigType)应遵循命名约定:
-
示例:
- 示例类型包括
Eep_LengthType
、Dio_SignalType
和Nm_StateType
。
- 示例类型包括
-
基本AUTOSAR类型:
- 基本AUTOSAR类型不需要遵循上述命名约定。
-
类型定义模板:
- 类型定义应包括以下信息:
- 名称:类型的名称。
- 类型:允许的条目,包括枚举、结构、指向类型的引用和AUTOSAR整数数据类型。
- 范围:合法值的范围。
- 描述:对该类型用途的非正式描述。
- 常量:该类型的预定义名称(可选)。
- 类型定义应包括以下信息:
-
避免重复定义:
- 为避免在BSW模块和软件组件中重复和不一致的类型定义,公共数据类型应在RTE类型头文件中定义。
-
接口数据类型:
- 标准化接口和标准化AUTOSAR接口中使用的数据类型应仅在RTE类型头文件中定义。
这一节强调了数据类型的标准化和一致性,以确保在AUTOSAR环境中模块间的兼容性和可维护性。
8.3 Function definitions
- 该模块的函数定义在各自的BSW模块规范第8章中指定。
- 函数的定义使用以下模板
8.3.1 General specification on API functions
可重入性术语和定义 (reentrancy)
规定
- 并发安全:允许无限制地并发执行此接口,包括抢占和多核系统上的并行执行。
- 可重入:在单核系统上允许此接口的伪并发执行(即抢占)。
- 不可重入:不允许并发执行此接口。
- 条件可重入:在某些条件下可能允许并发执行此接口,这些条件作为API规范的一部分
- 建议:禁止使用局部变量和全局变量,如必须使用,需确保安全;使用stack variables
其他注意事项
- API参数检查:开发错误检测启用时,所有API服务应启用参数检查。
- NULL指针检查:开发错误检测启用时,指针参数应检查是否为NULL。
- 不传递函数指针:API参数中不应传递函数指针。
- 基于索引的API服务:不同实例的BSW模块应通过索引访问其API。
8.3.2 初始化函数
- BSW模块在一个单独的初始化函数中初始化变量和硬件资源。
- API名称遵循
Init
作为服务名称的模式。 - 示例:
CanIf_Init()
Eep_21_LDExt_Init()
- 只有ECU状态管理器和基础软件模式管理器可以调用初始化函数。
- BSW模块的状态应在初始化函数结束时相应设置。
- 检查初始化函数的入参,如发现有错误,抛出开发错误
8.3.3 反初始化函数
- 反初始化函数用于ECU关闭或睡眠阶段。
- API名称遵循
DeInit
作为服务名称的模式。 - 只有ECU状态管理器和基础软件模式管理器可以调用反初始化函数。
- BSW模块的状态应在反初始化函数开始时相应设置。
8.3.4 获取版本信息
- 获取版本信息函数应同步执行,并且是可重入的。
- 它只具有一个参数,用于返回类型为
Std_VersionInfoType
的BSW模块版本信息。 - 此API的可用性在每个BSW模块的预编译时可配置。
8.4 回调通知
- 回调是用于通知其他模块的函数。
- 如果BSW模块提供的回调函数是AUTOSAR服务,其签名应遵循RTE提供的签名。
- 回调函数应避免返回除
void
以外的类型,除非它们是AUTOSAR服务。
8.5 调度函数
- 许多BSW模块具有需要周期性或事件触发的调度函数。
- 调度函数没有返回值和参数。
- 它们不得进入任何等待状态,通常不可重入。
8.6 预期接口
8.6.1 强制接口
- 每个BSW模块的强制接口列表是特定的。
8.6.2 可选接口
- 每个BSW模块的可选接口列表是特定的。
8.6.3 可配置接口
- 在目标功能可以配置的地方列出可配置接口。
8.7 服务接口
- 定义模式声明组的AUTOSAR服务、ECU抽象和复杂驱动程序组件应在其SwcBswMapping中定义
synchronizedModeGroup
。