logo资料库

MTK camera 基本流程分析.doc

第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
资料共36页,剩余部分请下载后查看
Camera 驱动流程总结 范军君 junjun.fan@sim.com
目录 1, Camera 架构及流程简析 2, 初始化过程 camera id 检测 3, Camera 上电流程 4, Camera 打开流程
Camera 架构及流程简析 MTK 平台 camera 架构: Kernel 部分主要有两块:一块是 image sensor 驱动,负责具体型号的 sensor 的 id 检测,上 电,以及在 preview,capture,初始化,3A 等等功能设定时的寄存器配置。另一块是 isp driver, 通过 DMA 将 sensor 数据流上传。 本篇主要介绍 image sensor 驱动的流程。 HAL 层这边主要分 3 块,一块是 imageio,主要是数据 buffer 上传的 pipe。一块是 drv,包 含 imgsensor 和 isp 的 hal 层控制。最后是 feature io,包含各种 3A 等性能配置。 本篇对 HAL 涉入不深,只在分析开机过程的 id 检测时会分析 hal 层的控制,属于第二块。
流程简析: 主要发生在两个时间点:开机过程中 camera 的动作以及打开应用时 camera 的动作。 开机时,camera 完成了 sensor 框架的初始化,id 检测,以及上下电操作。 打开应用时,camera 会有上电,完成寄存器的初始配置,向上层传送基本参数及配置信息, 以及 preview 和 capture 模式循环。
初始化过程 camera id 检测 代码分析: =>alps/mediatek/custom/common/kernel/imgsensor/kd_sensorlist.c module_init 说明这段 code 在 kernel 初始化,也就是手机开机时运行。 在模块初始化函数中,注册一个 i2c device,同时注册了一个 platform driver
注意 driver name, 匹配 platform device 需要名字一致。Platform 总线为虚拟总线,注册 platform driver 主要目的是隔离上下层,增强代码的可移植性。 alps/mediatek/platform/mt6582/kernel/core/mt_dev.c mtk 平台用到的 platform devicej 基本都在这个文件中注册,这样 device 和 driver 就能匹配上 了。 在 platform probe 中注册 i2c driver 和之前的 i2c device 匹配
配置 i2c clock , 注册一个字符设备。 一般驱动中注册字符设备,多是利用字符设备的 fops 与上层交互,特别是 ioctl. 这些就是具体的 fops open 只是用来计数目前打开 camera 的数量,所以主要的交互功能要靠 ioctl 来完成
这个函数很重要,沟通上下层,提供接口。 这边的 Command 用幻字定义,可以保持 cmd 的唯一性,并具备可读性。Command 可带不定长参数。 下面是 switch case,通过 ioctl 传下来的参数选择调用分支
分享到:
收藏