xiyulang
驱动牛犊
驱动牛犊
  • 注册日期2005-09-06
  • 最后登录2010-07-22
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望111点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
阅读:1901回复:0

s3c2440 wince4.2复位重启问题!!!

楼主#
更多 发布于:2008-03-27 14:48
wince起来后在上层调用IOCTL_HAL_REBOOT,可以实现系统跳转到NBOOT而重启wince,但很有时系统会死在调用IOCTL_HAL_REBOOT,跟踪代码发现这是调用了底层函数CPUPowerReset(),这个函数的汇编代码在Fw.s中:
LEAF_ENTRY CPUPowerReset
               ldr     r3, =SLEEPDATA_BASE_VIRTUAL  ; base of Sleep mode storage =0xAC024000
    mov     r2, #0x38000000                    ; store Virtual return address
    str     r2, [r3], #4

    ;Disable MMU
    ldr        r2, = PhysicalStart
    ldr     r3, = (0x8C000000 - 0x30000000)
    sub     r2, r2, r3
    
    mov     r1, #0x0070             ; Disable MMU
                     nop
    mcr     p15, 0, r1, c1, c0, 0
    mov     pc, r2                  ; Jump to PStart
    nop

最后发现在禁用MMU时,系统有时会死在语句mcr     p15, 0, r1, c1, c0, 0中,请问为什么禁用mmu会令系统死掉?有什么办法可以实现禁用mmu而不死机?各位赐教!
游客

返回顶部