你好,
有几个关于低功耗的疑问:
1)什么情况下系统会进入低功耗模式?是不是所有的任务都进入闲置或禁用状态时,就会进入低功耗。而进入低功耗的代码实现在arch_main()里面吗?
2)承接问题1,在进行低功耗设计时,是不是主要考虑的是让任务及时进入闲置状态就行了,还是要在任务中加入进入低功耗模式的程序接口?
3)深度睡眠和扩展睡眠这两种睡眠模式可以同时存在吗?比如说,在扩展休眠模式下休眠10分钟,仍然没有被唤醒,那么切换到深度睡眠模式下。
4)看arch_main.c的main_func()里有这么一段:
否则{// mode_deep_sleep
#如果DEVELOPMENT_DEBUG
SetBits16 (SYS_CTRL_REG RET_SYSRAM 1);//保留系统RAM
其他#
SetBits16 (SYS_CTRL_REG RET_SYSRAM 0);//关闭系统RAM =>所有数据将丢失!
# endif
这是不是表示深度睡眠模式下,数据其实也是可以驻留在系统内存中的吗?
这个DEVELOPMENT_DEBUG宏是开发调试的过程中,需要打开吗?开发完成后必须关掉?
问题有点多,麻烦指导一下,谢谢!
关键词:
设备:
1 .睡眠进入的条件:1。没有需要处理的ke_event, 2。蓝牙协议栈那里没有需要处理的事情3。设置的定时器和需要睡觉的时间(如果定时器时间短,那也没法睡了)。进入低功耗的代码,你可以看rwip_sleep的函数。
2 .对,因为580无法主动挂起任务,只能让任务尽快进入闲置状态。
3 .有DEVELOPMENT_DEBUG这个宏包着的,仅仅是为了调试深度睡眠模式。否则ram断电了没法调试了
4.DEVELOPMENT_DEBUG, >防止GPIO口重用,有GPIO_reservations > .Hardfault的时候,保存有相应的寄存器,打印一些调试信息,便于追踪问题。
1) DEVELOPMENT_DEBUG开发完成之后就关掉比较合适了吧?
2)连接断开的时候,APP_TASK会发消息把其它任务都置为闲置状态的吧?
3)当没有数据需要传送时,蓝牙会主动断开吗?
有没有必要,我每个应用发完包,我就把应用置于空闲状态,那APP_TASK呢?
没有必要,一般应用服务的任务就3个状态,禁用/空闲连接。基于消息来触发。