汽车操作系统
按照《车用操作系统标准体系》划分,
汽车操作做系统分为两类,分别是
车控操作系统
车控操作系统主要面向经典车辆控制领域;其中车控操作系统又分为
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。
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 模拟器
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。