【汽车操作系统】Autosar和商用OS

目录

什么是AUTOSAR?

CP AUTOSAR架构

CAN通信

AP AUTOSAR

背景

CP&AP

开发方面的不同:

WRLinux介绍

QNX介绍


什么是AUTOSAR?

        随着汽车功能越来越多,导致ECU的数量越来越多。1993年的时候,奥迪A8才只有5个ECU现在典型的现代汽车上有超过50个ECU,有的车甚至有150个ECU。但是ECU可能是不同的供应商提供的,各厂家的标准、软件架构可能不同,OEM车厂要让这些ECU之间正常通信,是一件复杂和困难的事。供应商软件开发的工作量也很大,版本众多维护起来非常困难。在ECU中添加新功能,或者把ECU-A的功能移植到ECU-B中也不是一件简单的事。

        AUTOSAR,全称Automotive Open SystemArchitecture,中文是“汽车开放系统架构”但它首先是一个组织,注意AUTOSAR不能写作AutoSAR,否则Open的含义就没有了,标志也用红色圆圈强调了开放的理念。

        2003年,9家公司成立了AUTOSAR。截至2023年11月,已有350多家公司、机构加入,包括汽车制造商、部件供应商、电子和软件公司等。

CP AUTOSAR架构

        传统ECU开发就相当于一个人,既要吃饭(软件)又要做饭(硬件),可能还要洗碗(硬件,释放内存),效率就比较低。而AUTOSAR像是一个食堂,硬件层就是食堂做菜师傅、锅碗瓢盆和食材,应用层相当于要吃饭的学生,中间的RTE层就相当于打菜的阿姨。学生(软件开发者)不需要关注食材(硬件,数据)是怎么洗净切好,怎么放到锅碗瓢盆(硬件,存储)中做熟,只需要和打菜阿姨(RTE上接口)说一下(通信)要什么菜(数据包),阿姨就会打给你(提供数据),如果没有菜了,阿姨就会喊(通过RTE下接口)做菜的师傅(硬件),判断还有没有菜(提供相关数据),如果没有就要赶紧做菜(执行某个操作),或者告诉学生没有菜了(硬件报错,硬件损坏,兼容性问题等)

应用层:AppL或ASWL-ApplicationSoftware Layer,实现具体应用功能一个App包含多个软件组件(SWC,Software Component)。

Service服务层:给应用层提供后台服务,如存储管理、网络管理等。

ECU抽象层:ECUAL-ECUAbstraction Layer,标准化硬件的基础功能和接口,控制网关报文转发、存储器读写等。

硬件抽象层:MCAL-MicrocontrollerAbstraction Layer,硬件相关的驱动软件。

复杂驱动:CDD-ComplexDevice Driver,承接复杂的驱动,接口直接暴露给RTE。

硬件层:也称微控制器层,即控制器的硬件部分

官方CP AUTOSAR架构图

最下层

可以通过配置生成

,无需写代码,减少出现低级错误。

静态配置与代码生成

配置工具与静态代码生成:AUTOSAR工具链允许开发者通过图形化或XML配置文件来定义软件组件、ECU资源、通信接口等,随后自动生成对应的C代码。这确保了软件结构的标准化和代码的一致性,同时使得整个系统的行为在编译前即可被完全预测。

静态内存分配:所有任务、缓冲区、消息队列等所需的内存均在系统启动前静态分配完毕,避免了运行时的动态内存分配,提高了系统的确定性和效率。

任务管理与调度

周期性任务与优先级:每个任务根据其功能重要性和时间约束被赋予固定的执行周期和优先级。RTOS保证高优先级任务能够优先执行,并通过时间触发或事件触发机制确保周期性任务按时执行,如每5ms执行一次的控制循环。

任务栈:为每个任务独立分配栈空间,防止栈溢出导致的系统崩溃,同时确保任务间的数据隔离。

中断管理

CAN硬件中断:通过RTOS,CAN总线的硬件中断被高效地管理,确保数据的实时传输和处理。中断服务例程(ISR)快速响应中断,完成数据读取或发送的初步处理,随后快速返回,减少中断延迟。

CPU管理与抢占:RTOS监控CPU状态,管理任务上下文切换。快速中断(FIQ,Fast Interrupt Request)用于处理需要更快速响应的事件,相比普通中断(IRQ),FIQ享有更高的优先级和更快的处理路径。

核心工作与机制

核心功能:RTOS的核心工作包括但不限于任务调度、中断处理、同步与通信机制(如信号量、互斥锁)、内存管理和错误处理。这些机制共同确保了系统的实时性、稳定性和安全性。

功能隔离与模块化:通过AUTOSAR的分层架构和接口定义,不同的软件组件在逻辑上被隔离,促进模块化开发和测试,同时也便于软件复用和升级。

CAN通信

收集所有的CAN,分析优先级,由PDUR进行筛选,筛选之后发给CAN interface

LIN总线本质是一个串口

AP AUTOSAR

背景

为适应汽车的发展趋势(如辅助驾驶、V2X、OTA、远程诊断、动态部署等),应对汽车E/E系统开发面临的新的挑战(高性能处理器的应用,实现ADAS,高带宽通信,E架构演变等),AUTOSAR组织推出了AUTOSARAdaptive Platform(AP)。简单说,AP就是为高性能计算提出的解决方案

AP AUTOSAR架构

部署于linux系统上,本质还是属于中间件。

在Classic中虚拟功能总线VFB为RTE层,在Adaptive中VFB为ARA层,AUTOSARRuntime for Adaptive applications。 ARA层提供通讯管理、执行管理和日志跟踪等功能组件,并给App层提供API接口。AP构建在POSIXOS上,由不同功能模块组成,这些模块属于服务模块Service和基础模块Foundation。模块的通信是面向服务(SOA)的,并使用以太网与其它ECU通信。

AP:发展阶段,大部分都是C++代码,注重运算结果,高性能平台。

CP:应用层面,信号转服务,注重实时性。

CP&AP

开发方面的不同:

Classic Platform

Adaptive Platform

基于C语言 面向过程开发

基于C++语言 面向对象开发

FOA架构(function-oriented architecture )

SOA架构(service-oriented architecture

基于信号的静态配置通信方式

基于服务的SOA动态通信方式(SOME/IP、DDS)

硬件资源的连接关系局限于线束的连接

硬件资源的连接关系虚拟化,不局限于通信线束的连接关系(互联网)服务可根据应用需求动态加载,可通过配置文件动态加载,并进行单独更新公

静态的服务模块,模块和配置在发布前进行静态编译连接

应用加载到RAM执行

从ROM执行代码

每个应用都有直接的虚拟地址空间(支撑MMU)

基于OSEK操作系统

基于POSIX OS(Linux\QNX...)操作系统

WRLinux介绍

风河系统公司(Wind River Systems)开发和支持的一个商业版本的Linux操作系统

yocto,偏向于编译环境,代码在云端,做板级的适配,不需要安装工具链,一键编译。

不便利:微类核架构

QNX介绍

QNX是一款高性能、高可靠性的实时操作系统(RTOS),专为嵌入式系统设计,由QNX Software Systems(现为黑莓公司的子公司)开发,微内核架构

1)足够小的内核

微内核不是一个完整的OS,他拥有操作系统中最基本的部分,保证操作系统的内核做到足够。

1、实现与硬件紧密相关的处理

2、实现一些较基本的功能

3、负责客服端和服务器之间的通信

(2)基于 C/S 模式

将操作系统中最基本的部分放入内核中,把操作系统的绝大部分功能放在微内核外面的一组服务器(进程)中实现。

这些服务器运行在用户态,客户与服务器之间借助微内核提供的消息传递机制来实现通信。如:

1.用于对进程(线程)进行管理的进程(线程)服务器

2.提供虚拟存储器管理功能的存储器服务器

3.提供I/O设备管理的I/O设备管理服务器"机制与策略分离"原理

3)机制:指实现某一功能的具体执行机构策略:在机制的基础上,借助某些参数和算法来实现该功能的优化,或者达到不同的功能目标。在传统的OS中,机制通常放在OS的内核较低层,策略放在内核的较高层。而在微内核的OS中,通常将机制放在OS的微内核中。这样微内核才能够做的更小。

(4)采用面向对象技术

内核OS实现了更高层次的抽象和模块化,增强了系统的可维护性、可扩展性和适应未来变化的能力。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然资源-各级国土空间总体规划的审查要点及流程总结

自然资源-各级国土空间总体规划的审查要点及流程总结 国土空间规划是对一定区域国土空间开发保护在空间和时间上作出的安排,包括总体规划、详细规划和相关专项规划。 国土空间规划管理是国土空间规划中重要的一环。中共中央、国务院发布《关于建立国土空间规划体系…

LabelMe下载及关键点检测数据标注

本文关键点数据集链接,提取码:x1pk 1.LabelMe下载 这部分内容和YOLOv8_seg的标注软件是一样的,使用anaconda创建虚拟环境安装LabelMe,指令如下: conda create -n labelme python=3.6 -y conda activate labelme conda install pyqt conda install pillow pip install la…

朝天椒USB服务器为何脱颖而出,与其它产品有何不同?

在数字化时代,USB服务器作为解决U盾、加密狗、Ukey等USB设备原创连接、集中管理和共享使用问题的有效工具,越来越受到各行各业的重视。在众多品牌中,朝天椒USB服务器凭借其独特的技术优势和市场定位,成功脱颖而出,成为…

python:__set_name__使用

python:__set_name__使用 1 前言 在Python中,我们可以通过__set_name__方法来实现一些特殊的操作。该方法是在定义类的时候被调用,用于设置属性的名称。这样一来,我们就可以在类定义中动态地获取属性的名称,从而更好…

Pytorch深度学习实践笔记6(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十)- JUC(6)

目录 wait , notify wait vs sleep 正确使用方法 同步保护性暂停 join的源码 Future 异步生产者/消费者模型 定义 Park & Unpark 原理 wait , notify 小故事小南需要烟才能工作,但它又要占这锁让别人无法进来。那么这个时候开一个waitSet相当于就是休…

一文讲解——Java多态

目录 一、什么是多态?二、转型向上转型向下转型 三、方法覆盖与方法重载四、绑定动态绑定静态绑定 五、理解多态 一、什么是多态? 多态的词组字面意思是: 某种事物多种形态。 但是对于我们学习Java 的程序原来说,就不不能简单这样…

Weblogic XML反序列化漏洞 [CVE-2017-10271]

漏洞环境搭建请参考 http://t.csdnimg.cn/i11e2 漏洞原理 Weblogic的wls security组件对外提供webservice服务,wls security组件使用了xmldecoder来解析用户传入的xml数据,如果用户进行xml恶意数据的构造,即可触发反序列化漏洞 漏洞版本 O…

CentOS 7.9 邮箱部署——Postfix+Dovecot详细

PostfixDovecot 文章目录 PostfixDovecot资源列表基础环境一、部署DNS二、部署postfix和dovecot2.1、配置postfix2.2、配置dovecot2.3、创建邮件用户 三、发送邮件测试3.1、windows安装poxmail3.2、登录邮箱3.3、发送接收邮件 四、搭建SSL认证加密4.1、生成私钥4.2、生成公钥4.…

贪心算法4(c++)

过河的最短时间 题目描述 输入 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过,如果…

YOLOv8_pose预测流程-原理解析[关键点检测理论篇]

YOLOv8_seg的网络结构图在博客YOLOv8网络结构介绍_CSDN博客已经更新了,由网络结构图可以看到相对于目标检测网络,实例分割网络只是在Head层不相同,如下图所示,在每个特征层中增加了KeyPoint分支(浅绿色),通过两个卷积组和一个Conv卷积得到得到通道数为51的特征图,51表示…

window环境下QT5开发环境的搭建

1、安装visual Stusio 15 生成工具2012 2、安装Visual studio Enterprise 2017 3、Visual studio Enterprise 2017安装完成之后, 修改:选择桌面调试,如下: 4、打开QTcreator,选项中,配置编译器&#xff…

摸鱼大数据——Hive基础理论知识——Hive环境准备

Hive环境准备 1、shell脚本执行方式 方式1: sh 脚本 注意: 需要进入脚本所在目录,但脚本有没有执行权限不影响执行 方式2: ./脚本 注意: 需要进入脚本所在目录,且脚本必须有执行权限 方式3: /绝对路径/脚本 注意: 不需要进入脚本所在目录,但必须有执行…

线程池,日志

所要用到的知识点: 多线程的创建 生产消费模型, 线程锁 条件变量 代码: 线程池日志

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与单片机连接的按键的按键值的功能

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与单片机连接的按键的按键值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍TM1638键盘数码…

C++面向对象程序设计 - 输入和输出

程序的输入指的是文件将数据传送给程序,程序的输出指的是从程序将数据传送输出文件。 C的输入和和输出包括以下三个方面: 对系统指定的标准设备的输入和输出,即从键盘输入数据,输出到显示器屏幕。以外存磁盘(或光盘、…

gdc2024:Raytracing in Snowdrop技术实现与性能优化策略

在今年的GDC(游戏开发者大会)的Advanced Graphics Summit上,关于Snowdrop引擎中光线追踪技术的讨论引起了广泛关注。 一、光线追踪全局照明的实现细节 屏幕空间追踪: 屏幕空间追踪从相机出发,对屏幕上的每个像素点生成…

C++ 红黑树

目录 1.红黑树的概念 2.红黑树的性质 3.红黑树节点的定义 4.红黑树的插入操作 5.数据测试 1.红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个…

C++基础与深度解析 | 泛型算法 | bind | Lambda表达式

文章目录 一、泛型算法1.泛型算法的分类2.迭代器分类 二、bind与lambda表达式1.bind2.lambda表达式 三、泛型算法的改进--ranges(c20) 一、泛型算法 C中的泛型算法是标准模板库(STL)的一部分(这里重点讨论 C 标准库中定义的算法,而…

【vue-cli搭建vue项目的过程2.x】

vue-cli搭建vue项目 vue-cli搭建vue项目安装node安装vue-cli脚手架并创建项目安装 Ant Design Vue或element-ui(笔者使用Ant-design-vue组件,并全局引入)开发安装三方库包1、Package.json文件---引入如下package.json文件执行npm i或npm install命令即可下载如下依赖…