打开摄像头预览,睡眠唤醒后不能继续工作

271 篇文章 2 订阅

作者:LoongEmbedded

转自:http://blog.csdn.net/loongembedded/article/details/7763083


1.       问题描述

打开摄像头应用程序预览,如果这时候进入睡眠状态,唤醒后经常不能正常接着预览的情况(但有时候也可以)。这时候,必须要先关闭摄像头应用程序,然后重新打开才能正常工作。

 

2.       问题分析

唤醒后不能正常预览的时候,发现CameraPreviewThread线程都等遇到Preview中断,说明这时候preview中断没有产生。但为什么有时候唤醒的时候却又可以呢?如果是睡眠和唤醒这两个过程种没有设置好preview中断对应的寄存器,就不可能出现时候唤醒后还可以正常的情况。

排除上面的情况后,怀疑在预览时,camera驱动还没有来得及处理完当前preview中断的时候系统就进入睡眠状态引起的,所以就在CameraPreviewThread线程调用InterruptDone(g_CamSysIntr_P)来通知IST当前preview中断完成的地方,改为直接处理对应的寄存器,目的就是减去调用系统函数InterruptDone这个过程,从而争取更快的时间处理晚这个动作,还是无法解决这个问题。

正当陷入困境的时候,想起有可能是睡眠时对camera sensor下电,而在上电时没有对其供电引起的。

 

3.       问题解决

经过上面的逐步分析和排除,通过代码的分析,在系统进入睡眠的过程中会调用camera

驱动的CameraSleep函数对camera sensor下电,在处理器即将进入睡眠状态前调用OEMPowerOff函数记录下GPG0和GPG1的状态(此时为低电平的状态),再处理器唤醒的时候,OEMPowerOff函数从睡眠前记录的内存地址处恢复(恢复的是输出低电平)。通过增加PowerOnCamera函数来给camera sensor上电,而在唤醒的时候camera驱动调用这个函数就解决了此问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值