高通STR/S2R基本介绍

什么是STR?

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

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

STR工作流程

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基本验证

这里以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
....

测试结果:

高通8155是一款专为车载信息娱乐系统设计的System-on-Chip (SoC) 芯片,其启动流程通常涉及几个关键步骤,因为这类设备在进入运行环境之前需要经过精心设计的初始化过程。下面是高通8155 SOC启动流程的一个简化概述: 1. **Power On Reset (POR)**:当芯片从电源断开并接上时,首先经历电源上电(POR),这触发了内部寄存器的默认值设置。 2. **Secure Boot**:如果支持,可能存在一个安全启动序列,检查固件签名和完整性,防止恶意软件攻击。 3. **Platform BIOS Layer (PBL)**:这是一个低级别的引导程序,负责初始化基本硬件,如外设、内存管理、时钟和其他基本功能。它通常是AArch32架构(32位ARM指令集),先于更高级别的BIOS运行。 4. **eXtensible Firmware Interface (XBL)**:在PBL之后,启动进入XBL阶段,这是第一个真正的操作系统级BIOS,可以处理多种任务,比如加载配置数据、初始化外部设备控制器等。 5. **Android Automotive OS (AAS) 或 Custom Automotive OS**:针对8155这种用于车规级应用的SoC,最终的目标可能是加载预装的Android Automotive OS或其他定制化的车载操作系统。XBL会管理加载操作系统的映像,并将控制权交给它。 6. **Application Binary Loader (ABL)**:这是Linux内核启动的一部分,如果系统采用Linux作为核心操作系统,ABL会在这里将内核和用户空间应用程序加载到内存中。 7. **Kernel Initialization**:内核开始运行后,执行各种初始化操作,包括设备驱动加载、内存映射和系统服务设置。 8. **Userland Services**:内核初始化完成后,系统进入用户空间,应用程序和服务开始启动,包括图形界面、音频、网络连接等功能。 在整个过程中,开发者可能会添加额外的安全措施、自定义引导阶段和优化,以满足特定的应用需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值