※ 引述《timemaker (Coder and Coffee)》之铭言:
: 各位板友好
: 我在开发embedded linux遇到了省电模式下功耗降不下来的问题
: 因为DDR RAM已开启Self refresh power down功能
: 只有在threads存取RAM时会耗比较多的电
: 我目前的想法在省电模式下时
: 能否避免threads存取RAM?
: 只留一个监控thread看是否使用者有按按键
: 若是的话再唤醒其余的threads
: 我所使用的是pthread
: 是否有推荐的API以避免threads于省电模式下存取RAM?
: 谢谢
我所知道的要降功耗有几种方式
1. CPU dvfs.
透过不同频率与电压组合达到省电效果
这边smp跟asmp会有差异
SMP下通常只有一组可以操控 会迁就于 max load cpu的需求
2. soc那看是否有其他core比较省电
由该CPU POWER OFF 较耗电的CPU
EX: BIG/LITTLE 可以断大核电 然后有需要再开大核
或者是其他异质CPU 将 smp的CPU suspend 后完全断电
上电后resume唤起.
3. CPU 进入省电模式 , 在arm中就是执行 WFI INSTRUCTIONS
系统的 key 配置为中断模式. spi 中断进来会触发唤醒原先的 wfi
4. multicore 可以呼叫 cpu_down 去让secondary停在wfi
达到将secondary卸载 offline,要在加回来就呼叫 cpu_up
5. 其实应该先看CPU吃多少电 系统是否还有其他更耗电的装置
是否有推荐的API以避免threads于省电模式下存取RAM?
==>除非你的东西都在CACHE内 不然你是做不到这一点的
如果计算能力够 DDR其实可以降频看看