MTK_camera驱动流程总结_pei.pdf

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MTK_camera驱动流程总结_pei

Camera驱动流程总结 范军君 junjun.fan@ 目录 1, Camera架构及流程简析 2, 初始化过程cameraid检测 3, Camera上电流程 4, Camera打开流程 Camera架构及流程简析 MTK平台camera架构: Kernel 部分主要有两块:一块是imagesensor驱动,负责具体型号的sensor的id检测,上 电,以及在preview,capture,初始化,3A等等功能设定时的寄存器配置。另一块是ispdriver, 通过DMA将sensor数据流上传。 本篇主要介绍imagesensor驱动的流程。 HAL层这边主要 3块,一块是imageio,主要是数据buffer上传的pipe。一块是drv,包 含imgsensor和isp 的hal层控制。最后是featureio,包含各种3A等性能配置。 本篇对HAL涉入不深,只在分析开机过程的id检测时会分析hal层的控制,属于第二块。 流程简析: 主要发生在两个时间点:开机过程中camera 的动作以及打开应用时camera 的动作。 开机时,camera完成了sensor框架的初始化,id检测,以及上下电操作。 打开应用时,camera会有上电,完成寄存器的初始配置,向上层传送基本参数及配置信息, 以及preview和capture模式循环。 初始化过程cameraid检测 代码分析: =alps/mediatek/custom/common/kernel/imgsensor/kd_sensorlist.c module_init 说明这段code在kernel初始化,也就是手机开机时运行。 在模块初始化函数中,注册一个i2cdevice,同时注册了一个platformdriver 注意drivername, 匹配platform device 需要名字一致。Platform 总线为虚拟总线,注册 platformdriver主要目的是隔离上下层,增强代码的可移植性。 alps/mediatek/platform/mt6582/kernel/core/mt_dev.c mtk平台用到的platformdevicej基本都在这个文件中注册,这样device和driver就能匹配上 了。 在platformprobe 中注册i2cdriver 和之前的i2cdevice 匹配 配置 i2cclock ,注册一个字符设备。一般驱动中注册字符设备,多是利用字符设备的fops 与上层交互,特别是ioctl. 这些就是具体的fops open只是用来计数目前打开camera 的数量,所以主要的交互功能要靠ioctl来完成 这个函数很重要,沟通上下层,提供接口。 这边的Command用幻字定义,可以保持cmd 的唯一性,并具备可读性。Command可带不定长参数。 下面是switchcase,通过ioctl传下来的参数选择调用分支 支持的command汇总,包括camera开机过程中上电,id检测以及imagesensor 的参数获取 KDIMGSENSORIOC_X_SET_DRIVER 和 KDIMGSENSORIOC_T_CHECK_IS_ALIVE 这 两个func在开机初始化检测id会被hal层调用。 =mediatek/platform/mt6582/hardware/camera/core/drv/imgsensor/imgsensor_drv.cpp impSearchSensor 在开机过程中被调用,用于检测id,匹配main/subimagesensor GetSensooInitFuncList 这个函数主要为了获得下表 包含了id,name和一些方法的调用,因为在driver层有相似的架构,放在后面分析具体过程。 =impSearchSensor Hal层开始探测sensor, 应为有两颗sensor,外层循环两次 内层循环根据上面的sensor列表来,最大支持兼容16颗sensor,hal层特效,如果没有整合 特定imagesensor 的hal层代码,这边会直接退出。 getCameraDefault 调用很重要,hal层camera 的所有特效参数,包括3A,shading都在这边设 定。getCameraDefault 通过之前的Sensorlist来连接特定imagesensor的具体实现。下表是2675 的

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档