2022-09-18

汽车操作系统

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

车控操作系统

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

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.polestar.com/sdk/polestar2-sys-img.xml

Volvo System Image
https://developer.volvocars.com/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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容