
AUTOSAR AP 硬核知识点梳理(2)—— 架构详解(下)
作者:刘向
出品:汽车电子与软件
Adaptive AUTOSAR 平台架构
在AP架构下,同一台机器上的自适应应用程序都实现为一个独立的进程,都有自己的逻辑内存和命名空间相互隔离,以确保相互不受干扰。这是由操作系统的MMU内存管理单元提供的。这也是AP模块化的由来。
单个AA可能包含一个或多个进程,可以部署到单个AP实例上,也可以分布在多个AP实例上。从模块来看,每个进程都是由操作系统从可执行文件中实例化的,一个可执行文件可实例化多次。这些进程都是运行在操作系统之上的,进程是动态运行的,何时调用、进程生存周期、资源占用及进程结束等,都是系统动态管理,好比你手机上的App何时打开、运行后其会调用的资源及何时关闭都是动态进行的。
AP平台需要提供相关模块的SDK和守护进程等。应用程序可以调用SDK提供的API来调用模块的功能,比如应用程序之间的通信,我们可以调用COM模块提供的API,可以进行片内或片间通信。
这跟CP架构有着显著的区别,在CP架构下,所有应用都是静态配置的,即应用的进程在OS中被写死,软件功能在编译阶段就确定了,其调用的周期也是确定,因此基于CP架构的软件一旦有小的应用变更就得重新配置和编译。
应用程序的加载/启动是通过使用EM的功能进行管理的,并且需要在系统集成或运行时进行适当的配置才能启动应用程序,软件功能在运行时才可以确定。从EM的角度来看,所有功能集群都是应用程序。
Adaptive autosar是一种用于高性能计算ECU的软件平台,它支持自适应应用程序的开发和运行¹。它由两部分组成:基础(Foundation)和服务(Service)。基础包括了操作系统接口、执行管理、网络管理、识别访问管理、加密、更新和配置管理等功能。服务包括了通信管理、RESTful、时间同步、诊断、状态管理、持久性、平台健康管理、日志和跟踪等功能。
Adaptive autosar各模块的功能如下:
执行管理 execution management (EM)
功能描述:EM负责系统执行管理的所有方面,包括平台初始化和应用的启动和关闭。EM和OS一起工作执行应用运行时间的调度。
AP AUTOSAR执行管理模块可以实现以下功能:
1.启动和关闭Machine,配置和加载应用程序,处理启动和关闭过程中的错误和异常。
2.控制应用程序的执行状态,设置应用程序的调度参数,监控应用程序的状态、资源、性能,处理应用程序之间的同步和通信。
3.管理功能组的状态,实现功能组之间的协调和一致性,根据不同的场景和需求,动态地切换功能组的状态。
4.处理平台和应用程序中发生的错误和异常,根据不同的错误类型和严重程度,采取相应的恢复措施。
状态管理(State Management)
State Management Function Group State change request flow
功能描述:
SM模块(State Management)是一种实现状态管理和事件处理功能的软件组件。SM模块负责所有和AP平台运行状态相关的方面。
主要功能:
▸处理输入的事件,如诊断请求、唤醒事件、错误恢复等,并根据事件类型和优先级来设置内部状态。
▸ 将自适应应用程序进程分配到功能组状态(inc. the Machine State)
▸ 根据状态更改启动/停止应用程序
▸ AUTOSAR触发器接口——用于提示状态更改
▸ AUTOSAR ara::exec::StateClient API
▸ 与ara::diag, ara::exec, ara::nm & ara::ucm模块的交互
执行管理与SM的交互
核心类型:Core TYPES
功能描述:
定义了多个FCs的公共类接口和公共功能。包括接口定义中经常使用的常见复杂数据类型。
主要功能:
•由于AP平台它具有功能安全的属性,通常而言我们是不可以使用C++的异常机制的(由于ASIL认证的c++编译器缺乏异常支撑),因此AP平台它引入了ara::core::ErrorCode错误码以及ara::core::Result的概念。允许进程在不抛出异常的情况下进行错误处理。
•AP还定义了一些了增强的数据类型,这些数据类型统一封装在了ARA::core的命名空间。包括AP自己的内存分配相关的数据类型如:Vector、Map和String,以及Manifest中一些constructs用到的类型如StringView,Span,Optional和Variant。
•全局初始化函数,ara::core::Initialize和ara::core:: Deinitialize,此调用必须在main()内部进行。
操作系统接口OSI
功能描述:
AUTOSAR Adaptive platform(AP)运行在高性能处理器上,直接基于通用的操作系统。
操作系统接口的要求如下:
1.OS提供符合PSE51标准的POSIX兼容的API接口。
2.OS支持周期性时间触发的执行功能,进程中的算法可以是时间触发的。
3.OS需要提供允许应用程序的时间触发执行的机制。触发因素需要至少但不限于包含外部计时器。
4.OSI支持C++11,AP进程是用C++编写的,接口应该符合c++11
5.OS支持把EM拉起作为第一个执行进程。
6.OS支持为进程或进程组配置内存和CPU资源预算。
7.OS提供进程绑定到CPU Core的机制。
8.OS支持软件实体对系统对象访问的权限管理机制,应用进程只能通过授权的系统调用来
9.OS提供多进程,以便支持应用程序隔离。
通信管理(Communication Management)
功能描述:
通信管理模块是一个用于实现服务导向通信的模块,它支持多种通信协议,如SOME/IP, DDS, IPC等。
图片来自网络
主要功能:
1.将协议无关的服务导向通信映射到配置的协议绑定,并执行相应的协议。应用程序代码使用服务导向通信的API,而不需要关心底层的协议细节。
2.支持服务发现、服务注册、服务请求、服务响应等功能,实现不同的通信模式和质量,如点对点、发布订阅、可靠、实时等。
3.支持事件、方法和字段三种类型的服务,实现不同的数据交换和远程调用功能。事件用于发布和订阅数据,方法用于请求和响应数据,字段用于获取和设置数据。
4.支持端到端通信保护,使用E2E机制对通信数据进行校验和保护,防止数据被篡改或丢失。
5.支持网络管理,使用NM机制对网络状态进行监控和控制,实现网络节点的加入和退出,以及网络唤醒和休眠等功能。
6.支持安全通信,使用加密、签名、认证等技术保证通信的机密性、完整性和可信性。
诊断管理(Diagnostics)
功能描述:
诊断管理模块(DM)是一种实现基于ISO 14229-1(UDS)和ISO 13400-2(DoIP)的ISO 14229-5(UDSonIP)的诊断服务的软件组件。DM代表Foundation层上AP平台的功能集群,支持多个诊断客户端和多个软件集群。
每个SWCL是一个单独的软件更新包, SWCL都可以创建自己的诊断服务器实例,每个诊断服务器都有自己的诊断地址和服务,可以独立地进行诊断操作 。每个诊断服务器都需要一个数据库和一个文本文件(ru:candela文件)来配置其功能 。
主要功能:
1.诊断通信:实现诊断服务器的功能,支持一些标准的UDS服务,如例行控制、数据标识符、故障码读取和清除等。DM模块还可以将诊断请求调度到相应的自适应应用程序,以便执行特定的诊断操作。
2.事件存储:负责故障诊断代码(DTC)的管理,包括DTC的存储、更新、删除、启用和禁用等。DM模块还可以管理DTC相关的快照记录和扩展数据记录,以及提供内部转换的通知。
3.传输层:支持DoIP作为传输协议,实现车辆发现和诊断通信。DoIP是一种基于IP网络的车辆诊断协议,可以与诊断基础设施(如诊断客户端、生产/车间测试仪)进行车外通信。
网络管理(Network Management)
Architecture overview with example applications
功能描述:NM是一种网络管理机制,用于控制和协调负责协调内部协调状态机中基础网络(部分网络,VLAN或物理通道)的正常运行和总线睡眠模式之间的转换。它的目的是在满足ECU节点正常通信需求的情况下,又能节省汽车蓄电池电量。
Overview Of Network Management
主要功能:
1.网络请求和释放:NM模块为状态管理提供了一个服务接口,用于请求和释放网络以及查询其实际状态。NM模块协调不同实例(网络句柄)的请求,并通过网络提供汇总的计算机请求。
2.网络状态监测:NM模块通过周期性的NM消息来监测网络状态,包括唤醒、准备睡眠、睡眠等。NM消息的接收指示发送节点要保持NM群集处于唤醒状态。如果任何节点准备好进入睡眠模式,它将停止发送NM消息,但是只要接收到来自其他节点的NM消息,它将推迟过渡到睡眠模式。最后,如果由于不再接收NM消息而经过了专用计时器,则每个节点都将执行到睡眠模式的转换。
3.部分网络管理:如果使用了部分网络功能,则NM消息可以包含部分网络(PN)请求,从而使ECU可以忽略不请求与ECU相关的任何PN的NM消息。尽管在其他部分网络中仍在进行通讯,但这可以关闭ECU(或其部分)。
身份识别访问管理(Identify Access Management)
Access Matrix (图片来自AUTOSAR官网)
功能描述:
身份识别访问管理块(IAM)是一种实现基于策略的访问控制功能的软件组件。IAM模块为应用程序提供权限隔离以及受攻击时权限越级的保护功能,同时,IAM模块还能方便集成人员在部署时就能验证应用对于资源的访问权限。
主要功能:
1.访问控制决策:IAM模块通过Policy Decision Point(PDP)基于访问控制策略来决定应用是否被允许执行请求动作。访问控制策略是一些约束条件,描述了访问特定资源或服务需要哪些Capability。Capability是应用身份信息的一个属性,在定义Application Manifest时,开发者为每个应用分配对应的Capability。
2.访问控制执行:IAM模块通过Policy Enforcement Point(PEP)在应用提出请求时中断控制流,向PDP请求访问控制决策并根据决策返回的布尔值进行对应操作。PEP可以实现对Service、Foundation FC以及相关模型资源的访问控制。
3.应用身份识别:IAM模块通过Execution Management(EM)模块获取应用身份信息,以便进行访问控制决策和执行。EM模块会根据模型信息,去创建Adaptive应用的运行实例,所以EM也需要去负责追踪运行进程的属性,也即正在运行的应用的PID、UID、Key或UUID。
加密(Cryptography)
High level architecture of Cryptography
功能描述:
加密模块(Crypto)是一种实现通用加密操作和安全密钥管理的软件组件。Crypto模块支持在运行时动态生成密钥和加密作业,以及对数据流进行操作。为了减少存储需求,可以将密钥内部存储在加密后端中,也可以外部存储并按需导入。Crypto模块旨在支持将对安全敏感的操作和决策封装在单独的组件中,例如硬件安全模块(HSM)。
主要功能:
1.加密操作:Crypto模块提供了一系列标准化的加密算法和模式,用于对数据进行加密、解密、签名、验证等操作。Crypto模块支持对称加密(例如AES、DES、3DES等)、非对称加密(例如RSA、ECC等)、哈希函数(例如SHA-1、SHA-2、SHA-3等)、消息认证码(例如HMAC、CMAC等)和数字签名(例如ECDSA、RSA-PSS等)。
2.密钥管理:Crypto模块提供了一系列标准化的接口和服务,用于管理密钥的生成、存储、导入、导出、更新、删除等操作。Crypto模块支持本地密钥生成和基于现有供应密钥的端到端保护的密钥引入。Crypto模块还支持对密钥进行访问控制和使用限制,以提高密钥的安全性。
3.证书管理:Crypto模块提供了一系列标准化的接口和服务,用于管理证书的生成、存储、导入、导出、验证等操作。Crypto模块支持X.509证书格式,以及基于PKCS#7或PKCS#10的证书请求和响应。
日志和跟踪(Log & Trace)
功能描述:
一种实现日志记录和追踪功能的软件组件。Log模块可以在开发期间以及生产中和生产后使用日志记录和追踪功能,以便对自适应平台的运行状态进行监测和分析。
主要功能:
▸ 本地日志 (输出到控制台或文件)日志记录,Log模块提供了一系列标准化的方法,用于向不同的日志接收器发送日志信息,例如通信总线、系统上的文件和串行控制台等。Log模块支持多种日志级别,例如错误、警告、信息、调试等,以及多种日志格式。Log模块还可以自动在日志信息中添加时间戳和其他元数据,以便进行排序和过滤。
▸ 远程日志记录(使用DLT协议),Log模块提供了一种基于DLT协议的追踪功能,用于对自适应平台的运行时行为进行分析和优化。DLT协议是一种标准化的交付和表示格式,可以将日志信息打包为标准化的帧,并添加一些额外的信息,例如ECU ID、软件集群ID等。Log模块可以将LT帧发送到追踪工具或其他设备,以便进行可视化和分析。
更新配置管理UCM
UCM Logical Architecture
功能描述:
为了支持Adaptive Platform上软件的更改,更新和配置管理器(UCM)提供了处理软件更新请求的Adaptive Platform服务。
主要功能:
UCM可以接收来自后端服务器或诊断测试仪的软件更新请求,负责在自适应平台上安装、更新、删除和保留软件记录。
UCM可以处理不同格式和类型的软件包,包括完整包、增量包、后端包、车辆包等,根据软件包清单中的元数据和依赖关系,执行相应的操作。
UCM可以与UCM主服务器协作,以在车辆内部分发和协调多个UCM客户端的软件包,实现软件的一致性和同步。
UCM可以在软件安装或更新后,执行激活或回退操作,确保软件的可靠性和安全性。
UCM可以提供软件的版本信息、状态信息、错误信息等,供客户端查询和监控。
PHM模块(Platform Health Management)
功能描述:
PHM是一种实现平台健康管理和功能安全功能的软件组件。PHM模块监控运行的应用程序,当受监控实体发生错误/故障时,PHM模块可以触发恢复操作。恢复操作具体由集成人员根据平台软件架构需求,在Manifest文件当中定义。
主要功能:
▸ 全局和本地监督(Global and local supervision)
▸ 逻辑监督(Logical supervision)
▸ 恢复操作 (Recovery actions)
▸ 存活监督(Alive supervision)
▸ 截止日期监控(Deadline monitoring )
持久化(Persistence)
功能描述:
Persistence模块是一种让自适应平台的软件可以保存和读取数据的软件组件。它可以把数据存储在不会丢失的存储器中,即使车辆关机或重启也不会影响。它提供了一个统一的接口,让软件可以方便地访问不同的存储位置。
主要功能:
▸ 键值存储(Key-Value storage)
▸ 文件代理访问(File proxy access)
▸ 并行访问数据(Parallel access to data)
▸ 持久数据的安装、更新和回滚(Installation, Update and Rollback of Persistent Data)
时间同步(ara::tsync)
功能描述:
ara::tsync它提供了时间同步的功能,使得不同的节点可以共享一个全局的时间基准。ara::tsync的主要特点有:
•基于服务的架构,可以动态地发现和订阅不同的时间基准资源,如全局时间主节点或从属时间基准节点。
•支持多种网络绑定,如SOME/IP、REST、DDS等,以适应不同的通信需求和场景。
•支持即时时间同步和延迟时间同步两种模式,分别用于高精度和低精度的时间同步需求。
•支持用户数据的传输,可以在时间同步消息中附加额外的信息,如诊断数据、配置数据等。
主要功能:
▸ 启动和关闭 (Startup & shutdown)
▸ 时间校正 (Time correction)
▸ 时基提供者和使用者模式 (Time base provider and consumer modes)
入侵检测系统管理(ara::idsm)
IDS Overview
功能描述:
ara::idsm它提供了入侵检测系统管理的功能,使得不同的安全传感器可以向它报告安全事件,并对安全事件进行过滤和处理。ara::idsm的主要特点有:
•基于服务的架构,可以动态地发现和订阅不同的安全事件资源,如入侵检测系统主节点或从属入侵检测系统节点。
•支持多种网络绑定,如SOME/IP、REST、DDS等,以适应不同的通信需求和场景。
•支持用户定义的诊断事件内存,可以将安全事件存储在独立于主诊断事件内存的内存中。
•支持用户数据的传输,可以在安全事件消息中附加额外的信息,如诊断数据、配置数据等。
主要功能:
▸ 事件生成 (Event generation)
▸ 报告模式(Reporting modes)
▸ 过滤器链条 (Filter chains)
▸ QSevs的传播和认证(Propagation & authentication of Qsevs)
▸ Rate and traffic limitation
▸ 访问控制(包括诊断访问)Access control (including diagnostic access)
防火墙(ara::fw)
Architecture of the FC Firewall (图片来自AUTOSAR官网)
功能描述:
ara::FW是AP AUTOSAR中的一个模块,它提供了防火墙的功能,使得不同的节点可以根据防火墙规则来控制网络访问和通信。
ara::FW的主要特点有:
基于服务的架构,可以动态地发现和订阅不同的防火墙资源,如防火墙主节点或从属防火墙节点。
支持多种网络绑定,如SOME/IP、REST、DDS等,以适应不同的通信需求和场景。
支持用户定义的防火墙规则,可以在运行时动态地修改和应用防火墙规则,以适应不同的车辆状态或外部系统的变化。
支持用户数据的传输,可以在防火墙消息中附加额外的信息,如诊断数据、配置数据等。
文章转载自公众号:汽车电子与软件
