主题 : 请问掉电模式~谢谢! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 7288
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-07-09
最后登录: 2010-06-26
楼主  发表于: 2010-03-22 10:29

 请问掉电模式~谢谢!

掉电模式中用到一个标号startpointafterpoweroffwakeup.
最近开始接触2410.在看启动代码的时候发现一个问题一直不懂,就是进入掉电唤醒的时候已经初始化内存控制寄存器了,为什么掉电唤醒后还要再初始化一便内存控制器?也就是说为什么startpointafterpoweroffwakeup这个标号放在初始话内存控制器之前.同时既然是进入掉电模式,肯定是之前已经初始化堆栈啊,中断标号的.因此,为什么不将startpointafterpoweroffwakeup放在他们之后?
    请大家详细点~谢谢!我是刚接触的菜鸟~
级别: 新手上路
UID: 7288
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-07-09
最后登录: 2010-06-26
1楼  发表于: 2010-03-23 14:39
为什么没人回答我呢?
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
2楼  发表于: 2010-03-23 19:37
    ldr r1,=GSTATUS3     ;GSTATUS3 has the start address just after SLEEP wake-up
    ldr r0,[r1]
    mov pc,r0

这个返回休眠之前保存的地址,不存在你说的,重复初始化的情况。

    ;Set memory control registers
     ldr    r0,=SMRDATA    ;be careful!

另外,这个使用了编译的绝对地址,应该是错误的,所以这个休眠唤醒功能执行结果应该是错误的....
级别: 新手上路
UID: 7288
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-07-09
最后登录: 2010-06-26
3楼  发表于: 2010-03-23 20:12
因为我看啊南的那本书上写着,在进入掉电模式之前,把GSTATUS3=startpointafterpoweroffwakeup。也就是说执行下面之后
ldr r1,=GSTATUS3     ;GSTATUS3 has the start address just after SLEEP wake-up
    ldr r0,[r1]
    mov pc,r0
应该是到了   ;Set memory control registers
                     ldr    r0,=SMRDATA    ;be careful!
这里~那不就是又开始初始化了吗?
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
4楼  发表于: 2010-03-23 20:47
“startpointafterpoweroffwakeup”应该是你自己定义的一个函数。

再不然,或许我错了。
级别: 新手上路
UID: 7288
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-07-09
最后登录: 2010-06-26
5楼  发表于: 2010-03-23 22:16
    ;In case of the wake-up from SLEEP mode, go to SLEEP_WAKEUP handler.
    bne    WAKEUP_SLEEP

    EXPORT StartPointAfterSleepWakeUp
StartPointAfterSleepWakeUp

    ;Set memory control registers
     ;ldr    r0,=SMRDATA
     adrl    r0, SMRDATA    ;be careful!
    ldr    r1,=BWSCON    ;BWSCON Address
    add    r2, r0, #52    ;End address of SMRD
这是代码里面的~startpointafterpoweroffwakeup是一个标号,啊南那本书《arm linux入门与实践》上写着在进入掉电前将把GSTATUS3=startpointafterpoweroffwakeup。
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
6楼  发表于: 2010-03-23 23:12
显然的两者说的不是一样的东西,这个又不是Linux的启动代码。
不要迷信别人的程序,
当然,也不要迷信哥。
此问题到此为止。当然,也欢迎高手拿砖头砸我
级别: 新手上路
UID: 7288
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-07-09
最后登录: 2010-06-26
7楼  发表于: 2010-03-24 09:56
额........没有说是linux的启动代码~那究竟这个标号StartPointAfterSleepWakeUp
有什么用?我看