Chinaunix首页 | 论坛 | 博客
  • 博客访问: 920647
  • 博文数量: 96
  • 博客积分: 10071
  • 博客等级: 上将
  • 技术积分: 1118
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-20 17:54
文章分类

全部博文(96)

文章存档

2011年(3)

2010年(3)

2009年(29)

2008年(54)

2007年(7)

分类: WINDOWS

2009-04-02 13:12:02

一步一步实验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
下载:下载
阅读(2202) | 评论(0) | 转发(1) |
0

上一篇:WinCE线程同步

下一篇:wince5 hive注册表

给主人留下些什么吧!~~