美文网首页Android HIDLAndroidTreble
Android HIDL学习(5) ---- 设计要素

Android HIDL学习(5) ---- 设计要素

作者: 木叶风神 | 来源:发表于2019-04-27 18:30 被阅读0次

前面我们学习了如何使用HIDL来设计或者重构之前在HAL层的代码,而且也对比了一些高性能的编程方式,这里我们在来一下Android的HIDL在设计上的一些考虑。

HIDL指定了数据结构和方法的命名,这些命名类似于JAVA中的类,所以HIDL的语法对于C++和JAVA程序员来说是非常熟悉的,尽管有些关键字不怎么相同,HIDL还使用JAVA的注释方式。

HIDL设计目标

HIDL的设计目标是为以后系统更新的时候不用重新编译HAL的模块,HALs被供应商或者SOC厂商负责被编译成vendor.img烧录到系统的/vendor 分区。这样子在后面系统更新的时候只需要更新vendor分区,不需要更新整个OTA包。

HIDL的设计理念平衡一下三个要素:

可互操作性:在进程中创建可靠的可互相调用的接口,这种接口偶可以通过不同的交叉编译和和配置来编译成不同的架构。HIDL接口是通过版本来定义的,不同版本的接口可以在发布之后改变。

效率:HIDL的设计在进程通信间尽可能最小化拷贝的动作。HIDL定义的数据在C++标准布局数据结构中被传递到C++代码,这些数据结构可以在不解包的情况下使用。由于使用进程间通信会比直接调用来的慢,HIDL也提供了共享内存的方式,HIDL除了RPC通信外,还提供另外两种方式进行数据传输:内存共享和快速消息队列(FMQ)。

直观性:HIDL只有在两个进程需要RPC通信时才使用,从而避免了内存所有权的问题,数据值可以被方法或者回调函数有效的得到返回。将数据传递到HIDL进行传输或者从HIDL接收数据都不会更改数据的所有权,而始终保留在调用函数中。数据只需要在被调用函数的持续时间内保持,并且可以在被调用函数返回后立即销毁。

HIDL语法详细参考下面链接:

https://source.android.com/devices/architecture/hidl

相关文章

  • Android HIDL学习(5) ---- 设计要素

    前面我们学习了如何使用HIDL来设计或者重构之前在HAL层的代码,而且也对比了一些高性能的编程方式,这里我们在来一...

  • android HAL简介

    Android HAL(硬件抽象层)介绍以及调用 Android HIDL学习(1) ---- 简介Android...

  • HIDL实战笔记

    目录 第一篇:HIDL学习笔记之HIDL C++(第一天)第二篇:HIDL学习笔记之HIDL C++(第二天)第三...

  • Android HIDL学习(1) ---- 简介

    HIDL HAL接口定义语言(简称HIDL)适用于指定HAL和其用户之间的接口的一种接口描述语言(IDL)。HID...

  • Android HIDL学习(2) ---- HelloWor

    写在前面 程序员有个癖好,无论是学习什么新知识,都喜欢以HelloWorld作为一个简单的例子来开头,咱们也不例外...

  • HIDL In Telephony

    前置文章 《HIDL》 前言 在 Android 8.0(不含,下同)之前,Telephony 和 modem 之...

  • 超级干货!界面视觉设计 5 要素

    想学习UI设计请加QQ群:439889286 想学习UI设计请百度【詹天巍】 界面视觉设计包含 5 个要素:色...

  • android O hidl

    简单说一个hidl的例子https://www.jianshu.com/p/07459e457cf4 Androi...

  • hidl 性能设计

    1-使用binder 架构存在的问题如果设计的系统是对时间要求比较苛刻,那么采用HIDL 就要考虑性能从frame...

  • Android HIDL学习(6)---Fast Message

    想聊聊FMQ的,无意中看到下面这篇文章,写的很好,所以就直接拿来用了,笑纳笑纳~https://www.jians...

网友评论

    本文标题:Android HIDL学习(5) ---- 设计要素

    本文链接:https://www.haomeiwen.com/subject/xdzknqtx.html