专栏算法工具链J6 power management sample

J6 power management sample

新手村2025-09-29
46
0

1. 功能概述

本文通过示例演示如何通过相关接口对启动标志进行读写,以及对main域电源进行控制与查询。相关API定义,请查询 电源管理用户手册API部分 。

2. main域上下电及状态查询示例代码

请参考版本中 Service/Cmd_Utility/power_sample_cmd/src/PowerControl.c 相关代码:

注意

注意以下章节中的截图,在不同的版本上可能会有一些差异,只要关键信息部分一致即可。 请结合其中提到的验证方法做进一步确认。

2.1. MCU对Acore进行上下电接口及命令说明

地平线版本中可使用如下命令:

效果确认: 1. 当对Acore进行下电,MCU会有如下打印:

../../_images/power_off_main_6p.png

此时MCU正常,Acore因为下电串口无法交互;

  1. 当对Acore进行强制下电,MCU会有如下打印:

../../_images/forceoff_main_6p.png

此时MCU正常,Acore因为下电串口无法交互;

  1. 当对Acore进行上电,MCU会有很长的打印,MCU走完相关流程后,会有如下关键打印:

../../_images/power_on_main_6p.png

同时Acore会进入kernel:

../../_images/power_on_main.png

并可以正常进行命令行交互;

2.2. MCU读写bootflag接口及命令说明

地平线版本中可使用如下命令:

效果确认:

../../_images/boot_flag_6p.png

示例代码中会尝试对bootflag进行读取/修改/恢复的流程;后边的数值代表对应boot标志,可以查询相关头文件。

2.3. MCU获取Acore power状态接口及命令说明

地平线版本中可使用如下命令:

效果确认:

../../_images/main_power_status.png

示例代码中尝试去获取状态并打印出对应通过函数获取到的Acore power状态。

3. main域reset示例

调用如下接口后,如果有接Acore串口,可以看到Acore串口有重启并再次正常进入kernel,并且Acore的命令行可以进行正常交互。

3.1. main域reset接口说明

4. J6X全部下电示例

调用对应接口,MCU和Acore都下电,两者的命令行都无法进行交互。要想重新启动,需要断电重启。

4.1. 全部下电接口说明

5. 不同场景休眠唤醒示例代码

请参考版本中 Service/Cmd_Utility/power_sample_cmd/src/PowerControl.c 相关代码,目前主要实现以下六个场景:

注意:各sample场景为都是单独流程,不要混合使用。如果在执行完一个sample场景后,需要更换场景测试,需要先进行整机下电,再重新上电。

场景拆分为以下几种流程:

流程1: main off + mcu suspend:

../../_images/mainoff_mcususpend.png

流程2:main suspend + mcu suspend:

../../_images/main_mcu_suspend.png

流程3:mcu on + main on:

../../_images/mcu_main_on.png

流程4:mcu on + main resume:

../../_images/mcuon_mainresume.png

流程5:rtc wakeup + shutdown:

../../_images/rtcwake_shutdown.png

在rtc唤醒场景中 - 如果需要rtc唤醒后直接关机,需要外部kl15信号源为低电平,否则会导致唤醒后一级电源无法正常下电

5.1. sample0

5.2. sample1

5.3. sample2

5.4. sample3

5.5. sample4

5.6. sample5

算法工具链
社区征文征程6底层软件官方教程
评论0
0/1000