当前位置: 首页 > 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)…...

NcmpGui:解锁网易云音乐NCM格式的终极桌面解决方案

NcmpGui&#xff1a;解锁网易云音乐NCM格式的终极桌面解决方案 【免费下载链接】ncmppGui 一个使用C编写的转换ncm文件的GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui 你是否曾因网易云音乐的NCM格式文件无法在其他播放器上正常播放而感到困扰&#x…...

SpringBoot+Vue企业员工薪酬管理系统源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生

老Mac升级指南&#xff1a;使用OpenCore Legacy Patcher让旧设备焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果对旧款Mac的系统支持逐渐终止&#xff0…...

FireRedASR Pro应用案例:会议录音转文字,提升工作效率实测

FireRedASR Pro应用案例&#xff1a;会议录音转文字&#xff0c;提升工作效率实测 1. 会议记录痛点与解决方案 1.1 传统会议记录的效率瓶颈 在职场工作中&#xff0c;会议记录是一项耗时且容易出错的任务。根据调研数据显示&#xff1a; 普通员工平均每周花费4-6小时在会议…...

JS逆向新手也能搞定:手把手教你用Node.js补全ali140滑块canvas环境(附完整代码)

JS逆向新手也能搞定&#xff1a;手把手教你用Node.js补全ali140滑块canvas环境&#xff08;附完整代码&#xff09; 第一次接触JS逆向时&#xff0c;看到那些复杂的加密逻辑和环境检测代码&#xff0c;确实让人望而生畏。特别是遇到canvas这种需要模拟浏览器环境的场景&#xf…...

Element Plus表格滚动卡顿?试试这个Vue3封装方案,性能提升明显

Vue3Element Plus表格性能优化实战&#xff1a;平滑滚动与内存管理 Element Plus的el-table组件在企业级后台系统中广泛应用&#xff0c;但当数据量达到500行以上时&#xff0c;滚动卡顿、内存飙升的问题开始显现。本文将分享一套经过生产环境验证的优化方案&#xff0c;通过数…...

Windows下用rclone挂载S3存储到本地磁盘的完整指南(含MinIO/Ceph配置)

Windows下用rclone挂载S3存储到本地磁盘的完整指南&#xff08;含MinIO/Ceph配置&#xff09; 在数据驱动的现代开发环境中&#xff0c;对象存储已成为基础设施的重要组成部分。无论是个人开发者处理海量数据集&#xff0c;还是企业团队协作处理云端资源&#xff0c;将S3兼容存…...

RWKV7-1.5B-g1a开源模型优势:无依赖离线加载+低维护成本

RWKV7-1.5B-g1a开源模型优势&#xff1a;无依赖离线加载低维护成本 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的开源文本生成模型&#xff0c;专为轻量级应用场景设计。这个1.5B参数的模型在多语言处理上表现出色&#xff0c;特别适合以下场景&#xff1a; 基础问…...

高效Android系统清理:Universal Android Debloater专业指南

高效Android系统清理&#xff1a;Universal Android Debloater专业指南 【免费下载链接】universal-android-debloater Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your d…...

Reachability.swift终极指南:现代iOS应用网络状态管理完全解析

Reachability.swift终极指南&#xff1a;现代iOS应用网络状态管理完全解析 【免费下载链接】Reachability.swift Replacement for Apples Reachability re-written in Swift with closures 项目地址: https://gitcode.com/gh_mirrors/re/Reachability.swift Reachabilit…...