高通对于 camera 的代码组织大体是遵循 Android 架构的,但对于最核心的 sensor 端底层设
置、ISP 效果参数等进行了单独的剥离,放在 daemon 进程中进行。
高通msm8909 平台camera 系统软件架构-LMLPHP
一.camera daemon 进程
daemon 进程作为单一进程,main 函数的入口,位置如下:
/project/vendor/qcom/proprietary/mm-camera/mm-camera2/server-imaging/server.c
/project/vendor/qcom/proprietary/mm-camera/mm-camera2/serverimaging/server_process.c
在此函数中,主要做以下几件事情:
1.找到服务节点名称并打开:
boolean get_server_node_name(char *node_name)
2.初始化模块
boolean server_process_module_init
….....temp = modules_list[i].init_mod(modules_list[i].name);....
此处加载 MCT 下的六大模块(树结构下的六大模块)
3.进入主循环处理 HAL 层以及 MCT 的时间和消息,看其枚举定义:
typedef enum _read_fd_type {
RD_FD_HAL, ----------------server_process_hal_event()---返回
真,说明消息传递给 MCT;反之没有;
RD_DS_FD_HAL, ----------server_process_hal_ds_packet()---通过
domain socket 传来自 HAL 层的消息;
RD_PIPE_FD_MCT, ----------------来自 media controller 的消息;
RD_FD_NONE
} read_fd_type;

二.驱动代码架构
camera deamon 代码位于 vendor/qcom/proprietary/mm-camera/mm-camera2 目录下,
在此目录下有 media-controller,server-tuning,server-imaging,我们需要关注的是 mediacontroller 目录,整个树形结构如下:
高通msm8909 平台camera 系统软件架构-LMLPHP
而在 kernel 部分只是进行了 V4L2 的设备注册,IIC 设备注册等简单的动作,主文件
是 msm.c,负责设备的具体注册和相关方法的填充;在 msm_sensor.c 中,主要是维护一个
sensor 结构体 msm_sensor_ctrl_t,同时吧 dts 文件中的配置信息读出来。
高通msm8909 平台camera 系统软件架构-LMLPHP






08-31 17:39