我们知道,google为了保护硬件厂商的信息,在Android中添加了一层,也就是大名鼎鼎的HAL
层。
在看HAL的编写方法的过程中,会发现整个模块貌似没有一个入口。一般说来模块都要有个入口,
比如应用程序有main函数,可以为加载器进行加载执行,dll文件有dllmain,而对于我们自己写的
动态链接库,我们可以对库中导出的任何符号进行调用。
问题来了,Android中的HAL是比较具有通用性的,需要上层的函数对其进行加载调用,Android的
HAL加载器是如何实现对不同的Hardware Module进行通用性的调用的呢?
带着这个疑问查看Android源码,会发现Android中实现调用HAL是通过hw_get_module实现的。
1.Camera 服务启动流程概览
cameraserver 与 provider 这两个进程启动、初始化的调用逻辑,如下图
总体逻辑顺序:
provider 进程启动,注册;
camera