电源管理
电源管理接口
结构体 | |
struct | rt_pm_ops |
电源管理设备的操作方法 更多... | |
struct | rt_device_pm_ops |
对电源管理模式敏感的设备的操作方法 更多... | |
struct | rt_device_pm |
电源管理设备 更多... | |
struct | rt_pm |
电源管理控制块 更多... | |
函数 | |
void | rt_pm_enter (void) |
进入PM 模式 | |
void | rt_pm_exit (void) |
退出PM 模式 | |
void | rt_pm_request (rt_ubase_t mode) |
请求 PM 模式 | |
void | rt_pm_release (rt_ubase_t mode) |
释放 PM 模式 | |
void | rt_pm_register_device (struct rt_device *device, const struct rt_device_pm_ops *ops) |
注册 PM 模式变化敏感的设备 | |
void | rt_pm_unregister_device (struct rt_device *device) |
取消注册PM模式变化敏感的设备 | |
void | rt_system_pm_init (const struct rt_pm_ops *ops, rt_uint8_t timer_mask, void *user_data) |
PM组件初始化 | |
详细描述
电源管理接口
PM组件从层次上划分,可以分成用户层、PM 组件层和PM 驱动层。用户层包括了应用代码和驱动代码,它们 通过 API 来决定芯片运行在什么模式。PM 驱动层主要是实现了 PM 驱动的支持以及与 PM 相关的外设功耗 控制。PM 组件层里完成驱动的管理和对用户层提供支持。
函数说明
void rt_pm_enter | ( | void | ) |
进入PM 模式
该函数尝试进入更低的模式,如果没有请求任何运行模式,就进入休眠模式。这个函数已经在 PM 组件 初始化函数里注册到 IDLE HOOK 里,所以不需要另外的调用。
void rt_pm_exit | ( | void | ) |
退出PM 模式
该函数在从休眠模式唤醒的时候被在rt_pm_enter()调用。在从休眠唤醒时,有可能先进入唤醒中断的中断 处理函数里由。用户也可以在这里主动调用用户主动调用rt_pm_exit()。从休眠唤醒之后可能多次调用 rt_pm_exit()。
void rt_pm_request | ( | rt_ubase_t | mode | ) |
请求 PM 模式
请求 PM 模式函数,是在应用或者驱动里调用的函数,调用之后 PM 组件确保当前模式不低于请求的模式。
- 参数
mode 请求的模式
void rt_pm_release | ( | rt_ubase_t | mode | ) |
释放 PM 模式
释放PM模式函数,是在应用或者驱动里调用的函数,调用之后 PM 组件并不会立即进行实际的模式切换, 而是在rt_pm_enter()里面才开始切换。
- 参数
mode 释放的模式
void rt_pm_register_device | ( | struct rt_device * | device, |
const struct rt_device_pm_ops * | ops | ||
) |
注册 PM 模式变化敏感的设备
该函数注册 PM 模式变化敏感的设备,每当 PM 的模式发生变化的时候,会调用设备的相应 API。
- 如果是切换到新的运行模式,会调用设备里的frequency_change()函数。
- 如果是切换到新的休眠模式,将会在进入休眠时调用设备的suspend()函数,在进入休眠被唤醒之后 调用设备的resume()。
- 参数
device 具体对模式变化敏感的设备句柄 ops 设备的函数集
void rt_pm_unregister_device | ( | struct rt_device * | device | ) |
取消注册PM模式变化敏感的设备
该函数取消已经注册的 PM 模式变化敏感设备。
- 参数
device 具体对模式变化敏感的设备句柄
void rt_system_pm_init | ( | const struct rt_pm_ops * | ops, |
rt_uint8_t | timer_mask, | ||
void * | user_data | ||
) |
PM组件初始化
PM 组件初始化函数,是由相应的 PM 驱动来调用,完成 PM 组件的初始化。
该函数完成的工作,包括底层 PM 驱动的注册、相应的 PM 组件的资源初始化、默认模式的请求, 并对上层提供一个名字是 “pm” 的设备,还默认请求了三个模式,包括一个默认运行模式PM_RUN_MODE_DEFAULT、 一个默认休眠模式PM_SLEEP_MODE_DEFAULT和最低的模式PM_MODE_MAX。默认运行模式和休眠模式的值, 我们可以根据需要来定义,默认值是第一个模式。
- 参数
ops 底层 PM 驱动的函数集 timer_mask 指定哪些模式包含了低功耗定时器 user_data 可以被底层 PM 驱动使用的一个指针