Android Automotive OS | 车载相机HAL

本文介绍了Exterior View System (EVS) 的框架结构,包括EVS Framework、IEvsCamera模块,以及EVS应用和管理器的交互。重点讲解了相机接口、帧管理、C++示例应用和OEM定制,以及内核驱动程序在系统中的作用。EVS涉及硬件抽象层(HIDL)接口和Android Automotive生态。


–This article is excerpted from Google’s official about Automotive , please indicate the source for reprinting–

Exterior View System (EVS)
EVS Framework

evs framework

IEvsCamera
struct CameraDesc {
   string      camera_id;
   int32       vendor_flags;       // Opaque value
}
getCameraInfo() generates (CameraDesc info); 
  • setMaxFrames
 setMaxFramesInFlight(int32 bufferCount) generates (Evs Result result);
EVS 应用

可作为参考实现的 C++ EVS 示例应用 (/packages/services/Car/evs/app)。该应用负责从 EVS 管理器请求视频帧,并将用于显示的已完成的帧发送回 EVS 管理器。EVS 和汽车服务可供使用后,它便立即由 init 启动(设置目标为在开机两 (2) 秒内启动)。原始设备制造商 (OEM) 可视需要修改或替换 EVS 应用。

EVS 管理器

EVS 管理器 (/packages/services/Car/evs/manager) 可提供 EVS 应用所需的构建块,以实现从简单的后视摄像头显示到 6DOF 多摄像头渲染的任何功能。它的接口通过 HIDL 呈现,并且能够接受多个并发客户端。其他应用和服务(特别是汽车服务)可以查询 EVS 管理器状态,以了解 EVS 系统何时处于活动状态。

EVS HIDL 接口

在 EVS 系统中,相机和显示元素均由 android.hardware.automotive.evs 软件包定义。用于实践接口的示例实现(生成合成测试图像并验证图像进行往返的过程)在 /hardware/interfaces/automotive/evs/1.0/default 中提供。

原始设备制造商 (OEM) 负责实现由 /hardware/interfaces/automotive/evs 中的 .hal 文件表示的 API。这种实现负责从物理相机配置和收集数据,并通过 Gralloc 可识别的共享内存缓冲区传送这些数据。实现的显示端负责提供可由应用填充(通常通过 EGL 渲染的方式)的共享内存缓冲区,并优先呈现已完成的帧(在任何可能会显示在物理显示设备上的其他内容之前)。EVS 接口的供应商实现可以存储在 /vendor/… /device/… 或 hardware/…(例如 /hardware/[vendor]/[platform]/evs)下。

内核驱动程序

支持 EVS 堆栈的设备需要使用内核驱动程序。原始设备制造商 (OEM) 无需创建新驱动程序,他们可以选择通过现有相机和/或显示硬件驱动程序来支持 EVS 所需的功能。重复使用驱动程序可能会有好处,对于图像呈现可能需要与其他活动线程协调的显示驱动程序来说尤其如此。Android 8.0 包含一个基于 v4l2 的示例驱动程序(在 packages/services/Car/evs/sampleDriver 中),该驱动程序依靠内核实现 v4l2 支持,并依靠 SurfaceFlinger 呈现输出图像。
未完待续

### Android Automotive OS(AAOS)介绍 Android Automotive OS 是 Google 专门为汽车打造的全功能车载操作系统,它可以独立运行于汽车的信息娱乐系统硬件之上,就像普通操作系统管理设备一样管理汽车的车载系统,无需依赖手机就能提供完整的功能体验。例如车辆可以直接在这个系统上运行各种适配的应用程序,如导航、音乐播放、车辆设置等。它深度集成了汽车的硬件系统,能与汽车的传感器、控制器等进行交互,实现诸如调节车内温度、控制座椅位置等功能 [^1]。 ### Android Auto 介绍 Android Auto 是一种将 Android 手机功能映射到汽车信息娱乐系统屏幕上的技术。它本身并非操作系统,而是需要依赖 Android 手机。用户通过 USB 线或者无线连接将手机与汽车的信息娱乐系统相连,然后手机上的部分应用和功能就会在汽车屏幕上显示,让用户可以在驾驶过程中更安全地使用手机应用,如使用 Google Maps 导航、通过语音控制播放音乐等 [^1]。 ### 区别 - **运行独立性**:Android Automotive OS 独立运行于汽车硬件,不需要与手机连接即可工作;而 Android Auto 必须依赖 Android 手机才能实现其功能 [^1]。 - **系统层面集成**:Android Automotive OS 是深度集成到汽车的硬件系统中,能直接控制汽车的各种硬件设备;Android Auto 主要是将手机应用投射到车载屏幕,对汽车硬件的控制能力有限 [^1]。 ### 功能特点 - **Android Automotive OS**: - **丰富的应用生态**:有自己独立的应用商店,开发者可以专门为其开发适配的应用,涵盖了从娱乐到车辆控制等各个方面的应用。 - **车辆定制化**:汽车制造商可以根据自身需求对系统进行定制,包括界面设计、功能集成等,以满足不同车型的特点和用户需求。 - **深度硬件交互**:能够与汽车的各种硬件进行深度交互,实现对车辆的全面控制和管理。 - **Android Auto**: - **便捷的手机应用扩展**:将手机上常用的应用和功能安全地延伸到汽车屏幕上,用户无需在驾驶时操作手机,提高了驾驶安全性。 - **语音控制为主**:支持语音指令,用户可以通过语音完成导航设置、音乐播放、拨打电话等操作,减少手动操作的干扰 [^1]。 ```python # 此处代码仅为示例,展示一个简单的概念性区分 if has_android_automotive_os: print("This car runs on Android Automotive OS, it can operate independently.") elif has_android_auto and has_android_phone: print("This car uses Android Auto, which depends on an Android phone.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值