hal layer designed
2021 年 7月 19—20日 贺兴枞
导读:
原文链接:https://blog.csdn.net/mr_raptor/article/details/8069588
01hal层的通信方式:
framework和hal运行于不同的进程,所有的HAL采用新的HIDL技术来完成。作为此变化的一部分,运行 Android 8.0 的设备必须支持绑定式
(本设计采用绑定式 HAL。以 HAL 接口定义语言 (HIDL) 表示的 HAL。这些 HAL 取代了早期 Android 版本中使用的传统 HAL 和旧版 HAL。在绑定式 HAL 中,Android 框架和 HAL 之间通过 Binder 进程间通信 (IPC) 调用进行通信。所有在推出时即搭载了 Android 8.0 或后续版本的设备都必须只支持绑定式 HAL。)
02hal层与上下层的联系:
下层驱动:直接往驱动节点里面读写数据,操作驱动节点的方法主要有三个open、write、read。
上层框架层:通过回调函数,types.hal定义的是一些数据结构,xxx.hal定义的是从Framework往HAL调用的接口(不需要的话可以不要),而xxxCallback.hal则是HAL往Framework回调的接口。
03 .mk以及.bp配置文件的生成
写完这三个hal文件后,在源码根目录下导环境变量,然后进入到/hardware/interfaces目录执行如下命令:
./update-makefiles.sh
这样就会生成一些bp文件、mk文件和一些必要的东西。
04从驱动节点读写数据
函数原型: int read(int handle,void *buf,int len);