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的主要元素及其详细介绍:
-
任务(Task)
任务是AUTOSAR OS的基本执行单元。每个任务代表一个独立的执行线程,负责执行特定的功能。任务的主要特性包括:
- 优先级:每个任务可以被分配一个优先级,操作系统根据优先级进行调度。
- 状态:任务可以处于不同的状态,如就绪、运行、阻塞和终止。
- 调度:支持多种调度策略,如优先级调度和时间片调度。
-
事件(Event)
事件是用于任务间通信和同步的机制。任务可以等待特定事件的发生,以便在事件发生时被唤醒。事件的主要特性包括:
- 事件触发:可以由其他任务或中断触发。
- 事件组合:多个事件可以组合使用,以实现复杂的同步需求。
-
信号(Signal)
信号用于任务间的简单通信,允许一个任务通知另一个任务某个状态的变化。信号的主要特性包括:
- 异步通知:信号可以在任务之间异步传递,适用于需要快速响应的场景。
- 状态指示:信号可以用于指示某个条件的满足或状态的变化。
-
定时器(Alarm)
定时器用于管理时间相关的任务调度。AUTOSAR OS支持定时器功能,以实现周期性任务和延时任务。定时器的主要特性包括:
- 周期性定时器:可以设置为在特定时间间隔内重复触发。
- 单次定时器:可以设置为在指定时间后触发一次。
-
计数器(Counter)
Counter在AUTOSAR OS中用于跟踪时间和调度周期性任务。它是实现定时器和调度器功能的基础。Counter可分类为:
-
硬件计数器:直接与硬件定时器关联,提供高精度的时间跟踪。
-
软件计数器:在软件层面实现,适用于不需要高精度的场景。
其具有如下功能:
-
时间跟踪:Counter用于跟踪系统的运行时间,支持定时器的触发和任务的调度。
-
周期性调度:通过设置计数器的周期,可以实现周期性任务的调度。例如,某个任务可以在每个计数器溢出时被唤醒。
-
延时功能:Counter可以用于实现任务的延时执行,开发者可以设置任务在特定时间后执行。
Counter通常与Alarm(定时器)一起使用:
-
Alarm的触发:Alarm可以配置为在Counter达到特定值时触发,从而唤醒相应的任务。
-
周期性Alarm:通过结合Counter和Alarm,可以实现周期性任务的调度,例如每隔一定时间执行某个任务。
-
资源(Resource)
资源是共享的系统对象,多个任务可能需要访问这些资源。AUTOSAR OS提供了资源管理机制,以确保安全访问。资源的主要特性包括:
- 互斥锁:用于保护共享资源,确保同一时间只有一个任务可以访问特定资源。
- 信号量:用于控制对共享资源的访问,支持任务间的同步。
-
调度表(Schedule Table)
Autosar OS相对于OSEK增加了调度表,调度表是一个数据结构,用于定义在特定时间间隔内需要执行的任务和事件。它描述了任务的执行顺序、周期、优先级以及其他调度相关的信息。调度表的主要目的是确保系统中的任务能够按照预定的时间和顺序执行,从而满足实时性要求。
-
中断(Interrupt)
中断是AUTOSAR OS的重要组成部分,允许系统在特定事件发生时立即响应。中断的主要特性包括:
- 中断服务例程(ISR):可以注册中断服务例程,以处理特定的中断事件。
- 中断优先级:支持中断优先级管理,确保高优先级的中断能够及时响应。
-
应用程序(OS-Application)
应用程序是运行在AUTOSAR OS上的具体功能实现,通常由多个任务和组件组成。应用程序的主要特性包括:
- 模块化:应用程序可以由多个模块组成,每个模块实现特定的功能。
- 可重用性:应用程序组件可以在不同的项目中重用,提高开发效率。
-
跨应用访问(IOC)
Autosar OS各个OS-Application是内存隔离的,因此在实施了内存保护之后就会需要跨应用的数据接口,使用到IOC的功能。
-
运行时环境(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 其他特性
-
通信机制
AUTOSAR操作系统支持多种通信机制,包括任务间通信(IPC)和网络通信。任务可以通过消息队列、事件和信号等方式进行通信,确保数据在不同任务之间的有效传递。
-
配置和标准化
AUTOSAR操作系统的配置是通过AUTOSAR的标准化工具进行的,开发者可以根据项目需求生成相应的配置文件。这种标准化的配置方式提高了开发效率,减少了系统集成的复杂性。
-
应用场景
AUTOSAR操作系统广泛应用于汽车电子控制单元(ECU),如发动机控制、车身控制、信息娱乐系统等。它为这些系统提供了一个稳定和高效的运行环境,支持复杂的功能和服务。
3 小结
作为AUTOSAR OS系列第一篇,本文对AUTOSAR OS进行了介绍,后续我们将基于Vector Microsar工具,Aurix TC3XX芯片,结合理论和实践,对其结构和机制进行详细剖析。