高通STR/S2R基本介绍

什么是STR?

Suspend to ram 是一种特殊的电源工作模式,在这种工作模式下,所有的CPU core/控制器/IP core都会进入特殊的电源模式下,同时SOC 内部总线时钟降到最低的工作频率,PMIC的绝大部分供电都会被关闭,外部DDR进入自刷新模式。系统可以通过外部的信号/中断经由AOP(always on processor) 切换回正常的电源模式.

例如,在进入STR之后,整个SOC只有红框部分的硬件模块还在工作,其他模块均处于睡眠/offline状态.

高通STR/S2R基本介绍_第1张图片

STR工作流程

高通STR/S2R基本介绍_第2张图片

STR流程简述:

1,外部MCU/TBOX/GPIO/CAN信号触发进入STR mode

2,OEM lifecycle manager程序接收到进入STR mode 请求,开始准备进入STR mode的环境

3,OEM lifecycle manager通知 LA进入 STR mode,LA自己OS内部进入STR 处理流程

4,   OEM lifecycle manager 通过qcore的PM接口通知已经注册的模块准备进入str mode,比如display/usb/openwfd_telltale以及OEM自己本身的模块

5,当LA&所有相关模块都已经进入str mode之后,触发QNX进入STR mode,这个时候整个系统包括所有SOC都进入str mode

6,MCU/TBOX/GPIO/CAN 通过中断唤醒AOP,AOP再唤醒所有SOC,同时通知OEM lifecycle manager去resume所有已经注册的模块

时序图如下:

高通STR/S2R基本介绍_第3张图片

STR基本验证

这里以Q+A的android R基线为例。

进入STR模式的方式:


# echo power > /dev/lcm_demo/display0/key        #通过模拟按键通知android进入休眠模式
# cat /dev/qvm/la/power_status  #检查确认android的电源状态,0表示已经进入休眠,1表示未进入休眠
# slay calib-touch      #停掉mtouch模块
# slay openwfd_telltale #停掉openwfd client
# screen-pwrmgr off     #QNX息屏
# echo "BUS::stop,busno=0" >> /var/pps/device/usb_ctrl1   #停掉usb controller 1
# echo "BUS::stop,busno=0" >> /var/pps/device/usb_ctrl2 #停掉usb controller 2
# str-ctl -i -e 5000000000 -w 5000000000    #以timer的方式进入和退出str

唤醒的方式:

#timer计时时间到会自动触发唤醒cpu,但是唤醒后需要复归app
# calib-touch
# openwfd_telltale
# screen-pwrmgr on
....

测试结果:

高通STR/S2R基本介绍_第4张图片

你可能感兴趣的:(STR,linux)