3688|6

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

谁有samsung2443+wince6.0,或wince5.0的sleep and wake up program [复制链接]

正在做一个2443的sleep and wake up 的程序.不知道谁有?

最新回复

quq
楼主发贴很可爱!  详情 回复 发表于 2009-1-10 15:58
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
很多人有,LZ什么问题?
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
"正在做一个2443的sleep and wake up 的程序"??什么程序?要完成什么功能?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
就是让系统睡眠和唤醒,用EINT0的中断去唤醒?哪位兄弟做过?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
现在的问题发现睡眠完了后程序并未停止,而是跑到唤醒的汇编代码里去了.部分代码如下:
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
        mov     r2, #0
        ldr     r0, =SLEEPDATA_SIZE                ; get size of data structure (in words)
30
        ldr     r1, [r3], #4
        and     r1, r1, #0x1
        mov     r1, r1, LSL #31
        orr     r1, r1, r1, LSR #1
        add     r2, r2, r1
        subs    r0, r0, #1
        bne     %b30
       
        ldr     r0, =vINFORM3
        str     r2, [r0]                ; Store in Power Manager Scratch pad register


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

;;       5. Cache Flush
        [ {TRUE}
        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) Mode
        ldr     r0, =vGPIOBASE

  ldr     r1, =0x5502   ; EINT0 wakeup

        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, =vWKUPSTAT                ;CLEAR vWKUPSTAT   
        mov                r1,#0x3f
        str     r1, [r0]
       
        ;ldr     r0, =vREFRESH               
        ;ldr     r1, [r0]                ; r1=rREFRESH       
        ;orr     r1, r1, #(1 << 22)
        ldr     r0, =vBANKCON3  
        ldr     r1, [r0]
        orr     r1, r1, #(0x3 << 16) ;parital self fresh
       
        ldr     r0, =vHCLKCON                ;enable clock
        mov                r1,#0xffffffff
        str     r1, [r0]
        ldr     r0, =vPCLKCON
        mov                r1,#0xffffffff
        str     r1, [r0]
        ldr     r0, =vSCLKCON
        mov                r1,#0xffffffff
        str     r1, [r0]
       
        ldr     r4, =vRSTCON
        ldr     r5, =0x0ff0a            
        str     r5, [r4]               

        ldr     r4, =vOSCSET
        ldr     r5, =0x8000            
        str     r5, [r4]

        ldr     r4, =vPWRCFG
        ldr     r5, =0x8201           
        str     r5, [r4]
       
        ldr     r4, =vPWRMODE
        ldr                r5, [r4]
        bic                r5, r5, #0xff00
        bic                r5, r5, #0x00ff
        ldr                r6, =0x2BED
        orr   r5, r5, r6            ; Power Off Mode
       
       

  ;str   r1, [r0]    ; hugo
  ;str   r3, [r2]    ;hugo
        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

; using GPF4567 LED LIGHT TO TEST 2

        ldr        r0, =vGPFCON
        LDR r1, =0x550A       
        STR        r1, [r0]
       
        LDR r3,=0xF0
        LDR r4,=0x11
LOOP7
        LDR r2,=0xF0
        EOR r3,r3,r2
               
        LDR        r0, =vGPFDAT
        STR        r3, [r0]
        NOP
        NOP
       
        MOV r1,#0xFF00
LOOP8
        MOV r0,#0x12c       
        NOP
        NOP
LOOP9
        SUBS r0,r0,#1
        BNE LOOP9
       
        SUBS r1,r1,#1
        BNE LOOP8
        NOP
       
        SUBS r4,r4,#1
        BNE LOOP7
;using GPF4567 LED LIGHT TO TEST 2 END

        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
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 
唤醒后CPU从0地址重新开始运行
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主发贴很可爱!
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表