添加camera后摄,导致前摄无法打开,现象是没有camera切换图标

2023-11-28 03:59

本文主要是介绍添加camera后摄,导致前摄无法打开,现象是没有camera切换图标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题现象:MTK平台需要添加一个客户的后摄,看起来如此简单,但是添加OK后,后摄可以点亮切拍摄OK,但是发现前摄无法切换了。

问题分析过程:

看了一下修改的文件,并没有误操作,修改前摄相关的东西,修改文件如下图:

相关的文件也只有ProjectConfig.mk文件了,那么就继续查看这个文件是不是有什么异常,
[cpp]  view plain  copy
  1. CUSTOM_HAL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw  
  2.   
  3. CUSTOM_HAL_MAIN2_IMGSENSOR =   
  4.   
  5. CUSTOM_HAL_MAIN_IMGSENSOR = ov13850_mipi_raw  
  6.   
  7. CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw   
  8.   
  9. CUSTOM_HAL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw  
  10.   
  11. CUSTOM_HAL_SUB_IMGSENSOR =   
  12.   
  13. CUSTOM_KERNEL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw  
  14.   
  15. CUSTOM_KERNEL_MAIN2_IMGSENSOR =   
  16.   
  17. CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw   
  18.   
  19. CUSTOM_KERNEL_MAIN_IMGSENSOR = ov13850_mipi_raw  
  20.   
  21. CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw  
  22.   
  23. CUSTOM_KERNEL_SUB_IMGSENSOR=   

跟之前的文件对比了一下,好像没有什么问题,但是
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR = ov5649_mipi_raw,而
CUSTOM_KERNEL_SUB_IMGSENSOR = 
为空了,但是这个好像不应该导致camera没有加载吧,然后就先尝试的改了一下吧,改为
[cpp]  view plain  copy
  1. CUSTOM_HAL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw  
  2.   
  3. CUSTOM_HAL_MAIN2_IMGSENSOR =   
  4.   
  5. CUSTOM_HAL_MAIN_IMGSENSOR = ov13850_mipi_raw  
  6.   
  7. CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw   
  8.   
  9. CUSTOM_HAL_SUB_BACKUP_IMGSENSOR =  
  10.   
  11. CUSTOM_HAL_SUB_IMGSENSOR = ov5649_mipi_raw  
  12.   
  13. CUSTOM_KERNEL_IMGSENSOR = ov5649_mipi_raw s5k4h5yx_mipi_raw ov13850_mipi_raw  
  14.   
  15. CUSTOM_KERNEL_MAIN2_IMGSENSOR =   
  16.   
  17. CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR = s5k4h5yx_mipi_raw   
  18.   
  19. CUSTOM_KERNEL_MAIN_IMGSENSOR = ov13850_mipi_raw  
  20.   
  21. CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR =  
  22.   
  23. 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
  1. 63 ifneq ($(CUSTOM_KERNEL_SUB_IMGSENSOR),)  
  2. 64     LOCAL_CFLAGS += -DMTK_SUB_IMGSENSOR  
  3. 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
  1. 174     // search main/main_2/sub 3 sockets  
  2. 175    #ifdef MTK_SUB_IMGSENSOR   
  3. 176     for (SensorEnum = DUAL_CAMERA_MAIN_SENSOR; SensorEnum <= DUAL_CAMERA_SUB_SENSOR; SensorEnum <<= 1)  {  
  4. 177         LOG_MSG("impSearchSensor search to sub\n");  
  5. 178    #else  
  6. 179     for (SensorEnum = DUAL_CAMERA_MAIN_SENSOR; SensorEnum < DUAL_CAMERA_SUB_SENSOR; SensorEnum <<= 1)  {  
  7. 180         LOG_MSG("impSearchSensor search to main\n");  
  8. 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切换图标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429014

相关文章

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

如何解决yum无法安装epel-release的问题

《如何解决yum无法安装epel-release的问题》:本文主要介绍如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录yum无法安装epel-release尝试了第一种方法第二种方法(我就是用这种方法解决的)总结yum

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失