添加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

相关文章

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下