Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62654
  • 博文数量: 24
  • 博客积分: 31
  • 博客等级: 民兵
  • 技术积分: 139
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-05 13:58
文章分类
文章存档

2013年(2)

2012年(22)

我的朋友

分类:

2012-05-10 19:30:53

一步一步实验wince(2009-04-2)
creator
sz111@126.com

原本以为睡眠唤醒都已经ok了,但是今天测试唤醒之后会导致死机,最后发现是UPLL和MPLL配置不对,
修改之后不死机了,但是串口乱码。一直没有找到原因。通过用wince读写寄存器发现在唤醒winceCLKDIVN从5改为7了。问题就在这里了。原来stepldr里面我当时固定了CLKDIVN,导致CLKDIVN_VAR无效了。修改之后ok了。
 wince读写寄存器工具very good。参考http://www.cnblogs.com/we-hjb/archive/2009/03/08/1317176.html
另外,唤醒源一定要为EINT0--EINT15之间的一个,休眠之后中断是都屏蔽的。唤醒的时候直接从reset执行了。
其中,真正进入sleep是调用
; 8. Jump to real Power-Off Address
ldr r6, =0x80000000 ; make address to 0x8020 1020
add r6, r6, #0x200000
add r6, r6, #0x1000
add r6, r6, #0x20
mov     pc, r6 ; jump to Power off code in ROM

为何这里要多加0x1000呢,原来是因为NB0为了保持格式兼容,前4K为空,所以真正的程序是从
0x1000之后开始的。StartUp是从0x80200000开始,所以sleep真正跳到了SelfRefreshAndPowerOff 程序很巧妙啊。

STARTUPTEXT
LEAF_ENTRY StartUp 1 b ResetHandler b %B1 ;handler for Undefined mode b %B1 ;handler for SWI interrupt b %B1 ;handler for PAbort b %B1 ;handler for DAbort b %B1 ;reserved b %B1 ;handler for IRQ interrupt b %B1 ;handler for FIQ interrupt 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 .


文件:wince5寄存器读写.rar
大小:126KB
下载:下载
阅读(1033) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~