【汽车操作系统】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.rhkb.cn/news/330545.html

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

相关文章

shell文本三剑客——awk命令【☆】

目录 一、akw原理 二、命令格式 三、常用变量 四、awk的用法 1.输出整行内容 2.按字段输出文本内容 3.按列输出文件内容 FS变量为列分隔符 4.awk的三个模式 5. awk ‘控制语句条件 {操作}’ 文件 6.awk的数组 7.awk的应用 一、akw原理 逐行读取文本,默认…

TypeScript-泛型

泛型(Generics) 指在定义接口,函数等类型的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性,使用泛型可以复用类型并且让类型更加灵活 泛型接口-interface 语法:在 interface 接口类型的名称后面使用…

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元

加入MongoDB AI创新者计划! MongoDB对AI创新和初创企业的支持既全面又广泛!无论您是领先的AI初创企业还是刚刚起步,MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…

云端漫步:搭建个人博客的移动云之旅

💂作者简介: Thunder Wang,阿里云社区专家博主,华为云云享专家,腾讯云社区认证作者,CSDN SAP应用技术领域优质创作者。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完…

dmanywhere的docker制作

dmanywhere的docker制作 官网地址: http://www.dmanywhere.cn/ 下载相关执行文件。 Dockerfile的默认命名是“Dockerfile”, 在构建镜像时,如果没有指定Dockerfile文件,Docker通常会寻找名为“Dockerfile”的文件 1.Dockerf…

6款网站登录页(附带源码)

6款网站登录页 效果图及部分源码123456 领取源码下期更新预报 效果图及部分源码 1 部分源码 <style>* {margin: 0;padding: 0;}html {height: 100%;}body {height: 100%;}.container {height: 100%;background-image: linear-gradient(to right, #fbc2eb, #a6c1ee);}.l…

搜索引擎的设计与实现(四)

目录 6 系统测试 6.1测试重要性 6.2测试用例 结 论 参 考 文 献 前面内容请移步 搜索引擎的设计与实现&#xff08;三&#xff09; 免费源代码&毕业设计论文 搜索引擎的设计与实现 6 系统测试 6.1测试重要性 该项目是在本地服务器上进行运行和调试&#xff0c;…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

面试准备-八股【面试准备】

面试准备-八股【面试准备】 Java基础解决hash冲突的方法try catch finallyException与Error的包结构OOM你遇到过哪些情况&#xff0c;SOF你遇到过哪些情况线程有哪些基本状态?Java IO与 NIO的区别堆和栈的区别对象分配规则notify()和notifyAll()有什么区别&#xff1f;sleep()…

足球走地全自动化操作软件实现过程

本次采用selenium实现自动化操作的流程 打开浏览器录入账号密码等待数据请求&#xff08;监听&#xff09;有新数据&#xff0c;进行自动化操作通过homeName搜索&#xff0c;找到对应数据找到对应的类型&#xff08;让、大小…&#xff09;找到对应的盘口输入数量提交 附登录…

C#编程-.NET Framework使用工具类简化对象之间的属性复制和操作

在C#编程中&#xff0c;对象之间的属性复制和操作是一个常见的需求。为此&#xff0c;.NET Framework提供了多种实用工具库&#xff0c;如AutoMapper、ValueInjecter和ExpressMapper。这些库通过简化代码&#xff0c;提高了开发效率。本文将介绍这些工具库&#xff0c;比较它们…

《我的阿勒泰》观后感(一、什么叫做有用)

通过央视热播短剧《我的阿勒泰》&#xff0c;认识了李娟老师。同时也认识了她的作品&#xff0c;值得推荐。 生命并不荒凉&#xff0c;它是一种安静的绝美。 生活&#xff0c;如同一个巨大的迷宫&#xff0c;充满了未知和变数。有时&#xff0c;我们会在其中迷失方向&#xf…

线性规划库PuLP使用教程

Python求解线性规划——PuLP使用教程 简洁是智慧的灵魂&#xff0c;冗长是肤浅的藻饰。——莎士比亚《哈姆雷特》 文章目录 一、说明二、安装 PuLP 库三、线性规划简介3.1 线性规划3.1.1 高考题目描述3.1.2 基本概念 3.2 整数规划3.2.1 题目描述[3]3.2.2 解题思路 四、求解过程…

五分钟”手撕“图书管理系统

前言&#xff1a; 图书馆管理系统需要结合JavaSE的绝大部分知识&#xff0c;是一个很好的训练项目。 为了让大家更加方便的查阅与学习&#xff0c;我把代码放开头&#xff0c;供大家查询。 还有对代码的分析&#xff0c;我将以类为单位分开讲解。 目录 全部代码 Main类 Us…

智慧校园(安校易)管理系统 FileUpProductupdate.aspx 任意文件上传漏洞复现

0x01 产品简介 “安校易”是银达云创公司基于多年教育市场信息化建设经验沉淀,经过充分的客户需求调研,并依据国家“十三五”教育信息化建设规范而推出的综合互联网+教育信息化解决方案。“安校易”以物联网技术为基础,以学生在校“学食住行”管理为中心,将消费管理、门禁…

头歌01 -部分背包

蜜雪冰城店要举行一场调制饮品比赛。具体说明如下&#xff1a; 1&#xff09;参赛者拥有容量为800ml的杯子&#xff0c;可任选图2中的饮品进行混合&#xff1b;说明&#xff1a;图2中的饮品价格和体积已确定。 图2 2&#xff09;调制饮品价格为各所使用饮料的价格之和&#xff…

spring boot集成Knife4j

文章目录 一、Knife4j是什么&#xff1f;二、使用步骤1.引入依赖2.新增相关的配置类3.添加配置信息4.新建测试类5. 启动项目 三、其他版本集成时常见异常1. Failed to start bean ‘documentationPluginsBootstrapper2.访问地址后报404 一、Knife4j是什么&#xff1f; 前言&…

链游:区块链技术的游戏新纪元

随着区块链技术的快速发展&#xff0c;越来越多的行业开始探索与其结合的可能性&#xff0c;其中&#xff0c;游戏行业与区块链的结合尤为引人注目。链游&#xff0c;即基于区块链技术的游戏&#xff0c;正以其独特的优势&#xff0c;为玩家带来全新的游戏体验。本文将对链游进…

算法打卡 Day13(栈与队列)-滑动窗口最大值 + 前 K 个高频元素 + 总结

文章目录 Leetcode 239-滑动窗口最大值题目描述解题思路 Leetcode 347-前 K 个高频元素题目描述解题思路 栈与队列总结 Leetcode 239-滑动窗口最大值 题目描述 https://leetcode.cn/problems/sliding-window-maximum/description/ 解题思路 在本题中我们使用自定义的单调队列…