添加camera后摄,导致前摄无法打开,现象是没有camera切换图标
2017-10-12 10:51
302 查看
问题现象:MTK平台需要添加一个客户的后摄,看起来如此简单,但是添加OK后,后摄可以点亮切拍摄OK,但是发现前摄无法切换了。
问题分析过程:
看了一下修改的文件,并没有误操作,修改前摄相关的东西,修改文件如下图:相关的文件也只有ProjectConfig.mk文件了,那么就继续查看这个文件是不是有什么异常,
[cpp] view
plain copy
CUSTOM_HAL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw
CUSTOM_HAL_MAIN2_IMGSENSOR =
CUSTOM_HAL_MAIN_IMGSENSOR = ov13850_mipi_raw
CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw
CUSTOM_HAL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw
CUSTOM_HAL_SUB_IMGSENSOR =
CUSTOM_KERNEL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw
CUSTOM_KERNEL_MAIN2_IMGSENSOR =
CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw
CUSTOM_KERNEL_MAIN_IMGSENSOR = ov13850_mipi_raw
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw
CUSTOM_KERNEL_SUB_IMGSENSOR=
跟之前的文件对比了一下,好像没有什么问题,但是
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw,而
CUSTOM_KERNEL_SUB_IMGSENSOR =
为空了,但是这个好像不应该导致camera没有加载吧,然后就先尝试的改了一下吧,改为
[cpp] view
plain copy
CUSTOM_HAL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw
CUSTOM_HAL_MAIN2_IMGSENSOR =
CUSTOM_HAL_MAIN_IMGSENSOR = ov13850_mipi_raw
CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw
CUSTOM_HAL_SUB_BACKUP_IMGSENSOR =
CUSTOM_HAL_SUB_IMGSENSOR = ov5649_mipi_raw
CUSTOM_KERNEL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw
CUSTOM_KERNEL_MAIN2_IMGSENSOR =
CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw
CUSTOM_KERNEL_MAIN_IMGSENSOR = ov13850_mipi_raw
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR =
CUSTOM_KERNEL_SUB_IMGSENSOR= ov5649_mipi_raw
可见:ProjectConfig.mk中camera宏可以配错,id都会读到,而且即使mclk是多个,也可以正常打开。但是一定要配。
重新编译了一下kernel(是new了一遍),刷进去还是无效;
想了想再编译了一下hal层,push进去还是无效;
仔细分析其实就是没有改动什么,觉得肯定就是这个文件导致的,就把android重新编译了一遍(remake),结果很失望,还是没有前摄,郁闷啊,
心恨了就new了一把,奇迹出现了,前摄居然可以正常打开了。
问题的根本原因分析:
分析了问题为什么new一遍就OK了,为什么new kernel都没有用,就搜了一下CUSTOM_KERNEL_SUB_IMGSENSOR 这个变量,居然在mediatek/platform/mt6592/hardware/mtkcam/core/drv/imgsensor/Android.mk 文件里边
[cpp] view
plain copy
63 ifneq ($(CUSTOM_KERNEL_SUB_IMGSENSOR),)
64 LOCAL_CFLAGS += -DMTK_SUB_IMGSENSOR
65 endif
也就是说如果CUSTOM_KERNEL_SUB_IMGSENSOR 不为空是定义MTK_SUB_IMGSENSOR,那么我们再继续分析哪里会用到MTK_SUB_IMGSENSOR宏。
在文件:mediatek/platform/mt6592/hardware/mtkcam/core/drv/imgsensor/imgsensor_drv.cpp
函数ImgSensorDrv::impSearchSensor(pfExIdChk pExIdChkCbf)里面有用到,如下:
[cpp] view
plain copy
174 // search main/main_2/sub 3 sockets
175 #ifdef MTK_SUB_IMGSENSOR
176 for (SensorEnum = DUAL_CAMERA_MAIN_SENSOR; SensorEnum <= DUAL_CAMERA_SUB_SENSOR; SensorEnum <<= 1) {
177 LOG_MSG("impSearchSensor search to sub\n");
178 #else
179 for (SensorEnum = DUAL_CAMERA_MAIN_SENSOR; SensorEnum < DUAL_CAMERA_SUB_SENSOR; SensorEnum <<= 1) {
180 LOG_MSG("impSearchSensor search to main\n");
181 #endif
很显然,如果MTK_SUB_IMGSENSOR定义了,那么我们SensorEnum就是<=DUAL_CAMERA_SUB_SENSOR,
DUAL_CAMERA_MAIN_SENSOR 值为1, DUAL_CAMERA_SUB_SENSOR值为2,那么就是有两颗camera,
归根结底的说就是如果CUSTOM_KERNEL_SUB_IMGSENSOR如果为空,那么就只有后摄一个camera。
再来分析一下为什么编译不到,我们只有更改了ProjectConfig.mk但是里面的变量却被hardware层用到,所以必须编译
mmm mediatek/platform/mt6592/hardware/mtkcam/core/才可以。
相关文章推荐
- 添加camera后摄,导致前摄无法打开,现象是没有camera切换图标
- Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地WEB本地服务器上没有安装所需的组件。请运行Visual Studio .NET安装程序并添加WEB开发组件
- 解决ubuntu下软件包没有完整安装导致新立得无法打开
- Android 真机,微信打开 H5,切换到 webview,能通过 webdriver 方法操作页面元素,然后链接到新的 H5 页面后,无法操作元素,appium 服务器没有收到 response,
- “Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地WEB本地服务器上没有安装所需的组件。请运行Visual Studio .NET安装程序并添加WEB开发组件“的一种解决方案
- Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地WEB本地服务器上没有安装所需的组件。请运行Visual Studio .NET安装程序并添加WEB开发组件
- [转载]Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地WEB本地服务器上没有安装所需的组件。请运行Visual Studio .NET安装程序并添加WEB开发组件 收藏
- Windows 无法打开“添加打印机”本地打印后台处理程序服务没有运行。请重新启动打印后台处理程序
- 由于FormPanel里面没有添加对象导致页面无法显示,浏览器报脚本错误的问题
- 无法打开"添加/删除程序"现象解决方法
- IIS默认配置没有添加MP4文件,导致打开MP4文件会404.
- Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地Web服务器上没有安装所需的组件。请运行 Visual Studio .NET 安装程序并添加Web开发组件。
- LYNC后端镜像切换导致监控页面无法正常打开
- 解决ubuntu下软件包没有完整安装导致新立得无法打开
- “Visual Studio .NET 无法创建或打开应用程序。问题很可能是因为本地WEB本地服务器上没有安装所需的组件。请运行Visual Studio .NET安装程序并添加WEB开发组件“的一种解决方案
- 解决WINDOWS无法打开“添加打印机”,本地后台打印程序服务没有运行
- 安装chrome导致ftp无法用windows资源管理器打开
- Ubuntu16.04设置语言显示,导致终端无法打开
- 在文件选择打开方式里,无法添加.exe程序怎么解决
- 关于ionic app $http.get()无法请求,导致页面没有数据的问题