5 posts / 0 new
Last post
z20121202038
Offline
Last seen:3 years 7 months ago
加入:2016-03-30 12:51
关于低功耗

你好,
有几个关于低功耗的疑问:
1)什么情况下系统会进入低功耗模式?是不是所有的任务都进入IDLE或disable状态时,就会进入低功耗。而进入低功耗的代码实现在arch_main() 里面?
2)承接问题1,在进行低功耗设计时,是不是主要考虑的是让任务及时进入IDLE状态就行了,还是要在任务中加入进入低功耗模式的程序接口?
3)深度睡眠和扩展睡眠这两种睡眠模式可以同时存在吗?比如说,在扩展休眠模式下休眠10分钟,仍然没有被唤醒,那么切换到深度睡眠模式下。
4)看arch_main.c的main_func()里有这么一段:
else { // mode_deep_sleep
#if DEVELOPMENT_DEBUG
SetBits16(SYS_CTRL_REG, RET_SYSRAM, 1); // retain System RAM
#else
SetBits16(SYS_CTRL_REG, RET_SYSRAM, 0); // turn System RAM off => all data will be lost!
#endif
这是不是表示深度睡眠模式下,数据其实也是可以驻留在System RAM中的?
这个DEVELOPMENT_DEBUG宏是开发调试的过程中,需要打开吗?开发完成后必须关掉?

问题有点多,麻烦指导一下,谢谢!

Device:
snowdream1
Offline
Last seen:3 months 3 weeks ago
Staff
加入:2014-08-17 14:25
1.睡眠进入的条件:1.没有需要处理的ke_event,2

1.睡眠进入的条件:1.没有需要处理的ke_event,2.蓝牙协议栈那里没有需要处理的事情3.设置的定时器和需要sleep的时间(如果定时器时间短,那也没法睡了)。进入低功耗的代码,你可以看rwip_sleep的函数。
2.对,因为580无法主动挂起任务,只能让任务尽快进入idle状态。
3.有DEVELOPMENT_DEBUG这个宏包着的,仅仅是为了调试深度睡眠模式。否则ram断电了没法debug了
4.DEVELOPMENT_DEBUG,>防止GPIO口重用,有GPIO_reservations >.Hardfault的时候,保存有相应的寄存器,打印一些调试信息,便于追踪问题。

z20121202038
Offline
Last seen:3 years 7 months ago
加入:2016-03-30 12:51
1)DEVELOPMENT

1)DEVELOPMENT_DEBUG开发完成之后就关掉比较合适了吧?
2)连接断开的时候,APP_TASK会发消息把其它任务都置为IDLE状态的吧?
3)当没有数据需要传送时,蓝牙会主动断开吗?

z20121202038
Offline
Last seen:3 years 7 months ago
加入:2016-03-30 12:51
有没有必要,我每个应用发完包,我就把应用置于IDLE状态

有没有必要,我每个应用发完包,我就把应用置于空闲状态,那APP_TASK呢?

snowdream1
Offline
Last seen:3 months 3 weeks ago
Staff
加入:2014-08-17 14:25
没有必要,一般应用service的task就3个状态

没有必要,一般应用service的task就3个状态,disable/idle/connect。基于消息来触发。