3727|10

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince5.0开始菜单SUSPEND没有反应 [复制链接]

我是用S3C2410 WINCE5.0,在开始菜单点击SUSPEND,系统没有挂起,也没有什么异样,从DEBUG信息版本到信息有如下输出:
0x8fae4868: Bailing on save bits because someone has an open DC!
0x8fae4868: OEMIoControl: Unsupported Code 0x10100f4 - device 0x0101 func 61
0x8fae4868: FS: Got Power notif 0x00000002
0x8fae4868: FSREG: Registry flush unnecessary
0x8fae4868: FSRAM: Flushing cached file data
0x8fae4868: Powering Off system:
0x8fae4868:   Calling GWES power proc.
0x8fae4868: ++Ps2Keybd::KeybdPowerOff
0x8fae4868: --Ps2Keybd::KeybdPowerOff
0x8fae4868:   Calling device manager power proc.
0x8fae4868: + CAN_PowerDown
0x8fae4868: - CAN_PowerDown
0x8fae4868: SMLoader Power down end...
0x8fae4868:   Calling OEMPowerOff...
0x8fae4868: Back from OEMPowerOff
0x8fae4868:   Calling device manager power proc.
0x8fae4868: INFO: WAVEDEV.DLL: SetI2SClockRate:  Using processor frequency reported by the OAL (50750000).
0x8fae4868: Prescaler:2
0x8fae4868: + CAN_PowerUp
0x8fae4868: - CAN_PowerUp
0x8fae4868:   Calling GWES power proc.
0x8fae4868: ++Ps2Keybd::KeybdPowerOn
0x8fae4868: --Ps2Keybd::KeybdPowerOn
0x8fae4868:   Returning to normally scheduled programming.
0x8fd8cca4: PlatformResumeSystem: KernelIoControl() returned an invalid size -1
0x8fc02c2c: +CHub(Root tier 0)::HandleDetach
0x8fc02c2c: CHub(Root tier 0)::HandleDetach - status change thread closed in 2 ms
0x8fc02c2c: -CHub(Root tier 0)::HandleDetach
0x8fc02c2c: +CDevice::DeInitialize
0x8fc02c2c: -CDevice::DeInitialize
0x8fc02c2c: +COhcd::Initialize. Entry
0x8fc02c2c: +CDeviceGlobal::Initialize
0x8fae4868: FS: Got Power notif 0x00000001
0x8fc02c2c: USBD: DLL attach
0x8fc02c2c: +USBD:HcdAttach, hcd: 0x452B60
0x8fc02c2c: -CDevice::Initialize, success!
0x8fc02c2c: +CHW::Initialize base=0x330000, intr=0x11
0x8fc02c2c: -CHW::Initialize, success!
0x8fc02c2c: +CPipe::Initialize
0x8fc02c2c: -CPipe::Initialize. Success!
0x8fc02c2c: +CHW::EnterOperationalState
0x8fc02c2c: -CHW::EnterOperationalState
0x8fc02c2c: -COhcd::Initialize. Success!!
0x8fcd2680: ndisMResetCompleteStage2: Internal reset
0x8fcd2680: ndisMResetCompleteStage2: Internal reset
0x8fcd2680: ndisMResetCompleteStage2: Internal reset
0x8fae4868: Back from PowerOffSystem.
0x8faeb000: [NOTIFY] HandleSystemEvent 11 none
在RELEASE版本中输出如下提示信息:
OEMIoControl: Unsupported Code 0x10100f4 - device 0x0101 func 61
SMLoader Power down end...
INFO: WAVEDEV.DLL: SetI2SClockRate:  Using processor frequency reported by the OAL (50750000).
Prescaler:2

我在F:\WINCE500\PLATFORM\COMMON\SRC\ARM\SAMSUNG\S3C2410X\POWER\off.c OEMPowerOff()函数中添加提示信息也没有显示,好像是根本就没有调用这个函数,不知道问题出在哪里?平台中我已经添加了POWER MAGAGEMENT(FULL),请高人指点,谢谢!

最新回复

我也遇到跟楼主类似的问题: 1、定制内核时添加了PM(FULL)组件,但是控制面板中没有“电源”选项! 2、点击开始菜单中的“挂起”,LCD背光关闭,打印信息如下: BKL_IOControl IOCTL code = 3280904 BKL: Received IOCTL_POWER_SET OEMIoControl: Unsupported Code 0x10100f4 - device 0x0101 func 61 BKL_PowerDown(). -OEMPowerOff Begin. -XllpPmEnterSleep Calling. -XllpPmSleepCLevelProcessing In. -XllpPmSaveStdRegList In. -XllpPmSaveStdRegList End. -XllpPmSleepCLevelProcessing End. RaiseException: Thread=83cb9400 Proc=81d66320 'device.exe' AKY=0000001d PC=03fa71d4(coredll.dll+0x000371d4) RA=8013d8e8(NK.EXE+0x0003d8e8) BVA=00000001 FSR=00000001 Exception 'RaiseException' Thread=83cb9400 AKY=0000001d PC=00000180 BVA=00000001 R0=81d68600  R1=81d680e0  R2=81d680f0  R3=ffffc808 R4=000000fb  R5=00000064  R6=ffffc886  R7=ffffc74c R8=ffffc764  R9=8013d8e8 R10=80106e08 R11=00000000 R12=00000000  SP=00000000  Lr=0000000a Psr=a00000df Halting system 我设置了GPIO0为唤醒源,但触摸它为低电平时,系统没有任何反应,一直停留在这个状态,不论是触摸屏还是键盘,都没有反应了! 我的coredll.map文件部分如下(0x000371d4附近): 0001:00036058      DPA_Sort                  10037058 f  coredll_ALL:dynarray.obj 0001:00036098      DSA_Sort                  10037098 f  coredll_ALL:dynarray.obj 0001:000360e8      xxx_GetSystemPowerState    100370e8 f  coredll_ALL:tpm.obj 0001:00036138      xxx_SetSystemPowerState    10037138 f  coredll_ALL:tpm.obj 0001:000361e8      xxx_SetPowerRequirement    100371e8 f  coredll_ALL:tpm.obj 0001:00036258      xxx_ReleasePowerRequirement 10037258 f  coredll_ALL:tpm.obj 0001:00036298      xxx_RequestPowerNotifications 10037298 f  coredll_ALL:tpm.obj 0001:000362ec      xxx_StopPowerNotifications 100372ec f  coredll_ALL:tpm.obj 我的代码中根本没有调用有关SetSystemPowerState函数。  详情 回复 发表于 2009-5-26 12:41
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
0x8fae4868:  Calling OEMPowerOff...
0x8fae4868: Back from OEMPowerOff
没有执行OEMPowerOff函数就返回了???
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
OEMPowerOff
里面会调用汇编执行挂起的,如果没有,楼主自己加入即可。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
感谢gooogleman的解答,我在startup.s文件中加了如下挂起代码,我现在还不能确定是否进入了OEMPowerOff函数?

        LEAF_ENTRY OALCPUPowerOff

;       1. Push SVC state onto our stack
        stmdb   sp!, {r4-r12}                  
        stmdb   sp!, {lr}

;       2. Save MMU & CPU Register to RAM
    ldr     r3, =SLEEPDATA_BASE_VIRTUAL     ; base of Sleep mode storage

        ldr     r2, =Awake_address              ; store Virtual return address
        str     r2, [r3], #4

        mrc     p15, 0, r2, c1, c0, 0           ; load r2 with MMU Control
        ldr     r0, =MMU_CTL_MASK               ; mask off the undefined bits
        bic     r2, r2, r0
        str     r2, [r3], #4                    ; store MMU Control data

        mrc     p15, 0, r2, c2, c0, 0           ; load r2 with TTB address.
        ldr     r0, =MMU_TTB_MASK               ; mask off the undefined bits
        bic     r2, r2, r0
        str     r2, [r3], #4                    ; store TTB address

        mrc     p15, 0, r2, c3, c0, 0           ; load r2 with domain access control.
        str     r2, [r3], #4                    ; store domain access control

        str     sp, [r3], #4                    ; store SVC stack pointer

        mrs     r2, spsr
        str     r2, [r3], #4                    ; store SVC status register

        mov     r1, #Mode_FIQ:OR:I_Bit:OR:F_Bit ; Enter FIQ mode, no interrupts
        msr     cpsr, r1
        mrs     r2, spsr
        stmia   r3!, {r2, r8-r12, sp, lr}       ; store the FIQ mode registers

        mov     r1, #Mode_ABT:OR:I_Bit:OR:F_Bit ; Enter ABT mode, no interrupts
        msr     cpsr, r1
        mrs                r0, spsr
        stmia   r3!, {r0, sp, lr}               ; store the ABT mode Registers

        mov     r1, #Mode_IRQ:OR:I_Bit:OR:F_Bit ; Enter IRQ mode, no interrupts
        msr     cpsr, r1
        mrs     r0, spsr
        stmia   r3!, {r0, sp, lr}               ; store the IRQ Mode Registers

        mov     r1, #Mode_UND:OR:I_Bit:OR:F_Bit ; Enter UND mode, no interrupts
        msr     cpsr, r1
        mrs     r0, spsr
        stmia   r3!, {r0, sp, lr}               ; store the UND mode Registers

        mov     r1, #Mode_SYS:OR:I_Bit:OR:F_Bit ; Enter SYS mode, no interrupts
        msr     cpsr, r1
        stmia   r3!, {sp, lr}                   ; store the SYS mode Registers

        mov     r1, #Mode_SVC:OR:I_Bit:OR:F_Bit ; Back to SVC mode, no interrupts
        msr     cpsr, r1

;       3. do Checksum on the Sleepdata
        ldr     r3, =SLEEPDATA_BASE_VIRTUAL        ; get pointer to SLEEPDATA
        ldr     r2, =0x0
        ldr     r0, =(SLEEPDATA_SIZE-1)                ; get size of data structure (in words)
30
        ldr     r1, [r3], #4
        and     r1, r1, #0x1
        mov     r1, r1, ROR #31
        add     r2, r2, r1
        subs    r0, r0, #1
        bne     %b30

        ldr     r0, =vGPIOBASE
        ;;;add                r2, r2, #1                                ; test checksum of the Sleep data error
        str     r2, [r0, #oGSTATUS3]                ; Store in Power Manager Scratch pad register

        ldr     r0, =vGPIOBASE
        ldr     r1, =0x550a
        str     r1, [r0, #oGPFCON]
       
        ldr                r1, =0x30
        str                r1, [r0, #oGPFDAT]       

;       4. Interrupt Disable
    ldr     r0, =vINTBASE
    mvn     r2, #0
        str     r2, [r0, #oINTMSK]
        str     r2, [r0, #oSRCPND]
        str     r2, [r0, #oINTPND]

;;       5. Cache Flush
        bl                OALClearUTLB
        bl                OALFlushICache
        ldr     r0, = (DCACHE_LINES_PER_SET - 1)   
        ldr     r1, = (DCACHE_NUM_SETS - 1)   
        ldr     r2, = DCACHE_SET_INDEX_BIT   
        ldr     r3, = DCACHE_LINE_SIZE     
        bl                OALFlushDCache

;       6. Setting Wakeup External Interrupt(EINT0,1,2) Mode
        ldr     r0, =vGPIOBASE

        ldr     r1, =0x550a
        str     r1, [r0, #oGPFCON]

;        ldr     r1, =0x55550100
;        str     r1, [r0, #oGPGCON]

;       7. Go to Power-Off Mode
        ldr         r0, =vMISCCR                        ; hit the TLB
        ldr                r0, [r0]
        ldr         r0, =vCLKCON
        ldr                r0, [r0]

        ldr     r0, =vREFRESH               
        ldr     r1, [r0]                ; r1=rREFRESH       
        orr     r1, r1, #(1 << 22)

        ldr         r2, =vMISCCR
        ldr                r3, [r2]
        orr                r3, r3, #(3<<17)        ; Make sure that SCLK0:SCLK->0, SCLK1:SCLK->0, SCKE=L during boot-up
        bic                r3, r3, #(7<<20)
        orr                r3, r3, #(6<<20)

        ldr     r4, =vCLKCON
        ldr     r5, =0x1ffff8            ; Power Off Mode

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Sometimes it is not working in cache mode. So I modify to jump to ROM area.
;
;;;        ldr                r6, =0x92000000                ; make address to 0x9200 0020
;;;        add                r6, r6, #0x20                ;
;;;        mov     pc, r6                                ; jump to Power off code in ROM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        b       SelfRefreshAndPowerOff

        ALIGN   32                      ; for I-Cache Line(32Byte, 8 Word)

SelfRefreshAndPowerOff                ; run with Instruction Cache's code
        str     r1, [r0]                ; Enable SDRAM self-refresh
        str                r3, [r2]                ; MISCCR Setting
        str     r5, [r4]                ; Power Off !!
        b       .

;;;        LTORG

; This point is called from EBOOT's startup code(MMU is enabled)
;       in this routine, left information(REGs, INTMSK, INTSUBMSK ...)

Awake_address

;       1. Recover CPU Registers

        ldr     r3, =SLEEPDATA_BASE_VIRTUAL                ; Sleep mode information data structure
        add     r2, r3, #SleepState_FIQ_SPSR
        mov     r1, #Mode_FIQ:OR:I_Bit:OR:F_Bit                ; Enter FIQ mode, no interrupts - also FIQ
        msr     cpsr, r1
        ldr     r0,  [r2], #4
        msr     spsr, r0
        ldr     r8,  [r2], #4
        ldr     r9,  [r2], #4
        ldr     r10, [r2], #4
        ldr     r11, [r2], #4
        ldr     r12, [r2], #4
        ldr     sp,  [r2], #4
        ldr     lr,  [r2], #4

        mov     r1, #Mode_ABT:OR:I_Bit                        ; Enter ABT mode, no interrupts
        msr     cpsr, r1
        ldr     r0, [r2], #4
        msr     spsr, r0
        ldr     sp, [r2], #4
        ldr     lr, [r2], #4

        mov     r1, #Mode_IRQ:OR:I_Bit                        ; Enter IRQ mode, no interrupts
        msr     cpsr, r1
        ldr     r0, [r2], #4
        msr     spsr, r0
        ldr     sp, [r2], #4
        ldr     lr, [r2], #4

        mov     r1, #Mode_UND:OR:I_Bit                        ; Enter UND mode, no interrupts
        msr     cpsr, r1
        ldr     r0, [r2], #4
        msr     spsr, r0
        ldr     sp, [r2], #4
        ldr     lr, [r2], #4

        mov     r1, #Mode_SYS:OR:I_Bit                        ; Enter SYS mode, no interrupts
        msr     cpsr, r1
        ldr     sp, [r2], #4
        ldr     lr, [r2]

        mov     r1, #Mode_SVC:OR:I_Bit                                        ; Enter SVC mode, no interrupts - FIQ is available
        msr     cpsr, r1
        ldr     r0, [r3, #SleepState_SVC_SPSR]
        msr     spsr, r0

;       2. Recover Last mode's REG's, & go back to caller of OALCPUPowerOff()

        ldr     sp, [r3, #SleepState_SVC_SP]
        ldr     lr, [sp], #4
        ldmia   sp!, {r4-r12}
        mov     pc, lr                          ; and now back to our sponsors


        ENTRY_END
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果在OEMPowerOff中打印信息不大方便,可以用汇编实现点亮LED?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
我这里也是,开始菜单里面的命令没有效果,按下后系统就是把LCD关了,但是没有进入到休眠那个函数
我用休眠按钮系统可以正常休眠,并且可以正常唤醒。
我在Windows CE 5.0 下面又是正常的,这个问题在Windows CE 6.0 上存在。
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主,在汇编点灯,没有灯就用示波器看。

我使用按钮,没有试过那个菜单。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
点灯程序是不是在LEAF_ENTRY OALCPUPowerOff 下面写?象我这样不能挂起应该跟BOOTLOADER没多大关系吧?另外问一下安装PB时是否要选
SHARED SOURCE 的选项?,好像我选和不选效果都一样,只是选了后在PRIVATE 下面产生更多文件。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
mark
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

10
 
想要反应,改 PUBLIC下的代码了,
public\shell\oak\hpc\explorer\taskbar\stmenu.cpp
里面的startmenu_processcommand函数的CASE IDM_START_SUSPEND
改这个就OK了,比如在这里调用你的一个应用程序,你这个应用程序再调用IO操作,关机、休眠都随你便了。
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

11
 
我也遇到跟楼主类似的问题:

1、定制内核时添加了PM(FULL)组件,但是控制面板中没有“电源”选项!

2、点击开始菜单中的“挂起”,LCD背光关闭,打印信息如下:

BKL_IOControl IOCTL code = 3280904
BKL: Received IOCTL_POWER_SET
OEMIoControl: Unsupported Code 0x10100f4 - device 0x0101 func 61
BKL_PowerDown().
-OEMPowerOff Begin.
-XllpPmEnterSleep Calling.
-XllpPmSleepCLevelProcessing In.
-XllpPmSaveStdRegList In.
-XllpPmSaveStdRegList End.
-XllpPmSleepCLevelProcessing End.
RaiseException: Thread=83cb9400 Proc=81d66320 'device.exe'
AKY=0000001d PC=03fa71d4(coredll.dll+0x000371d4) RA=8013d8e8(NK.EXE+0x0003d8e8) BVA=00000001 FSR=00000001
Exception 'RaiseException' Thread=83cb9400 AKY=0000001d PC=00000180 BVA=00000001
R0=81d68600  R1=81d680e0  R2=81d680f0  R3=ffffc808
R4=000000fb  R5=00000064  R6=ffffc886  R7=ffffc74c
R8=ffffc764  R9=8013d8e8 R10=80106e08 R11=00000000
R12=00000000  SP=00000000  Lr=0000000a Psr=a00000df
Halting system

我设置了GPIO0为唤醒源,但触摸它为低电平时,系统没有任何反应,一直停留在这个状态,不论是触摸屏还是键盘,都没有反应了!

我的coredll.map文件部分如下(0x000371d4附近):

0001:00036058      DPA_Sort                  10037058 f  coredll_ALL:dynarray.obj
0001:00036098      DSA_Sort                  10037098 f  coredll_ALL:dynarray.obj
0001:000360e8      xxx_GetSystemPowerState    100370e8 f  coredll_ALL:tpm.obj
0001:00036138      xxx_SetSystemPowerState    10037138 f  coredll_ALL:tpm.obj
0001:000361e8      xxx_SetPowerRequirement    100371e8 f  coredll_ALL:tpm.obj
0001:00036258      xxx_ReleasePowerRequirement 10037258 f  coredll_ALL:tpm.obj
0001:00036298      xxx_RequestPowerNotifications 10037298 f  coredll_ALL:tpm.obj
0001:000362ec      xxx_StopPowerNotifications 100372ec f  coredll_ALL:tpm.obj

我的代码中根本没有调用有关SetSystemPowerState函数。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表