问题:【相机】33%电量开启闪光灯录制视频,大约6分钟左右,手机自动关机,再开机,电量为4%
分析过程:
开闪光灯录制视频的情况下导致掉电,手机关机。经过跟测试沟通之后,发现正常模式下录制视频的话,没有这个问题,那么我们就把问题点定位到闪光灯上了,由于闪光灯有Flash模式和Torch模式,在拍照时,我们用的是Flash模式,该模式瞬间曝光,一般电压在300mV ~ 75mV 之间,这个是跟连接的RSET有关,我们电路接的是139kΩ,那么根据公式VFB = (1.26V/ RSET) ×10.2kΩ (Flash Mode),算出VFB=92.5mV。而Torch模式的话就只有VFB = 47mV (Torch Mode)。然后看了一下拍视频时闪光灯的亮度,跟拍照时的亮度是一样的,那么就肯定是我们拍视频的时候闪光灯的模式错误的设置为Flash模式了;
问题定位后就是代码分析了。首先分析的是驱动leds_strobe.c文件
129 ssize_t gpio_FL_Enable(void)
130 {
131 /*Enable*/
132 printk("FlashLight: %s:%d: called g_torch_mode:%d\n",__func__,__LINE__,g_torch_mode);
133 if(0 == g_torch_mode){
134 if(mt_set_gpio_out(GPIO_CAMERA_FLASH_ENM_PIN,GPIO_OUT_ONE)){PK_DBG("[constant_flashlight] enable flashlight failed!! \n");}
135 if(mt_set_gpio_out(GPIO_CAMERA_FLASH_ENF_PIN,GPIO_OUT_ONE)){PK_DBG("[constant_flashlight] open flashlight failed! ! \n");}
136 }else{
137 if(mt_set_gpio_out(GPIO_CAMERA_FLASH_ENM_PIN,GPIO_OUT_ONE)){PK_DBG("[constant_flashlight] set gpio failed!! \n"); }
138 }
139 return 0;
140 }
141
142 ssize_t gpio_FL_Disable(void)
143 {
144 /*Disable*/
145 printk("FlashLight: %s:%d: called g_torch_mode:%d\n",__func__,__LINE__,g_torch_mode);
146 if(0 == g_torch_mode){
147 if(mt_set_gpio_out(GPIO_CAMERA_FLASH_ENF_PIN,GPIO_OUT_ZERO)){PK_DBG("[constant_flashl