分享

2022

 昵称55828825 2023-10-31 发布于北京

汽车操作系统

按照《车用操作系统标准体系》划分,
汽车操作做系统分为两类,分别是

车控操作系统

车控操作系统主要面向经典车辆控制领域;其中车控操作系统又分为

1. 安全车控操作系统

安全车控操作系统主要是车规级实时操作系统(RTOS)内核,,支持MCU等控制芯片,兼容国际主流的系统软件中间件如 ClassicAUTOSAR 标准等,满足车辆动力电子、底盘电子、车身电子等实时控制功能安全应用需求,面向车辆动力系统、底盘系统、车身系统等传统控制领域,负责整车控制;其需要极高的实时性,可靠性,计算能力和(功能和信息)安全性。
各个ECU可以理解为分布式架构中的各个点。

域控制器是什么?

简单来说,域控制器可以将汽车电子各部分功能划分成几个领域,如动力传动域、车身电子域、辅助驾驶域等等,然后利用处理能力强大的多核CPU/GPU芯片相对集中的控制域内原本归属各个ECU的大部分功能,以此来取代传统的分布式架构。

2.智能驾驶操作系统

面向智能驾驶(域控制器)领域,负责自动 驾驶相关感知、规划、决策相关功能的实现。要求较高的安全性和可靠性,主流的是Autoware(开源)、Nvidia Drive、百度的Apollo、Autopilot(特斯拉)、大众vw.OS、华为MDC智能驾驶计算平台架构-VOS/AOS;

AUTOSAR应用软件层

应用软件层(Application Software Layer,ASW)包含若干个软件组件(Software Component,SWC),软件组件间通过端口(Port)进行交互。每个软件组件可以包含一个或者多个运行实体(Runnable Entity,RE,多个操作系统即为多个运行实体),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。


车载操作系统

主要面向信息娱乐和智能座舱领域。
车载操作系统 主要面向信息娱乐和智能座舱(ivi ,In-Vehicle Infotainment),负责 HMI 交 互和智能座舱相关功能的实现。对安全性、可靠性低于车控操作系统和智能驾驶操作系统;
包括一下几个

1.Andoroid系车载操作系统

Android座舱系统分两种,一种是Android AutoMotive ,另一种是基于Android手机版操作系统进行有限的定制化开发的ROM型操作系统

2. QNX智能车载操作系统

QNX的产品包括:车载信息娱乐系统(QNX CAR Platform for Infotainment)、数字座舱系统(QNX Platform for Digital Cockpits)和驾驶辅助系统平台(QNX Platform for ADAS),为开发人员提供了灵活的工具选择,适用于车载环境的人机交互界面,并支持Android应用程序。

3. 鸿蒙车载操作系统-HOS

华为自己搞了一套CC架构,CC架构采用的是“分布式网关+域控制器”的模式,重点打造了座舱(CDC)、整车控制(VDC)和智能驾驶(MDC)三大平台, 对应的操作系统就是鸿蒙座舱操作系统 HOS、智能车控操作系统 VOS和智能驾驶操作系统 AOS。


无标题.png

4. AliOS整车智能操作系统

斑马智行全新一代智能座舱操作系统基于AliOS打造,它最大的亮点是采用一种全新的多核分布融合架构,包含生态娱乐核、安全仪表核、实时自驾核、实时车控核,既有负责安全的微内核,也有宏内核,可同时满足车内不同域的功能隔离和功能安全要求。并通过SOA的框架把多核整合起来成为一个虚拟化的整体大操作系统,实现了对单个OS的集中管理。斑马智行智能座舱操作系统分为了三个Core,分别是仪表Core、车机Core以及AI智能Core,通过系统级Fusion技术将三个系统整体融合打通。可同时支持仪表Core和车机Core的运行。阶段的整车架构中并行有信息娱乐系统、仪表系统、自动驾驶系统、车控系统等几大类操作系统,且不同系统之间分布执行。相比多个OS独立并行的架构,多核异构分布融合系统将更具优势。AliOS操作系统基于自主可控的SOA框架,已经实现了跨多个OS,跨多个域,跨多个端的整套的服务框架,可以助力车企高效低成本地实现车型的差异化、多样化功能和服务的订阅化等等。
斑马智行提出了AliOS操作系统演进三部曲战略,即智能车机操作系统、智能座舱操作系统、智能整车操作系统。目前已经进入到了座舱OS阶段。


Android Automotive 架构

借助各种总线拓扑,很多汽车子系统都可以实现互连以及与车载信息娱乐 (IVI) 系统的连接。不同的制造商提供的确切总线类型和协议之间有很大差异(甚至同一品牌的不同车型之间也是如此),例如控制器局域网 (CAN) 总线、区域互连网路 (LIN) 总线、面向媒体的系统传输 (MOST) 总线以及汽车级以太网和 TCP/IP 网络(如 BroadR-Reach)。

Android Automotive 的硬件抽象层 (HAL) 为 Android 框架提供了一致的接口(无需考虑物理传输层)。此车载 HAL 是开发 Android Automotive 实现的接口。

系统集成商可以将特定于功能的平台 HAL 接口(如 HVAC)与特定于技术的网络接口(如 CAN 总线)连接,以实现车载 HAL 模块。典型的实现可能包括运行专有实时操作系统 (RTOS) 的专用微控制器单元 (MCU),该微控制器单元用于 CAN 总线访问或类似操作,可通过串行链路连接到运行 Android Automotive 的 CPU。除了专用 MCU,还可以将总线访问作为虚拟 CPU 来实现。只要实现符合车载 HAL 的接口要求,每个合作伙伴都可以选择适合硬件的架构。

Android Automative的现状

1.Android Studio 模拟器

image

system镜像
Polestar 2 System Image
https://developer./sdk/polestar2-sys-img.xml

Volvo System Image
https://developer./sdk/volvo-sys-img.xml

2 Android Automotive预装的app


从图上可以看出主要包括了Launcher、空调、电台、电话、多媒体、设置、地图等,其中地图现在只支持googlemap,
packages/services/Car/car_product/build/car.mk 这个文件中列出了汽车系统中专有的模块:

BOARD_PLAT_PUBLIC_SEPOLICY_DIR += packages/services/Car/car_product/sepolicy/public   
BOARD_PLAT_PRIVATE_SEPOLICY_DIR += packages/services/Car/car_product/sepolicy/private

# Automotive specific packages
PRODUCT_PACKAGES +=     CarService     CarTrustAgentService     CarDialerApp     CarRadioApp     OverviewApp     CarLauncher     CarLensPickerApp     LocalMediaPlayer     CarMediaApp     CarMessengerApp     CarHvacApp     CarMapsPlaceholder     CarLatinIME \                                                                                                                                                                                           
    CarSettings \ 
    CarUsbHandler     android.car     car-frameworks-service     com.android.car.procfsinspector     libcar-framework-service-jni   
# System Server components 
PRODUCT_SYSTEM_SERVER_JARS += car-frameworks-service

# should add to BOOT_JARS only once
ifeq (,$(INCLUDED_ANDROID_CAR_TO_PRODUCT_BOOT_JARS))                                                                                                                                                        
PRODUCT_BOOT_JARS +=     android.car
INCLUDED_ANDROID_CAR_TO_PRODUCT_BOOT_JARS := yes
endif

3 Android Automotive针对车的一些接口、服务

以上的API没有包含在Android Framework SDK中,而是生成在android.car.jar中,源码编译时需要通过在Android.mk中添加LOCAL_JAVA_LIBRARIES += android.car 加入编译,Android Studio需要添加 android.car.jar加入编译,通过INCLUDED_ANDROID_CAR_TO_PRODUCT_BOOT_JARS 加入运行时。


从ECU到Android App的架构图


IVehicle提供了车身信息通信的接口,比如空调、车速等车身信息,通过上面接口进行状态的监听和下发,CAN总线上报的信息将会下发给订阅者(Android层实现对应的服务)。
从packages/services/Car/service/src/com/android/car/ICarImpl.java中可以看到,Car所包含的服务列表

 // Be careful with order. Service depending on other service should be inited later.
        List<CarServiceBase> allServices = new ArrayList<>();
        allServices.add(mFeatureController);
        allServices.add(mCarUserService);
        allServices.add(mSystemActivityMonitoringService);
        allServices.add(mCarPowerManagementService);
        allServices.add(mCarPropertyService);
        allServices.add(mCarDrivingStateService);
        allServices.add(mCarOccupantZoneService);
        allServices.add(mCarUXRestrictionsService);
        addServiceIfNonNull(allServices, mOccupantAwarenessService);
        allServices.add(mCarPackageManagerService);
        allServices.add(mCarInputService);
        allServices.add(mGarageModeService);
        addServiceIfNonNull(allServices, mCarUserNoticeService);
        allServices.add(mAppFocusService);
        allServices.add(mCarAudioService);
        allServices.add(mCarNightService);
        allServices.add(mFixedActivityService);
        allServices.add(mInstrumentClusterService);
        allServices.add(mSystemStateControllerService);
        allServices.add(mPerUserCarServiceHelper);
        allServices.add(mCarBluetoothService);
        allServices.add(mCarProjectionService);
        addServiceIfNonNull(allServices, mCarDiagnosticService);
        addServiceIfNonNull(allServices, mCarStorageMonitoringService);
        allServices.add(mCarConfigurationService);
        addServiceIfNonNull(allServices, mVmsBrokerService);
        allServices.add(mCarTrustedDeviceService);
        allServices.add(mCarMediaService);
        allServices.add(mCarLocationService);
        allServices.add(mCarBugreportManagerService);
        allServices.add(mCarWatchdogService);
        // Always put mCarExperimentalFeatureServiceController in last.
        addServiceIfNonNull(allServices, mCarExperimentalFeatureServiceController);
        mAllServices = allServices.toArray(new CarServiceBase[allServices.size()]);

在应用层中获取车控对象,以空调为例


Car 对象是Android framework层提供的包含了车控服务的一个类,里面包含了HVAC_SERVICE(空调)、CAR_DRIVING_STATE_SERVICE(档位)等一系列的服务,通过Car 对象拿到对应的Manager,比如HvacManager。
HvacManager通过注册HardwareCallback回调,来监听空调的各种开关、温度变化的状态。
操作空调是通过设置键值对来实现,如截图中的mHvacManager.setBooleanProperty(CarHvacManager.ID_ZONED_AC_ON, VehicleAreaSeat.SEAT_ROW_1_LEFT,true);


4 Android Automotive的仪表方案

仪表是车载系统的一个重要组成部分,Android Automotive使用方案的是投屏。
因为仪表是一个安全件,所以使用Android的投屏是通过视频流的方式投到运行qnx这类系统上。

5 Android Automotive的倒车影像

倒车影像是现代汽车必备的一项能力,Android Automotive的方案是是用c++单独写一个EVS,使其能在系统上电后2秒内能够显示摄像头的数据。



和Phone提供了GMS(google mobile service)一样,AutoMotive 也提供了谷歌的一个一套服务GAS(google Automotive Service)


搭载谷歌服务也和手机一样,需要通过谷歌的测试,发布app也是通过Google Play。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多