AUTOSAR OS模块详解(一) 概述

news2024/12/27 13:25:19

AUTOSAR OS模块详解(一) 概述

本文主要介绍AUTOSAR架构下的OS概述。

文章目录

  • AUTOSAR OS模块详解(一) 概述
    • 1 前言
      • 1.1 操作系统
      • 1.2 嵌入式操作系统
      • 1.3 AUTOSAR操作系统
    • 2 AUTOSAR OS
      • 2.1 AUTOSAR OS组成
      • 2.2 AUTOSAR OS类别
      • 2.3 任务管理
      • 2.4 调度表
      • 2.5 资源管理
      • 2.6 多核特性
      • 2.7 其他特性
    • 3 小结

1 前言

1.1 操作系统

操作系统(Operating System,简称OS)是计算机系统中最重要的系统软件之一,它负责管理计算机硬件和软件资源,并为计算机程序提供公共服务。操作系统的主要功能包括:

  • 资源管理:操作系统负责管理计算机的各种资源,包括CPU、内存、存储设备和输入输出设备。它确保各个程序能够有效地使用这些资源,并防止资源冲突。

  • 进程管理:操作系统负责创建、调度和终止进程。进程是正在执行的程序的实例,操作系统通过调度算法来决定哪个进程在何时运行,以实现多任务处理。

  • 内存管理:操作系统管理系统内存的分配和回收。它负责将程序和数据加载到内存中,并确保不同进程之间的内存隔离,以防止相互干扰。

  • 文件系统管理:操作系统提供文件系统来管理数据的存储和访问。它负责文件的创建、删除、读取和写入,并提供目录结构以便于用户和程序查找文件。

  • 用户界面:操作系统为用户提供与计算机交互的界面,通常包括命令行界面(CLI)和图形用户界面(GUI)。用户可以通过这些界面执行各种操作,如启动程序、管理文件等。

  • 安全性和权限管理:操作系统负责保护系统免受未授权访问和恶意软件的攻击。它通过用户身份验证和权限管理来确保只有授权用户才能访问特定资源。

  • 网络管理:现代操作系统通常包括网络功能,允许计算机通过网络与其他计算机进行通信。操作系统管理网络连接、数据传输和网络协议。

  • 驱动程序管理:操作系统通过设备驱动程序与硬件设备进行交互。驱动程序是操作系统与硬件之间的桥梁,负责将操作系统的请求转换为硬件可以理解的指令。

    根据不同的分类原则,操作系统可以有多种分类方式。基于设计目标,可以分为批处理操作系统、分时操作系统、实时操作系统;基于处理方式,可以分为单处理器操作系统和多处理器操作系统;基于用户和任务,可以分为单任务操作系统与多任务操作系统、单用户操作系统与多用户操作系统;基于应用领域,可以分为服务器操作系统、并行操作系统、网络操作系统、分布式操作系统、微机操作系统、手机操作系统、嵌人式操作系统、传感器操作系统等。

    常见的操作系统有Windows、macOS、Linux、Unix。这其中最为大家熟悉的就是Windows,属于比较典型的操作系统,具备上述所有功能,采用时间片轮转、优先级调度、多级反馈队列等多种调度机制,来实现复杂调度算法。

    关于操作系统的基础理论本系列不进行详细介绍,新入门的朋友可以阅读骆斌等编著的《操作系统教程》或者其他资料。

1.2 嵌入式操作系统

嵌入式操作系统(Embedded Operating System)是专门为嵌入式系统设计的操作系统。嵌入式系统通常是指那些集成在其他设备中的计算机系统,这些设备可能是家用电器、汽车、医疗设备、工业控制系统等。嵌入式操作系统的主要特点和功能如下:

  • 资源受限:嵌入式系统通常具有有限的计算资源,包括处理能力、内存和存储空间。因此,嵌入式操作系统需要高效地管理这些有限的资源,以确保系统的稳定性和响应速度。

  • 实时性:许多嵌入式应用需要实时响应,即系统必须在特定的时间限制内完成任务。嵌入式操作系统通常具备实时调度能力,以确保关键任务能够及时执行。

  • 低功耗:嵌入式设备常常需要在电池供电的情况下运行,因此嵌入式操作系统需要优化功耗,以延长设备的使用寿命。

  • 可靠性和稳定性:嵌入式系统通常用于关键应用,如医疗设备和工业控制,因此嵌入式操作系统必须具备高可靠性和稳定性,以防止系统崩溃或故障。

  • 适应性:嵌入式操作系统需要能够适应不同的硬件平台和应用需求,通常支持多种硬件接口和外设。

  • 组件化和模块化:许多嵌入式操作系统采用组件化设计,使得开发者可以根据需要选择和配置系统组件,以满足特定应用的需求。

    常见的嵌入式操作系统:

  • FreeRTOS:一个开源的实时操作系统,广泛应用于微控制器和小型嵌入式设备。

  • VxWorks:一个商业实时操作系统,常用于航空航天、军事和工业控制等领域。

  • Embedded Linux:基于Linux内核的嵌入式操作系统,具有强大的功能和灵活性,适用于各种嵌入式应用。

  • RTEMS:一个开源的实时操作系统,适用于嵌入式系统和实时应用。

    嵌入式操作系统广泛应用于多个领域,包括:

  • 消费电子:如智能家居设备、电视、音响等。

  • 汽车:如车载娱乐系统、自动驾驶系统等。

  • 医疗设备:如监护仪、诊断设备等。

  • 工业控制:如PLC(可编程逻辑控制器)、机器人控制等。

1.3 AUTOSAR操作系统

AUTOSAR(AUTomotive Open System ARchitecture)是一个全球性的合作项目,旨在为汽车电子系统提供一个开放和标准化的软件架构。AUTOSAR的操作系统是其架构的重要组成部分,主要用于支持汽车中各种嵌入式软件的开发和运行。

AUTOSAR操作系统是一个实时操作系统(RTOS),专为汽车应用设计。它提供了多任务处理、任务调度、资源管理和通信等基本功能,确保在汽车环境中高效、可靠地运行各种应用程序。

AUTOSAR OS主要有以下特性:

  • 可移植性:AUTOSAR操作系统的设计使其能够在不同的硬件平台上运行,支持多种微控制器架构。
  • 模块化:操作系统的功能被划分为多个模块,开发者可以根据需求选择和配置所需的模块。
  • 实时性:支持实时任务调度,确保关键任务在规定的时间内完成,满足汽车安全和性能的要求。
  • 安全性:提供安全功能,如访问控制和错误处理,以确保系统的稳定性和安全性。

2 AUTOSAR OS

2.1 AUTOSAR OS组成

AUTOSAR操作系统(AUTOSAR OS)包含多个关键元素,这些元素共同构成了其功能和结构。以下是AUTOSAR OS的主要元素及其详细介绍:

  1. 任务(Task)

    任务是AUTOSAR OS的基本执行单元。每个任务代表一个独立的执行线程,负责执行特定的功能。任务的主要特性包括:

  • 优先级:每个任务可以被分配一个优先级,操作系统根据优先级进行调度。
  • 状态:任务可以处于不同的状态,如就绪、运行、阻塞和终止。
  • 调度:支持多种调度策略,如优先级调度和时间片调度。
  1. 事件(Event)

    事件是用于任务间通信和同步的机制。任务可以等待特定事件的发生,以便在事件发生时被唤醒。事件的主要特性包括:

  • 事件触发:可以由其他任务或中断触发。
  • 事件组合:多个事件可以组合使用,以实现复杂的同步需求。
  1. 信号(Signal)

    信号用于任务间的简单通信,允许一个任务通知另一个任务某个状态的变化。信号的主要特性包括:

  • 异步通知:信号可以在任务之间异步传递,适用于需要快速响应的场景。
  • 状态指示:信号可以用于指示某个条件的满足或状态的变化。
  1. 定时器(Alarm)

    定时器用于管理时间相关的任务调度。AUTOSAR OS支持定时器功能,以实现周期性任务和延时任务。定时器的主要特性包括:

  • 周期性定时器:可以设置为在特定时间间隔内重复触发。
  • 单次定时器:可以设置为在指定时间后触发一次。
  1. 计数器(Counter)

    Counter在AUTOSAR OS中用于跟踪时间和调度周期性任务。它是实现定时器和调度器功能的基础。Counter可分类为:

  • 硬件计数器:直接与硬件定时器关联,提供高精度的时间跟踪。

  • 软件计数器:在软件层面实现,适用于不需要高精度的场景。

    其具有如下功能:

  • 时间跟踪:Counter用于跟踪系统的运行时间,支持定时器的触发和任务的调度。

  • 周期性调度:通过设置计数器的周期,可以实现周期性任务的调度。例如,某个任务可以在每个计数器溢出时被唤醒。

  • 延时功能:Counter可以用于实现任务的延时执行,开发者可以设置任务在特定时间后执行。

    Counter通常与Alarm(定时器)一起使用:

  • Alarm的触发:Alarm可以配置为在Counter达到特定值时触发,从而唤醒相应的任务。

  • 周期性Alarm:通过结合Counter和Alarm,可以实现周期性任务的调度,例如每隔一定时间执行某个任务。

  1. 资源(Resource)

    资源是共享的系统对象,多个任务可能需要访问这些资源。AUTOSAR OS提供了资源管理机制,以确保安全访问。资源的主要特性包括:

  • 互斥锁:用于保护共享资源,确保同一时间只有一个任务可以访问特定资源。
  • 信号量:用于控制对共享资源的访问,支持任务间的同步。
  1. 调度表(Schedule Table)

    Autosar OS相对于OSEK增加了调度表,调度表是一个数据结构,用于定义在特定时间间隔内需要执行的任务和事件。它描述了任务的执行顺序、周期、优先级以及其他调度相关的信息。调度表的主要目的是确保系统中的任务能够按照预定的时间和顺序执行,从而满足实时性要求。

  2. 中断(Interrupt)

    中断是AUTOSAR OS的重要组成部分,允许系统在特定事件发生时立即响应。中断的主要特性包括:

  • 中断服务例程(ISR):可以注册中断服务例程,以处理特定的中断事件。
  • 中断优先级:支持中断优先级管理,确保高优先级的中断能够及时响应。
  1. 应用程序(OS-Application)

    应用程序是运行在AUTOSAR OS上的具体功能实现,通常由多个任务和组件组成。应用程序的主要特性包括:

  • 模块化:应用程序可以由多个模块组成,每个模块实现特定的功能。
  • 可重用性:应用程序组件可以在不同的项目中重用,提高开发效率。
  1. 跨应用访问(IOC)

    Autosar OS各个OS-Application是内存隔离的,因此在实施了内存保护之后就会需要跨应用的数据接口,使用到IOC的功能。

  2. 运行时环境(RTE)

    运行时环境是AUTOSAR架构中的一部分,负责在应用程序和基础软件之间提供接口。RTE的主要特性包括:

  • 数据交换:支持应用程序组件之间的数据交换。

  • 服务调用:允许应用程序组件调用基础软件提供的服务。

    OS在MCU中的结构如图所示。

    在这里插入图片描述

    在AUTOSAR规范中,OS需要将这些基础对象如Task、中断Isr、Alarm等归拢起来,而这个集合就是OS-Application,它是AUTOSAR OS中资源管理的最小单位,类似于标准OS术语中的进程

    Task是CPU计算资源分配的最小单位,类似标准术语中的线程。Task有基础Task和扩展Task,基础Task为固定周期触发,而扩展Task可有多个触发源。

    Counter是OS的Tick来源,一般由硬件Timer进行驱动,硬件定时器通过执行Timer中断,Timer中断中进行OS Tick的累加,并执行Counter代码根据Tick的值执行相应的动作。

    Alarm是AUTOSAR OS中的定时事件源,当Counter累加达到一定的周期,会触发相应的Alarm,比如设置一个基础任务为10ms,配置一个10ms的Alarm来激活该任务。

    Event是Autosar OS的事件源,用于扩展任务中,触发指定的Runable。

    Schedule Table是Autosar OS的特性,在OSEK的OS体系中,各个Task执行之间相对比较独立,而使用了调度表后,可以保证多个Task之间的相对偏移,提高系统性能。

    Interrupt是任何一个操作系统都必须管理的重要元素,Autosar的中断分为一类中断和二类中断,其中二类中断由OS处理,涉及调度、上下文切换、内存保护等,一类中断则不经过OS。

    OS中各个元素的交互关系如下图中的多核交互示意图所示。

    在这里插入图片描述

2.2 AUTOSAR OS类别

AUTOSAR OS来源于OSEK OS,所以其附带了OSEK相关的基础属性。

在OSEK OS中,按照任务的允许激活次数及任务类型可分为以下4个符合类:

  • BCC1(仅限basic tasks,每个任务一个激活请求,每个优先级一个任务,而所有任务有不同的优先级)

  • BCC2(与BCC1类似,每个优先级加上一个以上的任务,允许多个任务激活请求)

  • ECC1(类似于BCC1,加上extended tasks)

  • ECC2(像ECC1一样,加上每个优先级可能有多个任务,并且允许basic tasks有多个任务激活请求)

    而在AUTOSAR OS中,增加了扩展类(Scalability)的概念:

  • SC1:基础扩展类型;

  • SC2:基础扩展类的基础上增加时间保护功能;

  • SC3:基础扩展类的基础上增加内存保护功能;

  • SC4:SC2+SC3;

    其详细功能特性如下表:

    在这里插入图片描述

2.3 任务管理

AUTOSAR操作系统支持多任务管理,允许多个任务并发执行。每个任务可以被分配不同的优先级,操作系统根据优先级调度任务的执行。任务分为基本任务和扩展任务,,扩展任务的状态可以是就绪、运行、阻塞或终止,基本任务只有三种状态:就绪、运行、挂起。

在这里插入图片描述

2.4 调度表

在AUTOSAR OS中,调度表(Schedule Table)是一个重要的概念,用于管理和调度周期性任务的执行。调度表提供了一种灵活的方式来定义任务的执行顺序和时间,从而确保系统的实时性和可靠性。调度表的结构如下图所示:

在这里插入图片描述

如果调度表未处于活动状态,这意味着操作系统没有处理它,则状态为SCHEDULETABLE_STOPPED。在启动调度表后,它进入SCHEDULETABLE_RUNNING状态,此时操作系统处理到期点。如果调用切换调度表的服务,调度表将进入SCHEDULETABLE_NEXT状态,并等待“当前”调度表结束。下图为其状态机示意图。
在这里插入图片描述

2.5 资源管理

操作系统提供了对共享资源的管理机制,确保多个任务在访问共享资源时不会发生冲突。通过使用信号量、互斥锁等同步机制,操作系统能够有效地管理资源的访问。资源管理是AUTOSAR操作系统的核心功能之一,主要包括:

  • 互斥锁:用于保护共享资源,确保同一时间只有一个任务可以访问特定资源。

  • 信号量:用于控制对共享资源的访问,支持任务间的同步和通信。

  • 内存管理:提供动态和静态内存分配机制,确保系统在运行时能够有效地管理内存资源。

    其中内存管理是AUTOSAR OS的重要特性,我们将在后续的文章中进行介绍。

2.6 多核特性

现有的AUTOSAR-OS基于广泛应用于汽车行业的OSEK/VDX操作系统。AUTOSAR多核操作系统是从现有的AUTOSAR OS派生而来的。

AUTOSAR中的多核操作系统并不是虚拟ECU的概念,而应理解为一个共享相同配置和大部分代码的操作系统,但每个核心操作不同的数据结构。为了减少内存占用,所有核心应使用相同的代码库。有时,花费更多的ROM/Flash是有益的,例如使用本地ROM,并“重复”部分代码以获得更快的ROM/Flash访问。

2.7 其他特性

  1. 通信机制

    AUTOSAR操作系统支持多种通信机制,包括任务间通信(IPC)和网络通信。任务可以通过消息队列、事件和信号等方式进行通信,确保数据在不同任务之间的有效传递。

  2. 配置和标准化

    AUTOSAR操作系统的配置是通过AUTOSAR的标准化工具进行的,开发者可以根据项目需求生成相应的配置文件。这种标准化的配置方式提高了开发效率,减少了系统集成的复杂性。

  3. 应用场景

    AUTOSAR操作系统广泛应用于汽车电子控制单元(ECU),如发动机控制、车身控制、信息娱乐系统等。它为这些系统提供了一个稳定和高效的运行环境,支持复杂的功能和服务。

3 小结

作为AUTOSAR OS系列第一篇,本文对AUTOSAR OS进行了介绍,后续我们将基于Vector Microsar工具,Aurix TC3XX芯片,结合理论和实践,对其结构和机制进行详细剖析。

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

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

相关文章

5位机械工程师如何共享一台工作站的算力?

在现代化的工程领域中,算力已成为推动创新与技术进步的关键因素之一。对于机械工程师而言,强大的计算资源意味着能够更快地进行复杂设计、模拟分析以及优化工作,从而明显提升工作效率与项目质量。然而,资源总是有限的,…

Scala 中 set 的实战应用 :图书管理系统

1. 创建书籍集合 首先,我们创建一个可变的书籍集合,用于存储图书馆中的书籍信息。在Scala中,mutable.Set可以用来创建一个可变的集合。 val books mutable.Set("朝花惜拾", "活着") 2. 添加书籍 我们可以使用操作符…

DevCheck Pro手机硬件检测工具v5.33

前言 DevCheck Pro是一款手机硬件和操作系统信息检测查看工具,该软件的功能非常强大,为用户提供了系统、硬件、应用程序、相机、网络、电池等一系列信息查看功能 安装环境 [名称]:DevCheckPro [版本]:5.33 [大小]&a…

cv::intersectConvexConvex返回其中一个输入点集,两个点集不相交

问题:cv::intersectConvexConvex返回其中一个输入点集,但两个点集并不相交 版本:opencv 3.1.0 git上也有人反馈了intersectConvexConvex sometimes returning one of the input polygons in case of empty intersection #10044 是凸包嵌套判…

【刷题12】ctfshow刷题

来源:ctfshow easyPytHon_P 考点:代码审计,源代码查看 打开后查看源码,发现一个源码地址,打开看看 可以知道在此目录下有个flag.txt文件,再观察源码 from flask import request cmd: str request.form.get…

spark的学习-03

RDD的创建的两种方式: 方式一:并行化一个已存在的集合 方法:parallelize 并行的意思 将一个集合转换为RDD 方式二:读取外部共享存储系统 方法:textFile、wholeTextFile、newAPIHadoopRDD等 读取外部存储系统的数…

axios平替!用浏览器自带的fetch处理AJAX(兼容表单/JSON/文件上传)

fetch 是啥? fetch 函数是 JavaScript 中用于发送网络请求的内置 API,可以替代传统的 XMLHttpRequest。它可以发送 HTTP 请求(如 GET、POST 等),并返回一个 Promise,从而简化异步操作 基本用法 /* 下面是…

Linux(CentOS)安装 Nginx

CentOS版本:CentOS 7 Nginx版本:1.24.0 有两种安装方式 一、通过 yum 安装 需要 root 权限,普通用户使用 sudo 进行命令操作 参考:https://nginx.org/en/linux_packages.html#RHEL 1、安装依赖 sudo yum install yum-utils 2…

[原创]手把手教学之前端0基础到就业——day11( Javascript )

文章目录 day11(Javascript)01Javascript①Javascript是什么②JavaScript组成③ Javascript的书写位置1. 行内式 (不推荐)2 . 内部位置使用 ( 内嵌式 )3. 外部位置使用 ( 外链式 ) 02变量1. 什么是变量2. 定义变量及赋值3. 注意事项4. 命名规范 03输入和输出1) 输出形式12) 输出…

【C++笔记】C++三大特性之继承

【C笔记】C三大特性之继承 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】C三大特性之继承前言一.继承的概念及定义1.1 继承的概念1.2继承的定义1.3继承基类成员访问方式的变化1.4继承类模板 二.基类和派生类间的转…

Colorful/七彩虹iGame G-ONE Plus 12代处理器 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能,自动重建COLORFUL RECOVERY功能,恢复到新机开箱状态。 【格式】:iso 【系统类型】:Windows11 原厂系统下载网址:http://www.bioxt.cn 注意:安装系统会…

【LeetCode】分发糖果 解题报告

135. 分发糖果 - 题目链接 n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,…

ArcGIS从Excel表格文件导入XY数据并定义坐标系与投影的方法

本文介绍在ArcMap软件中,从Excel表格文件中批量导入坐标点数据,将其保存为.shp矢量格式,并定义坐标系、转为投影坐标系的方法。 已知我们有一个Excel表格文件(可以是.xls、.xlsx、.csv等多种不同的表格文件格式)&#…

爬虫 - 二手交易电商平台数据采集 (一)

背景: 近期有一个需求需要采集某电商网站平台的商品数据进行分析。因此,我计划先用Python实现一个简单的版本,以快速测试技术的实现可能性,再用PHP实现一个更完整的版本。文章中涉及的技术仅为学习和测试用途,请勿用于商业或非法用…

「C/C++」C++标准库 之 #include<iostream> 标准输入输出

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

AI出图,在家装行业杀疯了!

家装行业作为一个庞大的产业,长期以来面临着诸多难题,而随着AIGC技术的蓬勃发展,AI促进家装设计行业迎来了新的春天。 在传统家装设计流程中,相信大家对“设计环节充满了繁琐与复杂”有着非常深刻的体验,设计师需要花…

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档,当时刚到公司,发现MySQL的业务核心库,超过亿条的有7张表,最大的表有9亿多条,有37张表超过5百万条,部分表行数如下: 在测试的MySQL环境 : pt-archiv…

深度学习——权重初始化、评估指标、梯度消失和梯度爆炸

文章目录 🌺深度学习面试八股汇总🌺权重初始化零初始化 (Zero Initialization)随机初始化 (Random Initialization)Xavier 初始化(Glorot 初始化)He 初始化正交初始化(Orthogonal Initialization)预训练模型…

Proteus中数码管动态扫描显示不全(已解决)

文章目录 前言解决方法后记 前言 我是直接把以前写的 51 数码管程序复制过来的,当时看的郭天祥的视频,先送段选,消隐后送位选,最后来个 1ms 的延时。 代码在 Proteus 中数码管静态是可以的,动态显示出了问题——显示…

简单说一下Pinia 和 Vuex的区别

Pinia 和 Vuex 是 Vue.js 生态系统中两种状态管理库,它们都用于管理复杂应用的状态。尽管它们的目标相似,但在设计和使用上有许多不同之处。以下是 Pinia 和 Vuex 的主要区别: 1. 设计理念 Vuex 集中式存储:Vuex 采用单一的集中…