syl819

    1. WINCE 5.0 待机恢复的问题,最后回不到C中 5/2764 嵌入式系统 2009-04-17
      现在用AXD仿真了,得到在BOOTLOADER中是这样 SleepState_WakeAddr            0x804070AC SleepState_MMUCTL       0xC000327F SleepState_MMUTTB       0x31F40000 SleepState_MMUDOMAIN    0x00000001 根据返回地址 0x804070AC ,应该是页表中偏移 0x2010 处,于是查页表内存 0x31F42010 为: 0x31f42010  0E 04 40 30 0E 04 50 30 0E 04 60 30 0E 04 70 30 ..@0..P0..`0..p0 0x31f42020  0E 04 80 30 0E 04 90 30 0E 04 A0 30 0E 04 B0 30 ...0...0...0...0 0x31f42030  0E 04 C0 30 0E 04 D0 30 0E 04 E0 30 0E 04 F0 30 ...0...0...0...0 的确是指向 0x30400000 啊,而且 domain = 0,上面的 mmudomain 设置为domain0 依靠 AP 位,这个AP 位为01, 这样理论上页表没有错啊,MMUCTL 的设置表面上看也没有错的。 所以我的代码中         mcr     p15, 0, r8,  c1, c0, 0          ; restore MMU control ;   3. Jump to Kernel Image fw.s (Awake_address)         mov     pc, r7                          ;  jump to new VA (back up Power management stack)         这几句都能跑的,能回到 SleepState_WakeAddr 这个地方的啊。 而且我查 SleepState_WakeAddr 0x804070AC 对应的的映射地址 0x304070AC 里的内容的确是 startup.s 中 Awake_address 里的内容,所以的确是能MMU 映射,并跳到这个函数里的。 关键是现在我是在WINCE 进入休眠后,再打开AXD来仿真的,但跑到打开MMU这句后,AXD不能对任何内存访问了, 甚至0x80000000 和 0xa0000000也不行了,奇怪。

最近访客

< 1/1 >

统计信息

已有34人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言