rk3368 Android9.0 HIDL调试记录

2023-11-15

rk3368 Android9.0 HIDL调试记录

Platform: RK3368
OS: Android 9.0
Kernel: 4.4.194


在Android 8.0以后,低层已重新编写以采用更加模块化的新架构。必须支持使用 HIDL 语言编写的 HAL,下面列出了一些例外情况。这些 HAL 可以是绑定式 HAL 也可以是直通式 HAL.

绑定式 HAL 以 HAL 接口定义语言 (HIDL) 或 Android 接口定义语言 (AIDL) 表示的 HAL。这些 HAL 取代了早期 Android 版本中使用的传统 HAL 和旧版 HAL。在绑定式 HAL 中,Android 框架和 HAL 之间通过 Binder 进程间通信 (IPC) 调用进行通信。所有在推出时即搭载了 Android 8.0 或更高版本的设备都必须只支持绑定式 HAL。

直通式 HAL 以 HIDL 封装的传统 HAL 或旧版 HAL。这些 HAL 封装了现有的 HAL,可在绑定模式和 Same-Process(直通)模式下使用。升级到 Android 8.0 的设备可以使用直通式 HAL。

此调试记录为绑定式 HAL;

1. 使用hidl-gen工具生成接口

1.1 hidl-gen使用方法

$ hidl-gen -h
usage: hidl-gen [-p <root path>] -o <output path> -L <language> [-O <owner>] (-r <interface root>)+ [-v] [-d <depfile>] FQNAME...

Process FQNAME, PACKAGE(.SUBPACKAGE)*@[0-9]+.[0-9]+(::TYPE)?, to create output.

         -h: Prints this menu.
         -L <language>: The following options are available:
            check           : Parses the interface to see if valid but doesn't write any files.
            c++             : (internal) (deprecated) Generates C++ interface files for talking to HIDL interfaces.
            c++-headers     : (internal) Generates C++ headers for interface files for talking to HIDL interfaces.
            c++-sources     : (internal) Generates C++ sources for interface files for talking to HIDL interfaces.
            export-header   : Generates a header file from @export enumerations to help maintain legacy code.
            c++-impl        : Generates boilerplate implementation of a hidl interface in C++ (for convenience).
            c++-impl-headers: c++-impl but headers only
            c++-impl-sources: c++-impl but sources only
            c++-adapter     : Takes a x.(y+n) interface and mocks an x.y interface.
            c++-adapter-headers: c++-adapter but helper headers only
            c++-adapter-sources: c++-adapter but helper sources only
            c++-adapter-main: c++-adapter but the adapter binary source only
            java            : (internal) Generates Java library for talking to HIDL interfaces in Java.
            java-constants  : (internal) Like export-header but for Java (always created by -Lmakefile if @export exists).
            vts             : (internal) Generates vts proto files for use in vtsd.
            makefile        : (removed) Used to generate makefiles for -Ljava and -Ljava-constants.
            androidbp       : (internal) Generates Soong bp files for -Lc++-headers, -Lc++-sources, -Ljava, -Ljava-constants, and -Lc++-adapter.
            androidbp-impl  : Generates boilerplate bp files for implementation created with -Lc++-impl.
            hash            : Prints hashes of interface in `current.txt` format to standard out.
         -O <owner>: The owner of the module for -Landroidbp(-impl)?.
         -o <output path>: Location to output files.
         -p <root path>: Android build root, defaults to $ANDROID_BUILD_TOP or pwd.
         -r <package:path root>: E.g., android.hardware:hardware/interfaces.
         -v: verbose output.
         -d <depfile>: location of depfile to write to.

1.2 创建HIDL文件

  1. 新建目录vendor/sample/hardware/interfaces/helloworld/1.0
  2. 创建文件: IHelloWorld.hal IHelloWorldCallback.hal types.hal

不要直接在Android源码目录hardware/interfaces下面添加和修改接口,在API锁定分支中不允许更改VNDK库列表.

其中vendor/sample/hardware/interfaces就是hidl的root path了.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rk3368 Android9.0 HIDL调试记录 的相关文章

随机推荐

  • C语言牛顿法解非线性方程组,牛顿法解非线性方程组

    Newton cpp Defines the entry point for the console application include stdafx h include include define N 3 void get Chuz
  • python 安装包时添加国内源

    python 安装包时添加国内源 清华源 i https pypi tuna tsinghua edu cn simple
  • 苹果mac电脑如何安装虚拟机?CrossOver Mac2023

    Mac虚拟机怎么安装系统 macOS系统无法正常安装Windows应用 无法正常使用Windows系统中的文件 在macOS系统中安装虚拟机是一种比较恰当的解决方案 mac电脑怎么安装虚拟机 mac电脑安装虚拟机需要根据个人需求 有选择性地
  • 如何保证APP兼容性覆盖测试和手机APP测试如何进行兼容性测试?(学习笔记)

    1 背景 众所周知 APP兼容性覆盖测试一直以来被认为是一个高成本 耗时低效 耗人力的测试工作 且兼容性测试是一项必须要进行的测试项目 因为有不同的机型 系统平台 分辨率 网络 厂商 数据兼容以及不同兼容问题场景需要进行覆盖 本文章将通过本
  • G - 和为给定数

    蒜头君给出若干个整数 询问其中是否有一对数的和等于给定的数 输入格式 共三行 第一行是整数 n 0 lt n le 100 000 n 0
  • Arduino IDE将FreeRTOS用于STM32

    介绍 适用于STM32F103C8的FreeRTOS STM32F103C是一种能够使用FreeRTOS的ARM Cortex M3处理器 我们直接在Arduino IDE中开始使用STM32F103C8的FreeRTOS 我们也可以使用K
  • JDBC那些事(二)——查询结果集_ResultSet

    接上一篇 JDBC的查询返回值相对复杂一点 所以单独写 上一篇写到stmt excuteUpdate sql 执行结果返回的是int类型的值 此处的sql语句为非查询语句 而如果要执行查询语句则需要使用Statement对象的excuteQ
  • Wlan——锐捷智分网络解决方案及其配置

    目录 智分解决方案 一代智分解决方案 二代智分解决方案 三代智分解决方案 智分 解决方案 技术原理 隧道建立 智分 方案的配置 配置基础信息 配置微AP的无线信号 调整微AP的射频参数 宿舍场景特点 房间小 单个房间用户少 房间密集 房间之
  • Java中集合接口Collection,集合List,Set

    集合的特点 1 集合的长度是可变的 2 集合只能存储对象 3 集合不可以存储基本数据类型 数组与集合的区别 1 数组的长度是固定的 集合的长度是可变的 2 数组只能存储基本数据类型 集合只能存储对象 注意 Java中集合接口和实现类都位于j
  • jenkins学习系列之PMD静态代码检测

    一 jenkins集成PMD流程 实际生产中 上线的代码往往要经过检测 满足一些规则才行 这些规则可以是直接使用官方的规则 也可以是自己写的 因为目前的工作和java有关 所以这里以java代码静态检测 PMD为例子来进行讲解 这里PMD是
  • mysql sql语句太长_MySQL SQL语句过长引起的问题

    我现在做数据统计 后台数据库用的是MySQL 有一个常用的需求 查询未订购用户的访问PV 用户唯一性标识是用户手机号 第一种写法 SELECT COUNT 1 FROM day resinlog 2012 06 12 WHERE mobil
  • 【数据结构】线性结构—循环队列及其基本操作

    通过顺序表存储队列 当入队时队尾指针 1 出队时队头指针也 1 通过取余运算使队头指针和队尾指针在顺序表的表头和表尾移动以实现循环 当队为空队时候 队头指针和队尾指针都指向同一个位置 当队非空的时候队尾指针指向队尾元素的下一位 那么若队满的
  • sql语句查询重复的数据

    查找所有重复标题的记录 SELECT FROM t info a WHERE SELECT COUNT FROM t info WHERE Title a Title gt 1 ORDER BY Title DESC 一 查找重复记录 1
  • PMBOK(第六版) PMP笔记——《第十章 项目沟通管理》

    第十章 项目沟通管理 PM 大多数时间都用在与干系人的沟通上 第十章有三个过程 规划沟通管理 根据干系人的需求 制定沟通管理计划 管理沟通 根据沟通管理计划发布 收集 处理信息 监督沟通 确保在正确时间将正确信息传递给正确的人 1 10 1
  • 花生壳内网穿透+Windows系统,如何搭建网站?

    1 准备工作 在百度搜索 Win7下安装Apache PHP MySQL 根据搜到的教程自行安装WAMP环境 如果在网页上键入http 127 0 0 1 nbsp 出现以下页面表示您的服务器已经建好 下一步就是关键 如何通过花生壳内网穿透
  • 大家平时天天说的分布式系统到底是什么东西

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 从单块系统说起 团队越来越大 业务越来越复杂 分布式出现 庞大系统分而治之 分布式系统所带来的技术问题 一句话总结 什么是分布式系统设计和开发经验 补充说明 中
  • 【死磕 NIO】— ServerSocketChannel 的应用实例

    大家好 我是大明哥 一个专注于 死磕 Java 的程序员 死磕 Java 系列为作者 chenssy 倾情打造的 Java 系列文章 深入分析 Java 相关技术核心原理及源码 死磕 Java https www cmsblogs com
  • java大数据开发训练营--Java Web 后端技术基础(下)之Spring IOC控制反转

    一 Spring概述 1 1 Spring是什么 Spring是分层的 Java SE EE应用 full stack 全栈式 轻量级开源框架 提供了表现层 SpringMVC和持久层 Spring JDBC Template以及 业务层
  • 目标检测 3—— 人脸检测

    笔记来源 DeepLearning 500 questions 上次学习了目标检测的基本概念 Two Stage和 One Stage 算法 1 目标检测Two Stage 2 目标检测One Stage 4 人脸检测 在目标检测领域可以划
  • rk3368 Android9.0 HIDL调试记录

    rk3368 Android9 0 HIDL调试记录 Platform RK3368 OS Android 9 0 Kernel 4 4 194 文章目录 rk3368 Android9 0 HIDL调试记录 1 使用hidl gen工具生