Chinaunix首页 | 论坛 | 博客
  • 博客访问: 200509
  • 博文数量: 40
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-31 10:34
文章分类
文章存档

2019年(2)

2017年(14)

2016年(8)

2015年(10)

2014年(6)

我的朋友

分类: Android平台

2019-11-08 11:54:00


高通对于 camera 的代码组织大体是遵循 Android 架构的,但对于最核心的 sensor 端底层设
置、ISP 效果参数等进行了单独的剥离,放在 daemon 进程中进行。

一.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 目录,整个树形结构如下:

而在 kernel 部分只是进行了 V4L2 的设备注册,IIC 设备注册等简单的动作,主文件
是 msm.c,负责设备的具体注册和相关方法的填充;在 msm_sensor.c 中,主要是维护一个
sensor 结构体 msm_sensor_ctrl_t,同时吧 dts 文件中的配置信息读出来。







阅读(2632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~