MS-RTOS 电源管理
本章将介绍 MS-RTOS 电源管理 PM 的使用。
PM 相关数据类型
类型 | 描述 |
---|---|
ms_pm_sleep_mode_t | CPU 休眠模式 |
ms_pm_run_mode_t | CPU 运行模式 |
ms_pm_boot_mode_t | CPU 启动模式 |
ms_pm_event_t | 电源管理事件 |
ms_pm_sleep_mode_t
CPU 休眠模式类型,可取的值为以下的宏:
宏 | 含义 |
---|---|
MS_PM_SLEEP_MODE_NONE | CPU 不休眠,系统空闲时执行 NOP 指令,不使用 Tick-less |
MS_PM_SLEEP_MODE_IDLE | 系统空闲时执行 CPU idle 指令,使用 Tick-less,任一中断唤醒 |
MS_PM_SLEEP_MODE_LIGHT | CPU 浅休眠,目前与 MS_PM_SLEEP_MODE_IDLE 相同 |
MS_PM_SLEEP_MODE_DEEP | CPU 深度休眠,挂起设备,使用低功耗定时器,任一中断唤醒 |
MS_PM_SLEEP_MODE_STANDBY | CPU 待机模式,挂起设备,只能被某些中断唤醒,唤醒后重新执行程序,可通过启动模式与关机模式进行区分 |
MS_PM_SLEEP_MODE_SHUTDOWN | CPU 关机模式,挂起设备,彻底关机 |
ms_pm_run_mode_t
CPU 运行模式类型,可取的值为以下的宏:
宏 | 含义 |
---|---|
MS_PM_RUN_MODE_HIGH_SPEED | CPU 高速运行 |
MS_PM_RUN_MODE_NORMAL_SPEED | CPU 正常速度运行 |
MS_PM_RUN_MODE_MEDIUM_SPEED | CPU 中等速度运行 |
MS_PM_RUN_MODE_LOW_SPEED | CPU 低速运行 |
ms_pm_boot_mode_t
CPU 启动模式类型,可取的值为以下的宏:
宏 | 含义 |
---|---|
MS_PM_BOOT_MODE_COLD | 冷机启动(关机模式后启动) |
MS_PM_BOOT_MODE_REBOOT | 重启(热启动) |
MS_PM_BOOT_MODE_STANDBY | CPU 从待机模式唤醒(热启动) |
ms_pm_event_t
电源管理事件类型,可取的值为以下的宏:
宏 | 含义 |
---|---|
MS_PM_EVENT_SLEEP_ENTER | CPU 进入休眠 |
MS_PM_EVENT_SLEEP_EXIT | CPU 退出休眠 |
PM 相关 API
下表展示了电源管理相关的 API 在两个权限空间下是否可用:
API | 用户空间 | 内核空间 |
---|---|---|
ms_pm_request_sleep_mode | ● | |
ms_pm_release_sleep_mode | ● | |
ms_pm_set_default_sleep_mode | ● | |
ms_pm_set_run_mode | ● | |
ms_pm_get_run_mode | ● | |
ms_pm_set_boot_mode | ● | |
ms_pm_get_boot_mode | ● |
用户空间不能使用电源管理相关的 API,只能通过对 /dev/pm
设备操作达到电源管理的目的。如果 APP 没有对 /dev/pm
设备的访问权限,则 APP 不能进行电源管理相关的操作。
ms_pm_request_sleep_mode()
描述 请求进入指定的 CPU 休眠模式
函数原型
ms_err_t ms_pm_request_sleep_mode(ms_pm_sleep_mode_t sleep_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sleep_mode | CPU 休眠模式 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例 无
ms_pm_release_sleep_mode()
描述 取消请求指定的 CPU 休眠模式
函数原型
ms_err_t ms_pm_release_sleep_mode(ms_pm_sleep_mode_t sleep_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sleep_mode | CPU 休眠模式 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例 无
ms_pm_set_default_sleep_mode()
描述 设置默认的 CPU 休眠模式
函数原型
ms_err_t ms_pm_set_default_sleep_mode(ms_pm_sleep_mode_t sleep_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sleep_mode | CPU 休眠模式 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例 无
ms_pm_set_run_mode()
描述 设置 CPU 运行模式
函数原型
ms_err_t ms_pm_set_run_mode(ms_pm_run_mode_t run_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | run_mode | CPU 运行模式 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例 无
ms_pm_get_run_mode()
描述 获得当前的 CPU 运行模式
函数原型
ms_pm_run_mode_t ms_pm_get_run_mode(void);
参数 无
返回值 当前的 CPU 运行模式
注意事项 无
示例 无
ms_pm_set_boot_mode()
描述 设置 CPU 启动模式
函数原型
ms_err_t ms_pm_set_boot_mode(ms_pm_boot_mode_t boot_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | boot_mode | CPU 启动模式 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例 无
ms_pm_get_boot_mode()
描述 获得 CPU 启动模式
函数原型
ms_pm_boot_mode_t ms_pm_get_boot_mode(void);
参数 无
返回值 CPU 的启动模式
注意事项 无
示例 无
/dev/pm 设备 ioctl 命令
ioctl 命令及相关说明如下表所示:
命令 | 描述 | 参数 |
---|---|---|
MS_PM_CMD_REQUEST_SLEEP_MODE | 请求进入指定的 CPU 休眠模式 | ms_pm_sleep_mode_t 指针 |
MS_PM_CMD_RELEASE_SLEEP_MODE | 取消请求进入指定的 CPU 休眠模式 | ms_pm_sleep_mode_t 指针 |
MS_PM_CMD_SET_DEFAULT_SLEEP_MODE | 设置默认的 CPU 休眠模式 | ms_pm_sleep_mode_t 指针 |
MS_PM_CMD_SET_RUN_MODE | 设置 CPU 运行模式 | ms_pm_run_mode_t 指针 |
MS_PM_CMD_GET_RUN_MODE | 获得当前的 CPU 运行模式 | ms_pm_run_mode_t 指针 |
MS_PM_CMD_GET_BOOT_MODE | 获得 CPU 的启动模式 | ms_pm_boot_mode_t 指针 |