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

相关文章

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下,可以正常上网,说明主机有无限网卡且正常。然后我就直接开始安装Ubuntu20.04了,安装成功后发现wifi有图标但是搜不到热点,我想是不是无线网卡驱动有没有

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致