阅读:5434回复:30
suspend系统后,无法走进OEMPowerOff函数,这是怎么回事?
以下是调用suspend后的打印语句。
0x83dd1400: FS: Got Power notif 0x00000002 0x83dd1400: FSREG: Flushing registry 0x83dd1400: FSRAM: Flushing cached file data 0x83dd1400: Powering Off system: 0x83dd1400: Calling GWES power proc. 0x83dd1400: ++Ps2Keybd::KeybdPowerOff 0x83dd1400: --Ps2Keybd::KeybdPowerOff 0x83dd1400: Calling device manager power proc. 0x83dd1400: Calling OEMPowerOff... RaiseException: Thread=83dd1400 Proc=81a77c10 'device.exe' AKY=00000039 PC=03f91c54(coredll.dll+0x00051c54) RA=8021e63c(NK.EXE+0x0001e63c) BVA=81a89f00 FSR=81a39220 Error Reporting Memory Reserved, dump size = 00020000 我把除lcd外,所有的驱动都不加载,还是这样的,跟了一下发现走到kwin32.c中的KCall((FARPROC)CallOEMPowerOff);后就死了。但是没有进OEMPowerOff。哪位大虾知道帮忙分析一下吧。 |
|
沙发#
发布于:2008-05-30 09:59
我们用的是pxa270,我想休眠后不要重启的方式,而是以恢复现场的方式唤醒的,为什么调用OEMCacheRangeFlush这个函数后唤醒不了系统呢,非常感谢!!!!
|
|
板凳#
发布于:2008-05-30 05:11
你的是三星的芯片吗? 重启是对的.
复位有3种, 上电复位, 唤醒复位和看门狗造成的复位. 启动代码里面根据寄存器状态来分支. |
|
地板#
发布于:2008-05-29 16:06
在调用OEMPOWEROFF函数中保存现场数据最后调用OEMCACHERANGEFLUSH时唤醒不了系统,但是去掉这个函数后能唤醒但系统变成硬复位启动方式,不能恢复现场方式唤醒.请大侠指点,谢谢!
|
|
地下室#
发布于:2008-05-26 17:38
OEM开头的函数OEM厂家定制bsp时候实现的. OEMPowerOff()函数也是一样的.所以,能否休眠得看OEM函数是否实现这样功能并且测试过.
OEMPowerOff不是应用程序显示调用的. 应用程序调用SetSystemPowerState()或者GWESPowerOFF()时候,然后系统自行调用OEMPowerOff(). 函数OEMPowerOff()的实现, 前半部分是保护现场,保护完毕后就进入了芯片的某种sleep模式, 后半部分是恢复现场, OEM是根据系统需求和芯片的sleep 模式来决定的. 比如SmartPhone的挂起,芯片并不会真的挂起,仍然在运行, 任意的中断可以唤醒. 而PPC的挂起, 就如同2440的一样,会进入PowerOff模式, 少数几个中断源作为唤醒源.唤醒后继续运行, 之前运行的程序如果不与电源管理模块交互,甚至不知道曾经挂起过. 我的blog有相关部分内容. 欢迎访问: www.chenyq2008.spaces.live.com |
|
5楼#
发布于:2008-05-26 14:18
我们是PXA270 WINCE5.0,调用休眠函数老是进程死机,无法切换进程,是休眠的汇编那部分可能有问题,请哪位高手指点下迷津,万分感谢!
|
|
6楼#
发布于:2008-03-31 15:43
kwin32.c call OEMPOwerOff(),
OEMPowerOFF() 调用我的一些GPIO管脚的管理程序. 现在我无法调用 OEMPowerOFF(), 紧急求援大侠. 老板催得急啊. 多谢了 |
|
7楼#
发布于:2008-03-31 15:35
我的OEMPowerOFF 无法调用.
|
|
8楼#
发布于:2007-08-07 17:18
是这样的
|
|
9楼#
发布于:2007-08-07 15:33
就是说不用调用任何系统函数,我只要把硬件的寄存器恢复了就可以了?系统会处理一切?
谢谢wince_lover |
|
10楼#
发布于:2007-08-07 14:55
出来就恢复现场,恢复频率。系统会调用各个驱动的POWERUP函数,你只要实现各个驱动的POWERHUP函数,将各个设备唤醒就可以了
|
|
11楼#
发布于:2007-08-01 17:59
呵呵,什么公司阿,这么早下班?
是,我出来肯定是先打开外设,但是挂起的时候os把所有的驱动的poweroff都调了一次,外设虽然打开了,可是驱动都被关off掉了,挂起的时候可以setpowerstatus(),就是不知道唤醒的时候是否有一个对应的函数可以唤醒所有的驱动? |
|
12楼#
发布于:2007-08-01 17:44
出来就上电,你怎么关闭的外设,就怎么打开阿,不行么?下班先走了,明天来讨论,呵呵
|
|
13楼#
发布于:2007-08-01 17:37
我用的是公司自己做的ARM芯片,我在挂起的时候,走到OEMPowerOff中,并没有让cpu停止,只是关闭外设,降低频率。进入一个死等拉GPIO的循环,如果有GPIO动作,就出循环,我不知道出来该干点什么?
|
|
14楼#
发布于:2007-08-01 16:54
wince5.0里面的pm,off.c样例参考samsung的,pxa270的就写了个接口,270的sleep进入和恢复方法是csp里面的xllp_pm_sleepfwa.s汇编接口。
|
|
15楼#
发布于:2007-08-01 16:47
楼上说的样例和pm是在哪里?Wince5.0还是4.2?
|
|
16楼#
发布于:2007-08-01 15:58
BSPPowerOff();
OALKitlPowerOff(); // suspend or sleep OALKitlPowerOn(); BSPPowerOn(); 上面省略了一些代码。startup.s文件,bootloader里面应该是。你用的是pxa270么 |
|
17楼#
发布于:2007-08-01 15:38
楼上的兄弟说的poweron,poweroff可是各个驱动的电源管理?还是自己写的OEM层的电源管理?
还有你说的start.c在哪里? |
|
18楼#
发布于:2007-08-01 13:49
你是什么样的cpu阿,你suspend对应的状态就是你off.c或者oemoff.c里面的操作,我用pxa270,off.c里面进入sleep模式,OEMPowerOff()这个函数里面写好了suspend前后的操作,也就是sleep的前后操作,sleep前开wakeupsource,调用各种poweroff函数,唤醒时,首先调用恢复函数,恢复一些状态,然后调用各种poweron函数,这些步骤都是datasheet里面规定的,而且这个csp文件可能已经写好了,当唤醒的中断来时,pxa270把这个定义成为sleep reset,自动进入startup.c,startup.c中就得按sleep标志位来判断一下,然后跳转到我上面说的那个恢复函数。这样就跳回去了。你可以参考下样例和pm
|
|
19楼#
发布于:2007-08-01 11:32
引用第11楼sniper167于2007-08-01 10:26发表的 : 那唤醒的那个动作应该调用哪个函数呢?sniper167兄知道吗? 系统suspend后,没有真的断点,按开关键,触发中断,我在中断里调用那个函数可以让系统自动调用每个函数的powerup呢? |
|
上一页
下一页