AndroidAutomotive模块介绍(一)整体介绍

news2024/11/25 4:30:18

前言

Android Automotive 是一个基本 Android 平台,可运行 IVI 系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。

本系列文档将会系统的介绍 Android Automotive 的功能、架构、逻辑等。模块逻辑将从 应用api接口、系统服务、底层服务,各层展开介绍。本篇文档将从整体的角度描述 Android Automotive,例如,定义、功能、架构等,后续将从各层展开详细描述。
下一篇:AndroidAutomotive模块介绍(二)应用及接口介绍

正文

1、介绍

1.1 定义

什么是 Android Automotive?

Android Automotive 是一个基本 Android 平台,可运行 IVI (In-Vehicle Infotainment)系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。

Android Automotive 可为车载信息娱乐系统和车机提供开放性、自定义和规模化特性。开放性在免费的开源代码库中提供基本的车载信息娱乐功能,可进一步提升效率。借助自定义特性,实现人员能够在适当的情况下实现商品的差异化。规模化特性是通过 Android 的通用框架、语言和 API 来实现的,所有这些都使得全球数十万 Android 开发者的开发专长和成品软件得以重复使用。

1.2 发展

1.2.1 Android O 版本特性

Google 在 Android O 版本上新增了 Treble 化,对 Android 系统的框架进行了一次较大的改变,打算彻底解决 Android 系统碎片化的问题,让制造商以更低的成本、更轻松、更快速的将设备升级到新版的 Android 系统,Google 称这个架构为 Treble 架构。Android O 版本之前的系统架构中,Android Framework 与 Android Hal 是打包成一个 system.img 的,Framework 与 Hal 之间是紧耦合的,通过链接对应的硬件 so 库的方式建立功能交互,所以 Android Framework 的升级的同时也需要对 Android Hal 进行升级。

Android O 版本之前通信架构:
在这里插入图片描述

Android O 之后的版本,Android 更新了系统框架设计,成为 Treble 架构,架构将 Hal 层与 Framework 层分离,将 Android 系统层服务打包到 system.img 中,Android Hal 打包到 vendor.img 中。引入了 HIDL 的接口语言来处理 Framework 与 Hal 之间的通信。

Android O 版本之后的通信架构:
在这里插入图片描述

1.2.2 Android Automotive 发展

Android O 版本中推出了 Treble 架构的同时又推出了 Android Automotive 功能,该功能是专门为车载而设计的一个功能模块。同时也表示 Google 正式进军汽车车载领域。

Android Automotive 就是 Android 平台,在 Android 强大的功能基础上扩展了 Android 在车载上的功能,增加了对汽车特定要求、功能和技术的支持,成为一个一站式全栈车载信息娱乐平台。

Google 在多年前已经布局车载领域,2014 年推出了 Android Auto,专门为驾驶环境而设计的一个 APP。功能是将手机端的应用投屏到车机上,在有线或者无线连接的基础上,将手机端的应用、信息、界面显示到车机屏幕上,扩展车机的功能使用。

基于手机端的 Android Auto 方案,Google 将适合车载的功能集成在车载 Android 系统,推出了 Android Automotive,这样解决了需要有线或者无线连接的通信介质,这样开发的重点就在车机端,可以和车身信号进行交互,做到车机与各 ECU 件之间功能的完美融合,但是对于应用来说,车机端的应用还是依赖各厂商的定制,提供的原生应用比较少。

2、架构

2.1 原生架构图

这里引用一张原生的架构图,来看下 Android Automotive 架构:
在这里插入图片描述

从上面的原生架构图中,我们可以发现,Google 把 Android Automotive 分为 System Apps、Android Framewrok API、Android System Servies、Vehicle Hal 四层功能。

  • System Apps:车载上层的应用软件,主要用于实现人机交互功能,包括空调显示、车辆健康、泊车辅助等。
  • Android Framework API:提供给上层应用的车辆 API 接口。
  • Android System Services:系统中与车相关的服务,可以统称为 CarService,由很多个子 Service 组成,包括 CarHavcService、CarSensorService 等。
  • Vehicle Hal:用于定义 OEM 可以实现的车辆属性的接口。Android Automotive 的硬件抽象层 (HAL) 为 Android 框架提供了一致的接口。系统集成商可以将特定于功能的平台 HAL 接口(如 HVAC)与特定于技术的网络接口(如 CAN 总线)连接,以实现车载 HAL 模块。典型的实现可能包括运行专有实时操作系统 (RTOS) 的专用微控制器单元 (MCU),该微控制器单元用于 CAN 总线访问或类似操作,可通过串行链路连接到运行 Android Automotive 的 CPU。除了专用 MCU,还可以将总线访问作为虚拟 CPU 来实现。只要实现符合车载 HAL 的接口要求,每个合作伙伴都可以选择适合硬件的架构。

2.2 架构图

那么将原生架构图扩展开来,整体架构图如下所示:
在这里插入图片描述

上图中是 Android Automotive 的架构图,上层的 CarServiceApp 通过 CarServiceApi 接口调用到 Framework 服务中,中间通过 Aidl 通信方式交互。Framework CarService 服务通过 android.hardware.automotive.vehicle 库 Hidl 方式与 Vehicle Hal 层交互。Vehicle Hal 层下是与 OEM 厂商建立交互逻辑,实现方式多样。
在这里插入图片描述

上图在架构上对于 Car API 与 Car Service 展开子模块描述,Android Automotive 中 APP、Service 包含许多子模块,后续将会展开描述

2.3 架构简要描述

2.3.1 Car Service App

Car Service App 代码路径为:/android/packages/apps/Car。

路径下包含许多应用,Android Automotive 为系统定制了一些专门适用车载系统的应用,以代替传统的手机应用模块。
在这里插入图片描述

2.3.2 Car Service Api

Car Service Api 代码路径为:/android/packages/services/Car/car-lib。

系统应用或者 OEM 三方应用通过 Car Service Api 调用 Car Service 功能。
在这里插入图片描述

2.3.3 Car Service

Car Service 代码路径为:/android/packages/services/Car。

系统框架层提供了多个模块,来对 Android Automotive 进行支持,最重要的有一个服务CarService (com.android.car)。

CarService 是一个类似 Android 系统中 SystemSever 的服务。它由一个服务启动,而里面又控制着数十个子模块服务。CarService 中 CarService 只作为服务的入口,具体的业务逻辑都在内部的子服务中处理。
在这里插入图片描述
在这里插入图片描述

2.3.4 Vehicle Hal

Vehicle Hal 代码路径为:/android/hardware/interfaces/automotive。

VehicleService是一个native服务,代码实现在目录 /android/hardware/interfaces/automotive/vehicle/2.0/default。

硬件抽象层主要是提供了一个native服务android.hardware.automotive.vehicle@2.0-service,负责处理车辆相关的业务。

3、总结

本篇文档中主要从整体的角度分析 Android Automotive,包括系统架构以及架构各层之间的交互,简要描述架构各层的功能及代码路径。后续将会对于各层功能展开描述。

下一篇:AndroidAutomotive模块介绍(二)应用及接口介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1591462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arduino _按键点亮——led

int8_t led_pin13;int8_t led2_pin12; void setup() {// put your setup code here, to run once:pinMode(led_pin, INPUT);//输入pinMode(led2_pin, OUTPUT);//输出 }void loop() {// put your main code here, to run repeatedly:if(digitalRead(led_pin)1){//digitalRead(…

校园通用型发生网络安全事件解决方案

已知校园多教学楼、多教学机房、非标网络机房缺乏防护设备、检测设备、安全保护软件(杀软) 切断所有外网,断网处理!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 部署路由系统可选择爱快、routeros、openwrt。等。可将日志上传到日志分析系统。《这项非必要的》 部署开源防火…

弱口令入侵FE企业管理平台【附口令】

漏洞描述 飞企互联-FE企业运营管理平台 druid路径弱口令,攻击者可能通过尝试弱口令,非法进入系统,恶意操作或者收集信息进一步攻击利用。 漏洞复现 1、Fofa app"飞企互联-FE企业运营管理平台"2、零零信安 (html_banner360浏览…

使用Docker Registry-v2搭建镜像仓库详细教程

我们使用docker来部署私有化镜像仓库… 1、下载 registry:v2 镜像 docker pull registry:22、在私有仓库所在的主机目录新建一个文件夹,用于持久化保存仓库中的镜像 mkdir -p /opt/registry3、启动registry镜像 使用docker镜像启动私有仓库容器服务,…

突破编程_前端_SVG(circle 圆形)

1 circle 元素的基本属性和用法 SVG 的 <circle> 元素用于在SVG文档中绘制圆形。它具有几个基本属性&#xff0c;允许定义圆形的大小、位置、填充颜色和边框样式。以下是 <circle> 元素的基本属性及其详细解释&#xff1a; 1.1 cx 和 cy 描述&#xff1a;这两个…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

系列文章目录 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记01&#xff1a;赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记02&#xff1a;开发环境安装 嵌入式|蓝桥杯STM32G431&#xff08;…

用Python编写GUI程序将JPEG文件按文件名顺序插入PDF文件

在Python编程中&#xff0c;处理文件和图像是常见的任务之一。最近&#xff0c;我遇到了一个有趣的问题&#xff1a;如何通过编写一个GUI程序来将一个文件夹中的JPEG文件按文件名顺序插入到一个新的PDF文件中&#xff1f;在这篇博客中&#xff0c;我将分享我使用Python、wxPyth…

基于springboot+vue+Mysql的论坛管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【vue】v-model.lazy等(非实时渲染)

v-model&#xff1a;实时渲染v-model.lazy&#xff1a;失去焦点/按回车后&#xff0c;才渲染v-model.number&#xff1a;值转换为数字v-model.trim&#xff1a;去除首尾空格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

1.汉诺塔问题

C力扣 汉诺塔 class Solution { public:void hanota(vector<int>& a, vector<int>& b, vector<int>& c) {dfs(a,b,c,a.size());}void dfs(vector<int>& a, vector<int>& b, vector<int>& c,int n){if(n1){c.push…

图片批量高效缩放,批量缩放GIF图片并在缩放后以bmp位图保存

在这个数字化时代&#xff0c;图片已经成为我们生活和工作中不可或缺的一部分。无论是制作海报、设计网站&#xff0c;还是日常分享&#xff0c;我们都需要对图片进行处理。然而&#xff0c;面对大量的GIF图片&#xff0c;如何高效地进行缩放并转换为BMP位图&#xff0c;成为了…

链表中是否有环【c语言】

定义两个指针&#xff0c;一个每次跳跃两个节点&#xff08;快指针&#xff09;&#xff0c;另一个每次跳跃一个节点&#xff08;慢指针&#xff09;。如果存在环&#xff0c;他们最终会在环中的某个点相遇。如果链表无环&#xff0c;快指针将先到达链表尾端。 #include <s…

【智能算法】教与学优化算法 (TLBO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2012年&#xff0c;RV Rao等人受到班级内教师教学和学生学习启发&#xff0c;提出了教与学优化算法&#xff08;Teaching-learning-based Optimization, TLBO&#xff09;。 2.算法原理 2.1算法思…

2024最方便申请SSL证书方法介绍

申请SSL证书其实就像你去官方机构办个身份证&#xff0c;证明你的网站是合法且安全的。这里给你白话一点的简单步骤&#xff1a; 步骤一&#xff1a;确定需求 1. 域名&#xff1a;确保你有一个要申请证书的域名&#xff0c;就是你的网站地址&#xff0c;比如 www.example.com。…

【C++算法模板】数论:欧拉筛,线性查找质数的算法

文章目录 1&#xff09;传统找质数的方法&#xff08;优化筛选次数&#xff09;2&#xff09;欧拉筛 1&#xff09;传统找质数的方法&#xff08;优化筛选次数&#xff09; bool isPrime(int num) {for(int i2;i<sqrt(num)) {if(num%i0)return false;}return true; }如果要…

SSL、TLS和HTTPS:网络安全的重要基石

随着互联网的快速发展&#xff0c;网络安全问题日益凸显。为了保护数据在传输过程中的安全&#xff0c;各种加密协议和技术应运而生。SSL&#xff08;安全套接层&#xff09;、TLS&#xff08;传输层安全&#xff09;和HTTPS&#xff08;超文本传输安全协议&#xff09;是三个最…

Git 解决分支冲突

一、前言 一直习惯于 add commit push 的三步走&#xff0c;偶然间看到了一个评论说在 push 之前还有一个 pull&#xff0c;小小的疑问就埋在了我的心里。于是我就先了解了 pull 的工作原理&#xff0c;就是先拉取代码&#xff08;fetch&#xff09;再合并分支&#xff08;mer…

Xilinx Zynq UltraScale+ MPSoC无人机控制器

官方术语是无人驾驶飞行器&#xff08;UAV&#xff09;&#xff0c;这显然有点拗口&#xff0c;所以我们更喜欢说无人机。在过去的几十年里&#xff0c;无人机技术有了巨大的进步。我们为一个客户开发了一个无人机的飞行和视频控制器。 客户挑战 客户需要一种混合FPGA/CPU硬件&…

【matlab下的双目内窥镜标定与深度测距-双目成像原理】

【matlab下的双目内窥镜标定与深度测距-双目成像原理】 这里是目录 介绍坐标系关系相互关系推导三角测量 介绍 双目成像是一种利用两个摄像头或摄像头组成的系统同时捕捉场景信息的技术。它模拟了人类双眼视觉系统&#xff0c;通过两个视角获取的图像来计算深度信息&#xff…