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
- 可重入性术语和定义 (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
。
相关文章:

Autosar学习----AUTOSAR_SWS_BSWGeneral(七)
💥💥🔍 🔍 欢迎来到本博客❤️❤️💥💥 🐡优势:❤️博客内容尽量做到通俗易懂,逻辑清晰。 ⛳️座右铭:恒心,耐心,静心。 ⛳️ 欢迎一起…...

自动化测试框架集成:将Selenium集成到pytest与unittest中
目录 引言 一、Selenium简介 二、Selenium与pytest的集成 1. 安装pytest和Selenium 2. 编写测试用例 3. 运行测试 三、Selenium与unittest的集成 1. 编写测试类 2. 运行测试 四、Selenium自动化测试的最佳实践 1. 使用Page Object模式 2. 合理利用等待机制 3. 跨浏…...

华为GaussDB数据库(单机版)在ARM环境下的安装指南
一、软件版本 机器配置:8核16G,CPU: Huawei Kunpeng 920 2.9GHz操作系统:EulerOS 2.8 64bit with ARM数据库版本:GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例,添加一个omm用…...

计算机网络笔记002
### 课堂讨论对话 **学生A**: 老师,计算机网络的组成是怎样的?🤔 **老师**: 非常好的问题!计算机网络主要由硬件、软件和通信协议三部分组成。我们先从硬件开始讨论吧。 **学生B**: 硬件包括哪些设备呢?ὠ…...

Unity 的Event的Use()方法
对于Event的Use方法,其在调用后将不会再判断同类型的事件 这种情况下,第二个MosueDown不会进入,因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法,相同的事件类型不会进第二遍...
数据分析师之Excel数据清洗
前言 目前,掌握一定的Excel技能时,怎么通过自己的技能实现数据分析的操作,就需要进行具体项目的实战,本身数据分析这个行业是非常吃经验的,既然我们是小白入坑,就需要多做实战演练,才能够实际的…...

手机解压软件加密指南:让文件更安全
在数字化时代,文件加密对于保护个人隐私和敏感信息的重要性不言而喻。随着互联网的飞速发展,我们的生活和工作越来越依赖于数字设备和网络。 然而,这也带来了一系列的安全风险,如黑客攻击、数据泄露等。文件加密技术成为了保护我…...

python yield generator 详解
目录 generator基础 generator应用 generator基础应用 generator高级应用 注意事项: 正文 本文将由浅入深详细介绍yield以及generator,包括以下内容:什么generator,生成generator的方法,generator的特点&#…...
MATLAB矩阵下标引用
在MATLAB中,普通的二维数组元素的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行列位置,例如A(2,3)表示矩阵A中第2行第3列的元素。单下标索引的方式是采用列元素优先的原则,对m行n列的矩阵按列排…...
syn洪水攻击原理是什么
在网络世界中,正常的网络访问就像一场有序的对话。当我们访问网站时,客户端与服务器要进行 TCP 三次握手来建立连接。首先,客户端向服务器发送一个 SYN 包,请求建立连接,这就如同向服务器打招呼说“我想连接”…...

前缀和(4)_除自身以外数组的乘积
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 前缀和(4)_除自身以外数组的乘积 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录…...

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)
这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式: boundHashOps方法通过Redi…...
OpenCV视频I/O(1)视频采集类VideoCapture介绍
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 用于从视频文件、图像序列或摄像头捕获视频的类。 该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C API。 以下是该类的使用方法&a…...

CVE-2024-46103
前言 CVE-2024-46103 SEMCMS的sql漏洞。 漏洞简介 SEMCMS v4.8中,SEMCMS_Images.php的search参数,以及SEMCMS_Products.php的search参数,存在sql注入漏洞。 (这个之前就有两个sql的cve,这次属于是捡漏了Ƕ…...

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)
三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询…) 文章目录 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1. …...

Linux 冯诺依曼体系结构与操作系统概念
目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元(CPU) 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例:QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…...

UE4中 -skipbuild -nocompile 有什么区别
在项目开发中,我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中,有 -skipbuild、 -nocompile 两个很像的参数,于是想探究一下它们的区别与含义。 -skipbuild 参数 到底有没有 -skipbuild 这个参数?根据 http…...
k8s篇之数据挂载类型及区别
一、K8S集群数据挂载类型及区别 在 Kubernetes 中,数据挂载类型主要有以下几种,每种类型适用于不同的场景。以下是主要的挂载类型及其应用场景的详细说明: 1. emptyDir 描述:emptyDir 是一个空目录,其生命周期与 Pod 相同。 它在 Pod 创建时被创建,并在 Pod 删除时被清…...

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 ,左键单击可以拉取矩形框,放大选中的范围&#x…...
fetch怎么使用
fetch 是一个现代、强大的、基于 Promise 的网络请求 API,用于在浏览器中发起网络请求(如异步获取资源)。它提供了一种更加简洁和灵活的方式来替代 XMLHttpRequest。下面是 fetch 的基本使用方法和一些示例。 基本语法 fetch(url, options)…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...