构建 Android 硬件抽象层(HAL):以 Acme 接近传感器为例
1. 构建 HAL 的概述
在构建 HAL 时,设备驱动的 API 是 HAL 底层的约束条件。对于不同情况,API 的可修改性有所不同。接下来,要考虑上层(接近应用代码)的需求。HAL 是构建将硬件暴露给应用程序的服务的第一步。此时,应用开发者(最好不是编写 HAL 的人)编写一个应用程序是个不错的选择,需要思考应用程序中自然的接口是什么,是否处理了初始化、配置、应用程序故障和访问控制等边缘情况,以及当有新功能的传感器出现时,API 是否能在保持向后兼容性的情况下适应变化。
当应用需求大致明确后,将应用 API 转换为硬件所需的一组操作相对直接。大部分繁重工作将由实际将硬件暴露给应用程序的 Java 服务完成,HAL 层只需提供一组简洁、最小化的硬件操作,以便在此基础上构建服务。
以 Acme 接近传感器的 HAL 为例,其设计简洁,避免掩盖构建 HAL 的过程。由于电源是重要考虑因素,该传感器在运行时会耗电,若不能关闭会无谓消耗电池,因此 HAL 设计中有开启和关闭传感器的调用。开启传感器的调用接受一个参数(输出参数结构体),驱动会用轮询时传递给 HAL 的精度参数的可接受最小值和最大值填充该结构体,同时包含设备轮询时返回的接近数据的最大值和最小值。传感器开启后,可对其进行轮询以获取接近值,轮询调用接受一个参数,即所需的接近值精度,该精度参数限制传感器获取返回值时消耗的资源(如时间或电池),轮询会返回传感器的当前值。当所有客户端应用程序使用完传感器后,可将其关闭以节省电池。
构建将原生代码连接到 Android 框架的代码可分为四个步骤:
1. 定义 HAL:创建指定接近服
超级会员免费看
订阅专栏 解锁全文
2935

被折叠的 条评论
为什么被折叠?



