首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Qualcomm 8X camera daemon过程浅析

2013-03-28 
Qualcomm 8X camera daemon进程浅析一个camera的守护进程在init进程中,开启的一个service此线程与具体的se

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 */


热点排行