Android的硬件接口HAL-2 HIDL

2024-03-29 16:20
文章标签 android 接口 hal 硬件 hidl

本文主要是介绍Android的硬件接口HAL-2 HIDL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

没写完哈。

不说废话,直接上干活。

1 创建HAL

2 生成桩代码

PACKAGE=vendor.xxx.hardware.logiuvc2@1.0
LOC=vendor/xxx/hardware/xxx2/1.0/default
hidl-gen -o $LOC -Lc++-impl -rvendor.xxx.hardware:vendor/xxx/hardware -randroid.hidl:system/libhidl/transport $PACKAGE

这里有个疑问是包名和路径的关系,回去在自己的板子上再试试吧。

3 增加hash

hidl-gen -Lhash -randroid.hardware.xxx:hardware/interfaces/xxx -randroid.hidl:system/libhidl/transport android.hardware.xxx@1.0 > hardware/interfaces/xxx/current.txt

4 生成Android.bp

source system/tools/hidl/update-makefiles-helper.sh

do_makefiles_update vendor.xxx.hardware:vendor/xxx android.hardware:hardware/interfaces android.hidl:system/libhidl/transport

5 在default中增加service.cpp

6 hw_get_module

7 在default中增加Android.bp

cc_binary {
    name: "android.hardware.xxx-service",
    defaults: ["hidl_defaults"],
    vendor: true,
    relative_install_path: "hw",
    srcs: [
        "service.cpp",
        "xxx.cpp"
    ],
    init_rc: ["android.hardware.xxx-service.rc"],
    shared_libs: [
        "vendor.xxx.hardware.xxx2@1.0",
        "libhidlbase",
        "libhidltransport",
        "liblog",
        "libutils",
    ],
    vintf_fragments: ["android.hardware.xxx-service.xml"],
}

8 android.hardware.xxx-service.xml

<manifest version="1.0" type="device">

<hal format="hidl">

<name>vendor.xxx.hardware.xxx2</name>

<transport>hwbinder</transport>

<version>1.0</version>

<interface>

<name>Ilogihid</name>

<instance>default</instance>

</interface>

</hal>

</manifest>

9 android.hardware.xxx-service.rc

service android.hardware.xxx-service /vendor/bin/hw/android.hardware.xxx-service

class hal

user system

group system

10 增加client

11 绕开Android12限制。

12 编译

使用mmm

13 兼容性矩阵

adb push compatibility_matrix.device.xml /system/etc/vintf/compatibility_matrix.device.xml
adb push compatibility_matrix.xml /vendor/etc/vintf/compatibility_matrix.xml
adb push android.hardware.tc_uvc-service.xml /vendor/etc/vintf/manifest/android.hardware.xxx-service.xml

14 使用脚本拷贝

scp scm@192.168.1.1:/LINUX/android/out/target/product/kalama/vendor/bin/hw/android.hardware.tc_uvc-service .
adb push android.hardware.xxx-service /vendor/bin/hw
scp scm@192.168.1.1:/LINUX/android/out/target/product/kalama/system/bin/xxx_test .
adb push xxx_test /vendor/bin
#scp scm@192.168.1.1:/LINUX/android/out/target/product/kalama/vendor/lib/hw/vendor.xxx.hardware.xxx2@1.0-impl.so .
#adb push vendor.hardware.test@1.0-impl.so /vendor/lib/hw
scp scm@192.168.1.1:/LINUX/android/out/target/product/kalama/vendor/lib/vendor.xxx.hardware.xxx2@1.0.so .
adb push vendor.xxx.hardware.xxx2@1.0.so /vendor/lib
scp scm@192.168.1.1:/LINUX/android/out/target/product/kalama/vendor/lib64/vendor.xxx.hardware.xxx2@1.0.so .
adb push vendor.xxx.hardware.xxx2@1.0.so /vendor/lib64

15 关闭tee

adb setenforce 0

16 运行

开两个窗口

。。。

这篇关于Android的硬件接口HAL-2 HIDL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859061

相关文章

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I