注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

男儿当自强的博客

每天进步一点

 
 
 

日志

 
 
 
 

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

2012-07-19 14:29:43|  分类: windows CE 驱动 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

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驱动调用这个函数就解决了此问题。

  评论这张
 
阅读(880)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017