电源管理

1 引言

linux系统进入低功耗模式,需要执行如下步骤,

  • a. 暂停各类APP(用户APP,内核线程);
  • b. 暂停各类设备;
  • c. 停止CPU;

Linux唤醒过程:

  • d. 启动CPU
  • e. 启动设备
  • f. 启动各类APP

可以参考文章

1. 电源管理基本观念之一,链接为http://blog.sina.com.cn/s/blog_a6559d920101i52j.html

2. Linux的电源管理架构,链接为:https://blog.csdn.net/bingqingsuimeng/article/details/7935414

3. Linux休眠与唤醒,链接为:https://blog.csdn.net/bingqingsuimeng/article/details/8197912

2 基本概念

设备电源管理模型:

  • 系统睡眠模型
    • On
    • Standby
    • Suspend to RAM
  • Runtime电源管理模型
    • 降低运行时钟
    • 关闭无用设备

3 U-BOOT电源管理

定义suspend命令

  U_BOOT_CMD(suspend, 1, 0, do_suspend, "short command comment", "long command comment");

实现do_suspend函数 

  do_suspend(*cmdtp, flag, argc, *argv[])

睡眠操作:参考S3C2440 P250,详述如何进入Sleep Mode

 注:

  1.  8~12步骤需要使用汇编实现,参考内核源码arch\arm\mach-S3C2440.S

  2. 休眠时第9步,让SDRAM自刷新时,CPU无法访问SDRAM。此时如果有MMU功能,则需要页表填充MMU进行地址映射。

   通过执行rREFRESH和RCLKCON,从SDRAM中读取指令,随后指令被ICACHE和DCACHE使用填充入TLB。关闭SDRAM后,CPU仍能通过cache使用。

唤醒操作:参考S3C2440 P251,详述如何唤醒

3 Linux电源管理框架

启动suspend to ram:

echo mem > /sys/power/state

 

入口函数为:

state_store (/kernal/power/main.c)

  enter_state

    suspend_prepare

    suspend_enter

    suspend_finish

  

操作结构体为:

power_attr(state);

4 设备驱动的电源管理

5 APP实现电源管理

6 设计硬件供电系统

posted @ 2019-06-20 00:01  寒霜未降  阅读(406)  评论(0编辑  收藏  举报