请教PXA270的一个休眠唤醒问题,急!

时间:2021-03-29 17:23:27
我的处理器是PXA270
用的BSP包是WINCE42下的那个Bvdmain (优龙的开发板)
Bootloader是ADS1.2编译的那个,而不是EBOOT

现在的现像是,我能休眠,也能通过触发GPIO1唤醒
唤醒后可以通过打印信息看到进入了各个驱动的XXX_PowerUp函数

但是唤醒后就死机了

我已经在XllpPmEnterSleep加了SDRAM的自刷新代码

更奇怪的是,通过打印信息可以看到,唤醒后居然又调了一次XllpLCDInit(P_XLLP_LCD_T pXllpLCD)这个函数

而我在BSP和BOOT中搜索每次调用XllpLCDInit这个函数的地方,并在调用XllpLCDInit之前加打印信息
居然没有信息出现,就是不知道是哪个函数调用了这个本地函数(区别于系统函数)我也没找到有任何地方将XllpLCDInit导出
可是,就是调用了这个函数,并且调用完了就死机了

以下是打印信息:
GP1 Irq+++!!!!+++                   --------------------按下GPIO1,中断触发
o Waitfor!                         ---------------------触发中断绑定的事件,并进入到WaitForSingleObject后面
power sleep now                    ---------------------马上调用GewsOEMPowerOff
OEM                              ---------------------进入了OEMPowerOff ,并打印信息OEMPowerOff
                                                       (休眠了没有打印完全),完成休眠动作
XllpLCDInit is running!.            ---------------------按下GPIO1系统被唤醒,居然首先调用了XllpLCDInit 
XllpLCDInit is running!::step 1 !!
LTM035A776C init.
XllpLCDInit is running!::step 2 !!
XllpLCDInit is running!::step 3 !!
XllpLCDInit is running!::step 4 !!
XllpLCDInit is running!::step 5 !!
power resume now                     --------------------这个是我在调用GewsOEMPowerOff后面加的函数
Done GP1 Irq                         --------------------然后调用了InterruptDone(SYSINTR_POWER)

死机了。。。。。。。。。。。。。。
对了我已经把大部分驱动都删除了,只剩下LCD,TOUCH,和一些产生LIB的函数
并且将所有驱动中的XXX_PowerUp中的内容都删除掉了....

请各位指点一下!!!

5 个解决方案

#1


该回复于2010-08-03 17:07:51被版主删除

#2


如你所说“BSP和BOOT中搜索每次调用XllpLCDInit这个函数的地方,并在调用XllpLCDInit之前加打印信息
居然没有信息出现”
所以首先要确定你加的打印信息是否编译使用了
另外就可能是程序飞到那地方了,程序跑飞了,

#3


通过编译一个debug版本,可以看到如下打印信息:
......
0x9a4cd4cc: Oom App Wait  8000 (dec ms)
0x9a4cd4cc: Oom AutoOom 0
0x9a4cd4cc: UpdateIdleTimeoutFromRegistry
GP1 Irq            -------------------------------我按下GPIO1 ,开始休眠
0x9a5eaa40: KeyPowerThread goto Waitfor!
0x9a5eaa40: Done GP1 Irq
GP1 Irq            -------------------------------可能是键盘有抖动 
0x9a5eaa40: KeyPowerThread gGP1 Irq
oto Waitfor!
0x9a5eaa40: power sleep now    ------------------进入休眠(调用的GwesOEMPowerOff)
0x9a5eaa40: FS: Got Power notif 0x00000002
0x9a5eaa40: FSREG: Registry flush unnecessary
0x9a5eaa40: FSRAM: Flushing cached file data
0x9a5eaa40: Powering Off system:
0x9a5eaa40:   Calling GWES power proc.
0x9a5eaa40:   Calling device manager power proc.
0x9a5eaa40: PowerKey :: PWk_PowerDown is running!!
0x9a5eaa40:   Calling OEMPowerOff...
OEMPowerOff+++++             -------------------这里进入XllpPmEnterSleep 休眠
-这两句打印信息之间是XllpPmEnterSleep ()函数-----------------------------------------
OEMPowerOff-----             -------------------再次按下GPIO1,系统唤醒
0x9a5eaa40: Back from OEMPowerOff
0x9a5eaa40:   Calling device manager power proc.
0x9a5eaa40: PowerKey :: PWk_PowerUp is running!!
0x9a5eaa40:   Calling GWES power proc.
0x9a5eaa40: ADD XllpLCD init for this! 是GWES调用的XllpLCDInit
0x9a5eaa40: LTM035A776C init.
0x9a5eaa40: XllpLCDInit is running!
0x9a5eaa40:   Returning to normally scheduled programming.
0x9a434634: ndisMResetCompleteStage2: Internal reset
0x9a5eaa40: FS: Got Power notif 0x00000001

0x9a5eaa40: Back from PowerOffSystem.
0x9a5eaa40:  power sleep Resume now  被唤醒
0x9a5eaa40: Done GP1 Irq   调用InterruptDone处理中断
..................现在就开始死机了,点屏,按键都没什么反应
但是过了几秒后
0x9a4dc3f4: FS: Got Power notif 0x00000002   ------又自己进入到休眠中
0x9a4dc3f4: FSREG: Registry flush unnecessary
0x9a4dc3f4: FSRAM: Flushing cached file data
0x9a4dc3f4: Powering Off system:
0x9a4dc3f4:   Calling GWES power proc.
0x9a4dc3f4:   Calling device manager power proc.
0x9a4dc3f4: PowerKey :: PWk_PowerDown is running!!
0x9a4dc3f4:   Calling OEMPowerOff...
OEMPowerOff+++++            ---------------------又休眠了

我再次按下GPIO1
OEMPowerOff-----     -------------------------又被唤醒
0x9a4dc3f4: Back from OEMPowerOff
0x9a4dc3f4:   Calling device manager power proc.
0x9a4dc3f4: PowerKey :: PWk_PowerUp is running!!
0x9a4dc3f4:   Calling GWES power proc.
0x9a4dc3f4: ADD XllpLCD init for this!
0x9a4dc3f4: LTM035A776C init.
0x9a4dc3f4: XllpLCDInit is running!
0x9a4dc3f4:   Returning to normally scheduled programming.
0x9a434634: ndisMResetCompleteStage2: Internal reset
0x9a4dc3f4: FS: Got Power notif 0x00000001
0x9a4dc3f4: Back from PowerOffSystem.  ---------被唤醒,但是系统任何输入到不能执行
........过了一会又休眠..........

#4


请问这个是什么原因啊??

#5


该回复于2010-08-04 09:48:47被版主删除

#1


该回复于2010-08-03 17:07:51被版主删除

#2


如你所说“BSP和BOOT中搜索每次调用XllpLCDInit这个函数的地方,并在调用XllpLCDInit之前加打印信息
居然没有信息出现”
所以首先要确定你加的打印信息是否编译使用了
另外就可能是程序飞到那地方了,程序跑飞了,

#3


通过编译一个debug版本,可以看到如下打印信息:
......
0x9a4cd4cc: Oom App Wait  8000 (dec ms)
0x9a4cd4cc: Oom AutoOom 0
0x9a4cd4cc: UpdateIdleTimeoutFromRegistry
GP1 Irq            -------------------------------我按下GPIO1 ,开始休眠
0x9a5eaa40: KeyPowerThread goto Waitfor!
0x9a5eaa40: Done GP1 Irq
GP1 Irq            -------------------------------可能是键盘有抖动 
0x9a5eaa40: KeyPowerThread gGP1 Irq
oto Waitfor!
0x9a5eaa40: power sleep now    ------------------进入休眠(调用的GwesOEMPowerOff)
0x9a5eaa40: FS: Got Power notif 0x00000002
0x9a5eaa40: FSREG: Registry flush unnecessary
0x9a5eaa40: FSRAM: Flushing cached file data
0x9a5eaa40: Powering Off system:
0x9a5eaa40:   Calling GWES power proc.
0x9a5eaa40:   Calling device manager power proc.
0x9a5eaa40: PowerKey :: PWk_PowerDown is running!!
0x9a5eaa40:   Calling OEMPowerOff...
OEMPowerOff+++++             -------------------这里进入XllpPmEnterSleep 休眠
-这两句打印信息之间是XllpPmEnterSleep ()函数-----------------------------------------
OEMPowerOff-----             -------------------再次按下GPIO1,系统唤醒
0x9a5eaa40: Back from OEMPowerOff
0x9a5eaa40:   Calling device manager power proc.
0x9a5eaa40: PowerKey :: PWk_PowerUp is running!!
0x9a5eaa40:   Calling GWES power proc.
0x9a5eaa40: ADD XllpLCD init for this! 是GWES调用的XllpLCDInit
0x9a5eaa40: LTM035A776C init.
0x9a5eaa40: XllpLCDInit is running!
0x9a5eaa40:   Returning to normally scheduled programming.
0x9a434634: ndisMResetCompleteStage2: Internal reset
0x9a5eaa40: FS: Got Power notif 0x00000001

0x9a5eaa40: Back from PowerOffSystem.
0x9a5eaa40:  power sleep Resume now  被唤醒
0x9a5eaa40: Done GP1 Irq   调用InterruptDone处理中断
..................现在就开始死机了,点屏,按键都没什么反应
但是过了几秒后
0x9a4dc3f4: FS: Got Power notif 0x00000002   ------又自己进入到休眠中
0x9a4dc3f4: FSREG: Registry flush unnecessary
0x9a4dc3f4: FSRAM: Flushing cached file data
0x9a4dc3f4: Powering Off system:
0x9a4dc3f4:   Calling GWES power proc.
0x9a4dc3f4:   Calling device manager power proc.
0x9a4dc3f4: PowerKey :: PWk_PowerDown is running!!
0x9a4dc3f4:   Calling OEMPowerOff...
OEMPowerOff+++++            ---------------------又休眠了

我再次按下GPIO1
OEMPowerOff-----     -------------------------又被唤醒
0x9a4dc3f4: Back from OEMPowerOff
0x9a4dc3f4:   Calling device manager power proc.
0x9a4dc3f4: PowerKey :: PWk_PowerUp is running!!
0x9a4dc3f4:   Calling GWES power proc.
0x9a4dc3f4: ADD XllpLCD init for this!
0x9a4dc3f4: LTM035A776C init.
0x9a4dc3f4: XllpLCDInit is running!
0x9a4dc3f4:   Returning to normally scheduled programming.
0x9a434634: ndisMResetCompleteStage2: Internal reset
0x9a4dc3f4: FS: Got Power notif 0x00000001
0x9a4dc3f4: Back from PowerOffSystem.  ---------被唤醒,但是系统任何输入到不能执行
........过了一会又休眠..........

#4


请问这个是什么原因啊??

#5


该回复于2010-08-04 09:48:47被版主删除