编辑推荐: |
本文主要介绍了AUTOSAR AP与CP 开发的异同剖析相关内容。希望对您的学习有所帮助。
本文来自于微信公众号汽车电子与软件,由火龙果软件Alice编辑、推荐。 |
|
一、AUTOSAR CP与AP架构的推出
AUTOSAR CP与AP架构当前都是行业热门话题,简单来说都是汽车电子软件标准中间件架构,适用于不同的场景;
其实,CP架构主要干了两件事:标准化接口与模块化设计:
标准化接口:AUTOSAR CP架构通过定义统一的软件架构和接口,使得不同供应商开发的ECU能够基于同一标准进行开发,从而提高了系统的可移植性和互操作性。这有助于减少因接口不一致导致的兼容性问题,降低系统维护的复杂性和成本。
模块化设计:AUTOSAR CP架构将汽车软件系统划分为不同的软件组件,每个组件都有明确定义的接口,易于模块化开发和维护。这种设计方式使得开发人员可以更加专注于各自领域的开发,同时也方便了系统的升级和扩展。
所以,在做新车型开发时,可以复用/重用之前的开发产出,即便是不同供应商完成的;可以大大的减少重复开发的工作量,提高了开发效率。不过,同步的,CP架构也在一定程度上保证了汽车电子软件的功能安全和信息安全。
既然有了CP 架构,为什么同一个组织又推出了AP架构呢?
我理解是最近5-8年左右,汽车软件系统的复杂性和功能需求急剧增加,比如适应时代需求的智慧座舱、智能驾驶等的发展。传统的CP架构虽然在一定程度上解决了汽车电子系统的标准化和模块化问题,但在面对高度灵活、高性能、动态通信等需求时显得力不从心。
所以AP架构的关键特点在于:动态、灵活,支持高性能计算,整体架构的设计思想与SOA(Service-Oriented
Architecture,面向服务的架构)就是保持一致的,都是基于服务的动态配置、请求:
动态部署和配置:AUTOSAR AP架构支持应用程序的动态部署和配置,使得软件系统的更新和升级更加灵活和高效。这有助于OEM/Tire1快速响应市场需求和技术变化,提升产品的竞争力。
高性能计算:随着汽车智能化程度的提高,对计算性能的要求也越来越高。AP架构能够充分利用多核异构处理器的计算能力,为汽车软件系统提供强大的计算支持,满足复杂应用的需求。
CP架构与AP架构在现如今的汽车电子中是相互依存的,这也是由于他们的特性决定的,下面就从几个方面分析下不同特性的他们在开发SOA或非SOA架构过程有哪些异同点。
二、硬件层面
1)芯片
由于AP要求高算力,所以一般要求是芯片达到SoC或者MPU,算力要求一般高于18000 DMIPs,比如瑞萨的H3,英伟达的Xavier、高通的8155、8295、NXP
S32G系列、芯弛G9Q、G9H等,或者是由高算力平台虚拟出来的硬件平台也是可以的,比较灵活;
CP对算力要求比较低,在一般的MCU上部署就可以了,如英飞凌的TC377、TC387,瑞萨的RH850等,也可以部署在高算力异构SoC的M核或者R核上;
2)硬件相关配置
因为CP架构的应用一般不一定伴随着SOA的应用,如果没有SOA,没有以太网应用,就可以不去配置Ethernet
信息,如通道路由、VLAN、IP,而AP的理念遵循面向服务的架构SOA设计范式,所以一般需要配置Ethernet
信息;
再一个就是Machine的配置,Machine的概念是在AP里才有的,Machine是指一个能够运行自适应应用程序的实体,它包含了必要的硬件资源(如处理器、内存等)和软件环境(如操作系统、运行时环境等)。Machine为自适应应用程序提供了一个运行平台,支持应用程序的动态部署、执行和管理。它允许应用程序在运行时动态地链接服务和客户端,实现功能的灵活扩展和更新。有点类似与虚拟机的概念,可以这么理解下。
所以,在AP中,需要配置Machine,并指定占用芯片的core、内存资源等;当然也要配置其所属功能组(FunctionGroup)与模式状态(MachineMode),这些都是AP专有的。
三、软件架构层
1)操作系统
CP AUTOSAR OS是基于OSEK标准的,蛮多都是RTOS。
AP AUTOSAR OS是POSIX OS,按照AUTOSAR官方文档说明,系统要包含POSIX
51子集,所以其实Linux、QNX、Android都可以部署AP架构;
2)架构Block

CP Block视图
CP架构有明显的层级关系,从上到下,依次是应用层SWC、RTE、BSW、微控制器层(HW);实际运行过程中也严格遵守这种层级关系;BSW模块是与硬件相关的以及通用系统功能,应用功能定义为独立的软件组件SWC,用RTE分离SWC和BSW。,在实际开发分工中也是与此架构层级有关,如应用层软件工程师、BSW开发工程师等;

AP Block视图
但是在AP中,并没有明显的层级关系,这些模块都称为功能集群(Functional
Clusters, FC),大部分的功能模块都属于基础功能Foundation的部分,NM、SM、UCM模块是属于服务功能Service的部分。NM、SM在上图中的Runtime范畴中,UCM在上图中的Configuration范畴内;模块之间都是通过服务接口调用的,如下图NM、SM之间的交互(ARA(AUTOSAR
Runtime for Adaptive Applications)):

四、系统层
1)系统调度
CP AUTOSAR OS采用了固定的任务调度配置策略,这一策略中,系统负责调度并管理OS Task中定义的、来自SWC(软件组件)的可运行实体(Runnable
Entities)。这些可运行实体,例如标记为10ms Runnable和20ms Runnable的实体,按照预设的任务顺序进行执行。在同一SWC内部,不同的可运行实体还可以被进一步设定不同的优先级,以确保它们在执行时能够按照预期的优先级顺序进行处理。
AP AUTOSAR支持多进程机制,其调度策略是动态的,意味着系统能够根据实际情况灵活调整进程或线程的执行顺序。这种动态调度配置是在运行时完成的,即系统在运行过程中根据需求进行配置调整,而不是在编译时或系统启动前固定。
配置信息被记录在与状态管理(State Management, SM)相关的Manifest文件中。这些文件作为系统的元数据,详细描述了系统的配置状态,包括但不限于进程、线程、资源分配等关键信息。
在实现动态调度方面,AP AUTOSAR主要依赖于两个核心模块:执行管理(Execution Management,
EM)和状态管理(SM)。执行管理模块负责具体的任务调度工作,确保系统内的各个任务(或称为Process、Thread)能够按照预定的或动态调整的策略执行。状态管理模块则负责监控和记录系统的状态信息,为执行管理提供必要的决策依据,同时也将配置信息和维护状态记录在Manifest文件中。
2)Manifest
CP中的配置都是静态定义好的,所以并不需要Manifest的概念;
在AP中,使用Manifest描述软件配置的关键组件,比如以下几种Manifest:
Application Design Manifest:
描述所有设计相关的建模,侧重于数据类型、服务接口、Persistency接口、序列化属性、服务接口等方面的定义。Application
Design中定义的artifacts独立于特定的部署,方便在不同的部署场景下复用软件实现。
Execution Manifest:
用于提供将应用部署到AP所需的信息,使得应用软件代码尽可能独立于部署的环境,增加软件复用的几率。Execution
Manifest控制应用的实例化,包括在同一台机器上实例化多次、将应用部署到多台机器上并在每台机器上实例化等。还定义了启动配置、资源管理(特别是分配Resource
Group)以及面向服务通信的配置等。
Service Instance Manifest:
侧重于服务接口和实例的部署配置。定义一个服务如何在特定的通信技术(如SOME/IP)中表示,以及服务实例在特定通信技术中所需的凭据、E2E保护配置、安全保护配置、日志配置等。
Machine Manifest:
允许针对特定的硬件(Machine)配置AP实例。侧重于网络连接配置(如静态IP地址或DHCP配置)、服务发现配置、机器状态定义、功能组定义、FC实现配置(如操作系统提供的用户列表)、Crypto平台模块配置、PHM(Platform
Health Management,平台健康管理)配置、时间同步配置以及可用硬件资源描述等。
五、软件层
1)开发接口
CP AUTOSAR常用的接口是Sender-Receiver,涉及服务的,如SOA服务会用到Client-Server;
基于AP AUTOSAR开发的是Service Interface类型;
CP AUTOSAR主要使用的是C语言,相关的标准是MISRA C。
AP AUTOSAR主要使用的是C++语言,当前支持C++11、C++14。
2)软件配置
AP AUTOSAR应用层需要进行Mapping配置,如,InstanceToMachineMapping:是把服务的实例与Machine关联上,指定服务实例运行的Machine;InstanceToPortProtoTypeMapping:指定服务实例对应的Port类型,即说明该服务通过该port是提供服务还是请求服务;这些在CP开发中是没有的;
另外,因为AP是通过进程进行应用管理的,所以需要配置Executable、Process等信息,可以类比为电脑的EXE执行文件的配置。
六、小 结
由上述的系列分析可以明确,CP与AP在开发过程及其所需环境方面展现出显著的差异,这些差异深植于它们各自成立时所设定的目标之中。鉴于两者都是当前汽车行业广泛采用的软件架构模式,作为该行业的从业人员,掌握如何更有效地学习和应用这些架构显得尤为重要。
|