当前位置: 首页 > news >正文

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节主要涉及数据类型的定义,具体内容如下:

  1. 命名约定

    • 所有由BSW模块定义的数据类型(除了ConfigType)应遵循命名约定:<Ma>_<Tn>Type,其中<Ma>是模块缩写,<Tn>是类型名称,采用驼峰命名法。
  2. 示例

    • 示例类型包括Eep_LengthTypeDio_SignalTypeNm_StateType
  3. 基本AUTOSAR类型

    • 基本AUTOSAR类型不需要遵循上述命名约定。
  4. 类型定义模板

    • 类型定义应包括以下信息:
      • 名称:类型的名称。
      • 类型:允许的条目,包括枚举、结构、指向类型的引用和AUTOSAR整数数据类型。
      • 范围:合法值的范围。
      • 描述:对该类型用途的非正式描述。
      • 常量:该类型的预定义名称(可选)。

在这里插入图片描述

  1. 避免重复定义

    • 为避免在BSW模块和软件组件中重复和不一致的类型定义,公共数据类型应在RTE类型头文件中定义。
  2. 接口数据类型

    • 标准化接口和标准化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(七)

&#x1f4a5;&#x1f4a5;&#x1f50d; &#x1f50d; 欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f421;优势&#xff1a;❤️博客内容尽量做到通俗易懂&#xff0c;逻辑清晰。 ⛳️座右铭&#xff1a;恒心&#xff0c;耐心&#xff0c;静心。 ⛳️ 欢迎一起…...

自动化测试框架集成:将Selenium集成到pytest与unittest中

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

华为GaussDB数据库(单机版)在ARM环境下的安装指南

一、软件版本 机器配置&#xff1a;8核16G&#xff0c;CPU: Huawei Kunpeng 920 2.9GHz操作系统&#xff1a;EulerOS 2.8 64bit with ARM数据库版本&#xff1a;GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例&#xff0c;添加一个omm用…...

计算机网络笔记002

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

Unity 的Event的Use()方法

对于Event的Use方法&#xff0c;其在调用后将不会再判断同类型的事件 这种情况下&#xff0c;第二个MosueDown不会进入&#xff0c;因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法&#xff0c;相同的事件类型不会进第二遍...

数据分析师之Excel数据清洗

前言 目前&#xff0c;掌握一定的Excel技能时&#xff0c;怎么通过自己的技能实现数据分析的操作&#xff0c;就需要进行具体项目的实战&#xff0c;本身数据分析这个行业是非常吃经验的&#xff0c;既然我们是小白入坑&#xff0c;就需要多做实战演练&#xff0c;才能够实际的…...

手机解压软件加密指南:让文件更安全

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

python yield generator 详解

目录 generator基础 generator应用 generator基础应用   generator高级应用 注意事项&#xff1a; 正文 本文将由浅入深详细介绍yield以及generator&#xff0c;包括以下内容&#xff1a;什么generator&#xff0c;生成generator的方法&#xff0c;generator的特点&#…...

MATLAB矩阵下标引用

在MATLAB中&#xff0c;普通的二维数组元素的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行列位置&#xff0c;例如A(2,3)表示矩阵A中第2行第3列的元素。单下标索引的方式是采用列元素优先的原则&#xff0c;对m行n列的矩阵按列排…...

syn洪水攻击原理是什么

在网络世界中&#xff0c;正常的网络访问就像一场有序的对话。当我们访问网站时&#xff0c;客户端与服务器要进行 TCP 三次握手来建立连接。首先&#xff0c;客户端向服务器发送一个 SYN 包&#xff0c;请求建立连接&#xff0c;这就如同向服务器打招呼说“我想连接”&#xf…...

前缀和(4)_除自身以外数组的乘积

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

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)

这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法&#xff0c;但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式&#xff1a; boundHashOps方法通过Redi…...

OpenCV视频I/O(1)视频采集类VideoCapture介绍

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 用于从视频文件、图像序列或摄像头捕获视频的类。 该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C API。 以下是该类的使用方法&a…...

CVE-2024-46103

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

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

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

Linux 冯诺依曼体系结构与操作系统概念

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

UE4中 -skipbuild -nocompile 有什么区别

在项目开发中&#xff0c;我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中&#xff0c;有 -skipbuild、 -nocompile 两个很像的参数&#xff0c;于是想探究一下它们的区别与含义。 -skipbuild 参数 到底有没有 -skipbuild 这个参数&#xff1f;根据 http…...

k8s篇之数据挂载类型及区别

一、K8S集群数据挂载类型及区别 在 Kubernetes 中,数据挂载类型主要有以下几种,每种类型适用于不同的场景。以下是主要的挂载类型及其应用场景的详细说明: 1. emptyDir 描述:emptyDir 是一个空目录,其生命周期与 Pod 相同。 它在 Pod 创建时被创建,并在 Pod 删除时被清…...

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 &#xff0c;左键单击可以拉取矩形框&#xff0c;放大选中的范围&#x…...

fetch怎么使用

fetch 是一个现代、强大的、基于 Promise 的网络请求 API&#xff0c;用于在浏览器中发起网络请求&#xff08;如异步获取资源&#xff09;。它提供了一种更加简洁和灵活的方式来替代 XMLHttpRequest。下面是 fetch 的基本使用方法和一些示例。 基本语法 fetch(url, options)…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...