
HIDL 接口实现
1.背景
HIDL
的目标是,可以在无需重新构建
HAL
的情况下替换框架。
HAL
将由供应商或
SOC
制造商构建,并放置在设备的/vendor 分区中,这样一来,就可以在其自己的分区中通过
OTA
替换框架,而无需重新编译
HAL
。
2.操作实例
以实例着手,在 MTK 平台,用 HIDL 实现调用 linux 内核驱动,并测试。
功能: a. 在 linux 驱动层实现 helloworld 驱动,功能打印”hello world!”。
b. 设计 HIDL 调用内核中 helloworld 驱动,并提供接口。
c.测试程序调用 HIDL 接口,观察是否有打印“hello world!”
d. 实现 HIDL 与驱动层的数据交互,HIDL 往内核写入数据并读取。
3.流程
HIDL 接口文件定义
有关 HIDL 接口与软件包规则,详见接口和软件包。
进入代码 HAL 层,自定义软件包。先以 attempt 命名这个例子。
创建 attempt HIDL 目录:
mkdir -p hardware/interfaces/attempt/1.0/default
接着创建 Iattempt.hal。
hardware/interfaces/attempt/1.0/IAttempt.hal
意义: 定义一个 Iattempt.hal 接口文件,简单添加一个 helloWorld 接口,传入 string,返回 string,
在之后会实现这个接口。
生成 HAL 相关文件
使用 hidl-gen 工具 hidl-gen 代码路径为:system/tools/hidl
(1) 安装 hidl-gen:
dx@jacob-All-Series:~/project/AndroidQ$lunch
dx@jacob-All-Series:~/project/AndroidQ$make hidl-gen
编译后路径存在
: out/host/linux-x86/bin/hidl-gen
评论0