一、联系
内核同源:安卓系统使用裁剪后的Linux内核,因此Linux内核中的驱动框架、写法在安卓中100%通用。一个Linux字符设备驱动可以直接编译进安卓内核并运行。
二、区别
安卓在Linux内核驱动之上增加了HAL层(硬件抽象层),形成完整的分层架构,导致驱动调用链路完全不同:
| 调用链路 | /dev 设备文件 → 内核驱动 → 硬件 | |
| HAL层 | 有 | |
| 协议风险 | ||
| 版本适配 |
三、常见误区
只写一个能在Linux下跑的驱动,放到安卓中无法被App调用,因为缺少HAL层及上层链路的打通。
简言之:安卓驱动 = Linux内核驱动 + 安卓专属HAL适配层,前者保证硬件能被内核控制,后者保证能被安卓App调用且方便厂商闭源。
夜雨聆风