读书人

Qualcomm 8X camera daemon过程浅析

发布时间: 2013-03-28 10:20:24 作者: rapoo

Qualcomm 8X camera daemon进程浅析

一个camera的守护进程在init进程中,开启的一个service

此线程与具体的sensor相关联,负责对sensor进行具体细节的操作

此为daemon进程的主线程,从server node收集事件,纷发给mctl thread,根据config的name,与server节点进行队列,不断轮询其事件队列,获取command,进行全局处理

mctl_pp_poll_thread

mctl thread

main daemon thread

Daemon

此线程与kernel中config节点进行通信,轮询节点的消息队列中获得command,进行全局处理

(每一个config节点都对应一个mctl thread)

Qualcomm 8X camera daemon过程浅析


抽象层到内核层的大致流程:

抽象层主要通过server node和config node将command下到内核,对应的节点驱动将command通过事件队列进行管理。

而daemon进程通过开启对应的线程,不停的对事件队列进行轮询,处理上层下的command

在main daemon thread中重要的任务:

一:将sensor操作关联的硬件组件加载进来,还要加载一些必备的库,为camera的正式工作铺垫环境:

① AXI_comp_create

② sensor_comp_create

③ flash_led_comp_create

④ flash_strobe_comp_create

⑤ CAMIF_comp_create

⑥ VFE_comp_create

⑦ ACTUATOR_comp_create

⑧ eeprom_comp_create

⑨ mctl_load_stats_proc_lib

⑩ mctl_load_frame_proc_lib

二.线程的循环工作

线程,顾名思义,肯定有一个封闭的循环体,在循环体中做一些核心的操作

而Daemon进程的主线程轮询服务节点的event queue,获取事件,纷发给各自的mctl thread

Daemon进行的主线程主要处理一下基类事件“

① MSM_GES_RESP_V4L2 :

Open:主要进行初始化,铺垫环境,开启处理camera细节活动的线程

Close:进行一些善后工作

② MSM_CAM_RESP_V4L2:处理open和colse

Open:主要进行初始化,铺垫环境,开启处理camera细节活动的线程

Close:进行一些善后工作

③ 其他一些事件都是通过pipe通信直接写入到①②两点创建的线程中(send command through pipe and wait for config to return)

在mctl thread中重要的任务:

一. 打开confing节点文件

二. 调用create_camfd_receive_socket猜测是与硬件抽象层进行直接通信的

三. 创建mctl_pp_poll_thread线程,

四. 初始化camera的几个feature:

①zoom_init_ctrl

②bestshot_init

③hdr_init

五.通过pipe通信获取server节点的控制事件,事件由Daemon进程的主控线程获取并且通过pipe传递过来

六.通过监测config节点的事件获取config节点对应的控制command

主要监测三类事件:

① MSM_CAM_RESP_DIV_FRAME_EVT_MSG

② MSM_CAM_RESP_MCTL_PP_EVENT

③ MSM_CAM_RESP_STAT_EVT_MSG

将这三个事件以command的形式,通过pipe通信发送到(一)中创建的PP线程中

在mctl_pp_poll_thread中重要的任务:

一:对几个pipe文件进行监测,与其他线程进行交互

几种事件:

①/* Events on pipe between mctl thread - mctl pp thread */

②/* Events on user created socket */

③/* Events on mctl pp node */

④/* Events on pipe between mctl pp thread and c2d thread */


读书人网 >移动开发

热点推荐