From a99a74348baf2c0fdbce162a6a69b573edd732b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Tang=28=E5=94=90=E5=A4=A7=E4=B8=BA=29?= Date: Wed, 31 Mar 2021 20:15:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86PM=E6=96=87?= =?UTF-8?q?=E6=A1=A3=20=EF=BC=9Aw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zh/QuecPythonSub/PM.md | 61 ++++++++++++++++--- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/docs/Advanced_development/zh/QuecPythonSub/PM.md b/docs/Advanced_development/zh/QuecPythonSub/PM.md index 10f1cfd..dd0a6ec 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/PM.md +++ b/docs/Advanced_development/zh/QuecPythonSub/PM.md @@ -1,16 +1,16 @@ # **QuecPython低功耗使用说明** -本文主要简介QuecPython pm库的使用方法。 +本文主要简介QuecPython低功耗库的使用方法。 -## pm简介 +## 低功耗简介 -文档主要基于EC600S介绍如何使用QuecPython\_低功耗模式pm,在嵌入式应用中,产品的功耗越来越受到用户的重视;电池供电设备对产品功耗方面的要求尤为明显。降低产品功耗,延长电池的使用寿命,即可降低产品的运营成本,提高产品的市场竞争力。移远通信模块产品的功耗最小化需要从软件和硬件设计两方面入手,本文档重点介绍如何通过软件设计实现功耗最小化。 +文档主要基于EC600S介绍如何使用QuecPython\_低功耗模式,在嵌入式应用中,产品的功耗越来越受到用户的重视;电池供电设备对产品功耗方面的要求尤为明显。降低产品功耗,延长电池的使用寿命,即可降低产品的运营成本,提高产品的市场竞争力。移远通信模块产品的功耗最小化需要从软件和硬件设计两方面入手,本文档重点介绍如何通过软件设计实现功耗最小化。 ## 快速开始 -关于API的信息请参考 [QuecPython wiki pm库信息](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pm-%e4%bd%8e%e5%8a%9f%e8%80%97) +关于API的信息请参考 [QuecPython wiki 低功耗库信息](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pm-%e4%bd%8e%e5%8a%9f%e8%80%97) -### 如何进入pm +### 如何进入低功耗 模组如果需要需要进入低功耗模式,必须满足以下几个条件: @@ -20,13 +20,36 @@ - 使能系统自动进入休眠(具体接口:**pm.autosleep(sleep_flag)**) - CFUN=0 或者为正常注网状态 -### 如何查看是否进入pm +### 进入低功耗的原理 + +首先,简单介绍一下CPU log,列举部分进程如下表: + +| priority | thread name | scheduled count | total run tick | percentage | +| -------- | ----------- | --------------- | -------------- | ----------- | +| 0 | System T | 57522 | 3275860 | 0.108458% | +| 0 | NUTick | 3814 | 144837 | 0.004795% | +| 2 | UsbSusH | 2 | 238 | 0.000008% | +| 2 | UsbTimeH | 2 | 78 | 0.000003% | +| 2 | UsbPcgH | 2 | 55 | 0.000002% | +| 2 | usbWakeU | 4 | 317 | 0.000010% | +| 2 | UsbCConn | 4 | 3611 | 0.000120% | +| 2 | Mdm1TxH | 12 | 1227 | 0.000041% | +| 103 | quec_led | 392 | 2546432 | 0.084308% | +| 113 | quecpyth | 57460 | 2787610 | 0.092293% | +| 255 | CommPM_L | 71377 | 7341327913 | 243.059120% | +| 254 | CommPM_s | 70706 | 1721021 | 0.056980% | + +从CPU log可以看出,CPU的运行是由多等级多进程组成的。而对于模组的运行,这些多进程对CPU的控制权属于抢占式调度,即当就绪队列中某进程的优先级(例如:上述表格的System T)高于正在处理器中运行的进程的优先级(例如:上述表格的NUTick)时,就会抢占进程NUTick,迫使NUTick处于就绪队列,直接运行进程System T,当System T运行结束后,对就绪队列中的进程做优先级判断,如果此时进程NUTick的优先级最高,则进程NUTick运行。 + +那么,对于模组的睡眠进程来说,只有当众多优先级高于睡眠进程的进程都无任务在运行时,即所有进程都释放它们的CPU控制权时,模组才会进入睡眠,降低功耗。 + +### 如何查看是否进入低功耗 对于模组的低功耗模式,我们可以从软件和硬件两个方面进行查看。 #### 软件 -在模组正常运行的情况下,使用QCOM连接模组的虚拟AT口,发送AT指令(AT+log=80,1),目的是打开log,此时可以通过连接模组的虚拟DEBUG口查看log信息,具体如下: +在模组正常运行的情况下,使用QCOM连接模组的虚拟AT口,发送AT指令(AT+log=80,1),此指令会定时3s从调试串口打印内部休眠相关的Flag 和寄存器值,此时可以通过连接模组的虚拟DEBUG口查看log信息,具体如下: ![pm_log](media/pm_log.jpg) @@ -45,7 +68,25 @@ ### 唤醒源 -- 外部引脚中断唤醒:不是所有的GPIO都是支持中断唤醒的,以及中断唤醒如何操作可参考 [ExtInt](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=extint) +- 外部引脚中断唤醒,对于EC600S,支持中断唤醒的GPIO列表如下: + + | GPIO编号 | 模组引脚 | +| -------- | -------- | + | GPIO1 | 引脚号11 | + | GPIO2 | 引脚号11 | + | GPIO3 | 引脚号12 | + | GPIO4 | 引脚号13 | + | GPIO5 | 引脚号14 | + | GPIO6 | 引脚号15 | + | GPIO7 | 引脚号16 | + | GPIO8 | 引脚号39 | + | GPIO9 | 引脚号40 | + | GPIO10 | 引脚号48 | + | GPIO11 | 引脚号58 | + | GPIO12 | 引脚号59 | + | GPIO13 | 引脚号60 | + | GPIO14 | 引脚号61 | + - 电话,短信,网络数据唤醒 ### 耗流测试(借助移远OPEN-EVB板调试) @@ -89,6 +130,10 @@ while 1: pm_15mA +Tips: + +以上测试数据是睡眠参考值,实测场景下的低功耗耗流值,可自行搭建环境进行相关的测试,测试遇到任何问题,麻烦联系QQ群:445121768,在线给您解答。 + ## 专业名词解释 > **加锁**:不允许模组进入低功耗模式 -- Gitee From 8d4cf291480766d95b3ad435c638a03d026ae3ca Mon Sep 17 00:00:00 2001 From: tang-dawei Date: Wed, 31 Mar 2021 20:37:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?tips=E5=8A=A0=E7=B2=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Advanced_development/zh/QuecPythonSub/PM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Advanced_development/zh/QuecPythonSub/PM.md b/docs/Advanced_development/zh/QuecPythonSub/PM.md index dd0a6ec..487c4d6 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/PM.md +++ b/docs/Advanced_development/zh/QuecPythonSub/PM.md @@ -130,7 +130,7 @@ while 1: pm_15mA -Tips: +**Tips:** 以上测试数据是睡眠参考值,实测场景下的低功耗耗流值,可自行搭建环境进行相关的测试,测试遇到任何问题,麻烦联系QQ群:445121768,在线给您解答。 -- Gitee