下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MTK camera上电流程分析上电相关文件:Mediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.cMediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.hMediate/custom/common/kernel/imgsensor/src/kd_sensorlist.cMediate/custom/common/kernel/imgsensor/src/kd_sensorlist.h注:本文档以mt89_v10_vanzo_test项目
2、为例MTK开机过程中会去检查当前项目(手机上烧录的当前软件)所有在Projectconfig.mk中配置过的camera sensor,如下:CUSTOM_HAL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_raw CUSTOM_KERNEL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_raw 也就是说在开机的时候,系统会自动去detect这两颗camera sensor是否都能正常通信,主要是通过读sensor的id来判断的。具体是调用下面的函数来开始检查之旅的:=mediate/custom/common/kernel/img
3、sensor/src/kd_sensorlist.c=这个函数先是调用kdGetSensorInitFuncList(&pSensorList)获取系统配置的kdSensorList ,这个数组在mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.h中定义的,该数组也是我们加入新的型号sensor时需要改动的一个地方,如果你不把你新加入的sensor放进这个数组,系统也不会知道你配置过这个sensor。当然加入新的sensor不仅仅需要修改这一个地方,后面我们会有专门的一段讲解加入一颗新的sensor需要修改哪些地方。我们
4、继续看kdSetDriver这个函数,它有一个参数pDrvIndex,它是一个数组,有两个成员,数组的第一个成员的前16位表示后摄和前摄的下标(目前取值为1和2),后16位表示的是sensor的索引(目前常用的取值为1,2,3,4)。实际上,在开机的过程中,mtk平台是不区分你配置的sensor是前摄还是后摄的,它只是先把所有配置的sensor当成后摄来上电读id,再把所有的sensor当成前摄来上电读id,刚接触的时候你肯定会问它最终是如何确定谁是前摄谁是后摄的。其实它首先在硬件上保证前摄和后摄的power down是分开的,然后在上电的时候即使你把前摄当后摄,因为硬件上不通的,所以id就肯
5、定读不到,读不到就肯定不会被记录为它是后摄,而是在接下来把所有sensor当前摄的时候被读到id,然后被记录为前摄。读id的时候,调用的流程是先调用static long CAMERA_HW_Ioctl( struct file * a_pstFile, unsigned int a_u4Command, unsigned long a_u4Param)函数中的 case KDIMGSENSORIOC_T_CHECK_IS_ALIVE: i4RetValue = adopt_CAMERA_HW_CheckIsAlive(); break;这一步是给camera上电,然后再调用 case KDI
6、MGSENSORIOC_X_FEATURECONCTROL: i4RetValue = adopt_CAMERA_HW_FeatureControl(pBuff); break;在pbuffer中调用具体的sensor的GetSensorID函数。如果能读到的话就返回这个sensor的id,也就是这个sensor是存在的,会被记录在案的,后面在打开camera的时候,就从这个记录里面去找了。现在开机上电的流程已经说完了,在实际的调试的时候,会有camera点不亮的问题,那么我们需要找出点不亮的原因,是i2c不通,读不到id,还是读到id了,但是打开camera的时候没有出预览的图像。如果是i2
7、c不通的话,就要检查这个sensor上电的地方对不对了,如果是即使读到id了,但是却不出图像,那么就要检查是不是因为上电的时候发生了sensor id被同时读到的情况,下面我们通过一个案例来讲解。首先我们先提一下一个比较重要的trace log,对定位问题非常有作用,如截图=mobilelog/kernel_log.boot=这个截图的内容来自于mobilelog中的kernel_log.boot,这个文件的log对定位camera的问题很好用,而且不用捕获串口log就能定位问题,非常方便,只要你会抓取mobilelog就行。这句log中的011的0代表当前正在使用pDrvIndex数组的第一
8、个(第二个目前还没有看到有调用过),中间的1表示enable的意思,后面的1表示目前正在作为后摄走上电的流程,imx111mipiraw表示sensor的name,32表示sensor名字的最大长度。这个log里的2表示现在imx111mipiraw被当成前摄在上电读id,因为这个项目是imx111接在后摄的,所以他的id应该是不会被读到的。但是实际情况是:以上截图为了便于观看,是拼起来的,搜索关键字是imx111,从上面的截图来看,可以知道在开机的时候,当搜索后摄的时候imx111 的id被读到,在搜索前摄的时候也被读到id。出现这种原因是因为imx111和ov9724的power down
9、的极性和MTK默认的代码都是反着的,所以在上电的函数kdCISModulePowerOn里面加了一些特殊的处理,如下:=mediate/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.c=Camera_pdn_reverse这个变量在kd_camera_hw.c中定义,初始值为0,在imx111的驱动文件中的getsensorid函数中被赋值为1,也就是说刚开始给imx111上电的时候,power down的极性配置的是不对的,我们需要在调用imx111驱动中的getsensorid的函数中,并且读到id后才将其置为1,以后系统
10、在起来后,imx111的power down极性就被修改为正确的极性了。这样做的代价就是需要在imx111的getsensorid函数的时候,手动给imx111矫正powerdown的极性,这个动作做一次就够了,因为正常使用的时候,getsensorid不会再调用了,而是调用它的open函数,getsensorid的代码如下:=mediate/custom/common/kernel/imgsensor/imx111_mipi_raw/imx111mipiraw_Sensor.c=这个函数是目前所有的sensor中最复杂的一个,原因有如下:1. 它的power down极性是反的。2. 它在M
11、T6589项目上既做前摄也做后摄第一点导致了它的getsensorid函数需要手动的给power down调整极性,让imx111能读到id,然后再把全局变量camera_pdn_reverse=1;第二点导致了它作为后摄时需要按照后摄的引脚定义来上电,作为前摄时需要按照前摄的引脚定义来上电,而且作为前摄时,第一次进入该函数的时候,是在imx111被认为后摄的情况下调用的,所以我们不能给他正确的上电,否则就会被认为是后摄了,只有在第二次被作为前摄的情况下才正确的上电。在mt89_v10_vanzo_test项目中就是因为没有考虑到以上的情况,才出现前摄或者后摄单独使用时都能点亮,但当前后摄同时使用时就发生后摄能读到id却没有出现图像的情况。下面来看看当添加一个新的camera sensor驱动时,需要修改哪些文件(mt89平台为例):Kernel层驱动添加,以imx111驱动为例mediatekcustomcommonkernelimgsensor下添加imx111_mipi_raw文件夹,内容如下:mediatekcustomcommonkernelimgsensorsrckd_sensorlist.h中添加如下几行:mediatekcustomcommonkernel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械振动测量课程设计
- 机械工艺学轴课程设计
- 机械小玩具的课程设计
- 机械原理飞剪课程设计
- 四年级信息技术上册 第三单元 小小编辑 第14课 灵活运用文本框教案3 浙江摄影版
- 机械原理分类及课程设计
- 五年级信息技术上册 第2课 逛逛“娱乐”城教案 华中师大版
- 机械制造基础课程设计
- 九年级历史下册 第三单元 第11课《西方世界秩序的调整与世界经济大危机》教案4 华东师大版
- 2024九年级英语下册 Module 3 Life now and thenUnit 2 I think life is better today教案(新版)外研版
- F500-1000泥浆泵说明书
- 造价课件八工业管道
- 驾驶员车辆管理制度15篇
- 大学体育与健康知到章节答案智慧树2023年吉林师范大学
- 脱不花三十天沟通训练营
- 《阳光心理健康人生》心理健康主题班会PPT
- 小学三年级八班家长会课件
- 初三家长会数学课件
- “双减”背景下的小学英语作业优化设计PPT
- GB/T 34474.1-2017钢中带状组织的评定第1部分:标准评级图法
- GB/T 25071-2010珠宝玉石及贵金属产品分类与代码
评论
0/150
提交评论