专栏算法工具链J6系统power状态机介绍

J6系统power状态机介绍

费小财2025-02-28
262
0

J6X电源状态

J6X芯片电源域

J6x内部有AON、MCU和Main域三个电源域。其中AON为非下电状态需要一直供电的电源域,MCU电源域用于给Hsm和MCU及其内部IP供电,Main域给其他部分供电。

J6X电源状态列表

J6x目前实现了Off,MCU only,Working,Deep sleep和LightSleep五种电源状态,详细说明如下:

+------------+------------------------------------------+-----+-----+------+---------+
| 电源状态 | 描述 | AON | MCU | Main | DDR颗粒 |
+------------+------------------------------------------+-----+-----+------+---------+
| Off | 芯片完全下电 | Off | Off | Off | Off |
+------------+------------------------------------------+-----+-----+------+---------+
| MCU only | MCU Rcore正常工作 | On | On | Off | Off |
+------------+------------------------------------------+-----+-----+------+---------+
| Deep sleep | 只有AON工作,可被唤醒 | On | Off | Off | 自刷新 |
+------------+------------------------------------------+-----+-----+------+---------+
| Working | 正常工作模式 | On | On | On | On |
+------------+------------------------------------------+-----+-----+------+---------+
| LightSleep | Mcu正常工作,main仅ddr颗粒供电维持自刷新 | On | On | Off | 自刷新 |
+------------+------------------------------------------+-----+-----+------+---------+

J6X电源状态迁移表

Description
+-------------------+--------+----------+---------+------------+-------------+
| Current state(行) | | | | | |
| ->end state(列) | Off | MCU only | Working | Deep sleep | Light sleep |
+-------------------+--------+----------+---------+------------+-------------+
| Off | UND | C1 | C1+C4 | UND | UND |
+-------------------+--------+----------+---------+------------+-------------+
| MCU only | C2 | UND | C4 | C6 | UND |
+-------------------+--------+----------+---------+------------+-------------+
| Working | UND | C9 | UND | C11 | C21 |
+-------------------+--------+----------+---------+------------+-------------+
| Deep sleep | C12+C2 | C12 | C12+C4 | UND | C24 |
+-------------------+--------+----------+---------+------------+-------------+
| Light sleep | C25+C2 | C25 | C22 | C23 | UND |
+-------------------+--------+----------+---------+------------+-------------+
  • Cx:状态迁移向量编号。

  • UND:代表该状态迁移向量未定。

  • C11: 对于进入低功耗状态,推荐使用本状态而非组合状态。

J6X电源状态迁移说明

C1(Off->MCU only)

  • 说明:系统从MCU only状态跳转到Off状态。

  • 过程:

    1. 此时Main域已经完全下电,包括外部DDR颗粒。

    2. TJA1145进入低功耗模式,配置成功后,INH引脚会转换为高阻态,并被板级下拉电阻拉低。

    3. VR5510检测到POWERON1引脚拉低,按照OTP设定的流程完成下电。

  • API方法: SysPower_Shutdown()

C4(MCU only->Working)

  • 说明:系统从仅MCU域工作到仅AON域上电,此时Main域应该处于下电状态。

  • 过程:

    1. 此时处于MCU only状态,不需要关心Main域包括外部DDR颗粒状态(由进入MCU only状态时完成设置)。

    2. AON区域标记当前是DeepSleep而非下电。

    3. 设置唤醒源。

    4. IPC通知HSM准备进入Deep sleep状态。

    5. 确保Main域处于Off状态(Pmu_Lld_PerformMainDoMainOff)。

    6. MCU core进入WFI状态。

    7. HSM进入WFI状态。

    8. PMU检测到所有MCU core进入Suspend状态后,输出STBY信号,将VR5510设置为STANDY状态,只保留AON供电。

  • API方法:

    1. SysPower_Suspend

    2. SysPower_GpioWakeupSet/SysPower_RtcWakeupSet

C9(Working->MCU only)

  • 说明:系统从Working状态到只有AON供电的状态

  • 过程:

    1. MCU通过IPC发送SOC进入低功耗命令。(可选)

    2. Acore走Linux正常Suspend流程。

    3. Acore在ATF中切换DDR状态为自刷新状态。

    4. Acore发送SCMI发送CMD到MCU侧发起Deep Sleep流程。

    5. MCU侧获取并保存Acore的启动地址到AON区域。

    6. 等待Acore所有核进入Suspend状态。

    7. MCU侧关闭Main域PMU。

    8. AON区域保存当前是Deep sleep模式而非下电模式。

    9. 设置唤醒源。

    10. MCU通过IPC通知HSM进入Suspend状态,然后MCU进入Suspend状态。

    11. HSM进入Suspend状态。

    12. PMU检测到所有MCU core进入Suspend状态后,输出STBY信号,将VR5510设置为STANDY状态,只保留AON供电。

  • API方法:

    1. Linux shell:systemctl suspend

    2. MCU通知Main域休眠:SysPower_MainStateSwitchNotify

C12(Deep sleep->MCU only)

  • 说明:系统从正常工作状态到LightSleep状态,此状态为Main域下电状态,DDR颗粒自刷新状态。

  • 过程:

    1. Mcu设置当前休眠默认为light sleep。

    2. Mcu通过IPC通知Main域休眠。

    3. Acore走Linux休眠流程。

    4. Acore通过SCMI发送CMD到Mcu侧发起休眠流程。

    5. Mcu给Acore所有相关PMU下电。

    6. Mcu给Acore除ddr颗粒供电外其他PMIC下电。

  • API方法:

    1. SysPower_SetSleepMode:设置休眠模式。

    2. SysPower_MainStateSwitchNotify:通知Main域休眠。

C22(LightSleep->Working)

  • 说明:系统从仅LightSleep到仅Aon域上电,此时Main域应该处于下电+ddr自刷新状态。

  • 过程:

    1. AON区域标记当前是DeepSleep而非下电。

    2. 设置唤醒源。

    3. IPC通知HSM准备进入Deep sleep状态。

    4. MCU core进入WFI状态。

    5. HSM进入WFI状态。

    6. PMU检测到所有MCU core进入Suspend状态后,输出STBY信号,将VR5510设置为STANDY状态,只保留AON供电。

  • API方法:

    1. SysPower_Suspend

    2. SysPower_GpioWakeupSet/SysPower_RtcWakeupSet

C24(Deep sleep->LightSleep)

  • 说明:系统从LightSleep状态到仅Mcu工作状态,此状态为Main域下电状态,DDR颗粒自刷新状态。

  • 过程:Mcu给Acore所有相关PMIC下电。

  • API方法:

    1. MCU直接给Main域下电:Pmu_PerformMainDomainForceOff

算法工具链
社区征文征程6技术深度解析官方教程
评论0
0/1000