2952|9

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

中断唤醒后,不能恢复系统 [复制链接]

现在做2440的睡眠唤醒,用的ADS下编译的bootloader。
OAL里面设置eint0为唤醒中断,利用点亮led发现进入了startup.s函数oalcpupoweroff。
按下EINT0进入bootloader的awake_SLEEP代码,led点亮,可是进不了系统呀,求各位帮忙
WAKEUP_SLEEP
        ;Release SCLKn after wake-up from the SLEEP mode.

        ldr        r1,=MISCCR
        ldr        r0,[r1]
        bic        r0,r0,#(7<<17)  ;SCLK0:0->SCLK, SCLK1:0->SCLK, SCKE:0->=SCKE.
        str        r0,[r1]

        ;Set memory control registers
        ldr        r0,=SMRDATA        ;be careful!,
        ldr        r1,=BWSCON        ;BWSCON Address
        add        r2, r0, #52        ;End address of SMRDATA
20
        ldr        r3, [r0], #4
        str        r3, [r1], #4
        cmp        r2, r0
        bne        %B20

        mov r1,#256
21       
        subs r1,r1,#1        ;1) wait until the SelfRefresh is released.
        bne %B21

        ldr        r0,=GPFCON
        ldr        r1,=0x0102
        str        r1,[r0]
        ldr        r0,=GPFDAT   ;led4
        ldr        r1,=0xe0
        str        r1,[r0]
       
        ldr r1,=GSTATUS3         ;GSTATUS3 has the start address just after SLEEP wake-up
        ldr r0,[r1]

         mov pc,r0

最新回复

学习。 对汇编不是很熟,“将stepldr里面的关于唤醒的代码,拷贝到ads下的init.s里面了”拷贝到哪里,是如何跳转过去的?  详情 回复 发表于 2009-10-21 11:26
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
ldr r1,=GSTATUS3 ;GSTATUS3 has the start address just after SLEEP wake-up
ldr r0,[r1]

mov pc,r0


上面的GSTATUS3 保存的地址不对吗 ?
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
很可能是OEMSetRealTime()函数的问题。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
我看下,这个函数函数该怎么设置 ?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(中级)

5
 
SLEEPDATA_BASE_VIRTUAL          EQU        0xA0028000                ; keep in sync w/
SLEEPDATA_BASE_PHYSICAL         EQU        0x30028000

ads下面似乎只能访问物理地址,用GSTATUS3 的值 减去 0x70000000才对吧 ?
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
现在唤醒已经可以进入wince界面,能够打印信息,不过键盘不好使了,继续修改。。。。。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
请问如何能唤醒的?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 
将stepldr里面的关于唤醒的代码,拷贝到ads下的init.s里面了,以前应该是唤醒的地址不对
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
这两天遇到奇怪的:在OAL中我有如下函数,之前写的时候为了调试加了OALMSG调试信息,后来把它注释都没什么问题,现在换了一台电脑,代码一样但是编译出来的NK不能进休眠了,太神奇,郁闷了几天偶然发现把以前注释掉的调试信息打开,又能正常休眠唤醒了!!!休眠唤醒压根就不调这函数,不知是何道理。。。。。。
BOOL ReadUUID(VOID *pOutBuffer)
{
        BYTE bySectorBuf[SECTOR_SIZE] = {0,};

        if ( !FMDReadSector(UUID_SECTOR_ADDR, bySectorBuf, NULL, 1) )
                return FALSE;

        memcpy(pOutBuffer, bySectorBuf, sizeof(GUID));
// 之前把以下调试信息代码注释也没有什么问题,
//           但是后来发现不写以下调试信息居然造成CPU不能进入休眠,奇怪!?编译又不报错!
        OALMSG(1,(TEXT("uuid = %02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X.\r\n"),
                bySectorBuf[0],bySectorBuf[1],bySectorBuf[2],bySectorBuf[3],bySectorBuf[4],bySectorBuf[5],
                bySectorBuf[6],bySectorBuf[7],bySectorBuf[8],bySectorBuf[9],bySectorBuf[10],bySectorBuf[11],
                bySectorBuf[12],bySectorBuf[13],bySectorBuf[14],bySectorBuf[15]));
        return TRUE;
}
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

10
 
学习。
对汇编不是很熟,“将stepldr里面的关于唤醒的代码,拷贝到ads下的init.s里面了”拷贝到哪里,是如何跳转过去的?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表