current pulse in LTE standby

2023-11-10 16:59
文章标签 current lte standby pulse

本文主要是介绍current pulse in LTE standby,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先看一幅图,在待机过程中,有三个跃起,其中两个尖峰,一个10s宽度;尖峰对长待机电流影响不大,而10s宽度100mA的电流则对平均电流有影响。

 首先查看kernel  log; 由于在抓取时,通过按键点亮屏幕,因此在kernel log中寻找按键中断则可以确定时间区域;清理掉无关log之后,搜索"PM: suspend":

通过比对电流图,可见从1到2经历1min50s,从2到3经历70s,而从3到按键点亮屏幕,经历40s;

而中间2:49:11(UTC时间需加8小时转换为当前时间)有两次suspend entry为何不计算呢? 因为从log中可见 其没有真正进入suspend。MTK平台真正进入suspend的最后一行打印是[name:spm&][SPM] md_settle = 99, settle = 33; 也就是说这两次suspend被中止了。也就是说在2处,尝试了3次suspend才成功。

在询问MTK的时候,他们常常会告诉你是否是上层apk引起的唤醒,那么我们再根据tcpdump来看

显然在10:49:11的时候有过一次网络ack,但是仅此一次,而从10:45:28开始就没有数据传输了,因此后面的1/2/3都不能算作apk唤醒;同样通过main log,也能看到FwmarkServer只出现在10:45:27处,后面不再出现。

 

/system/netd/server/FwmarkServer.cppint FwmarkServer::processClient(SocketClient* client, int* socketFd){...if (netdEventListener != nullptr) {
char addrstr[INET6_ADDRSTRLEN];
char portstr[sizeof("65536")];
const int ret = getnameinfo((sockaddr*) &connectInfo.addr, sizeof(connectInfo.addr),
addrstr, sizeof(addrstr), portstr, sizeof(portstr),
NI_NUMERICHOST | NI_NUMERICSERV);
+ LOG(ERROR) << "FwmarkServer connect uid = " << client->getUid() << " addr = " << addrstr << ", port " << portstr;

接着继续看这个2处的10s宽度是什么造成的:

我们已经确定跃起的时间点10:49:11,那么寻找main log和system log中对应的时间点;

当然也可以直接寻找logcat中的时间点。

logcat -v threadtime -b kernel -b main -b system -b radio > a.log

 main log中可以看到 打印很少,说明进入休眠后上层就没有活动了

 

 在system log中我们只看到10:49:11处有log,前后都是断开的,直接间隔1min,与电流波形类似

 这里有两个alarm,type 3是唤醒源;在AlarmManager log中,奇数次的type是能够影响电流的,而偶数次的type影响不大,比如type 0, type 2不会影响,而type 1, type 3则会影响;可见唤醒的是android这个进程。从PowerManagerService中也能看到一个持锁,但是这个持锁很快就释放了,因此怎么会有10s宽度的电流呢?这个1min50s之后的2处的唤醒时怎样形成的呢?我们已经确定时间了,是10:49:11,但是我们在上层log中发现的信息很有限,支撑不了10s的理由。那么继续在kernel中看。

我们从kernel log中,可以看到 md_settle的最后打印,说明是真正的休眠,那么向后一点看他的唤醒:[name:spm&][SPM] suspend wake up by  R12_EINT_EVENT_B; 这个R12_EINT_EVENT_B是MTK自己定义的东西,表面是外部唤醒;那么kernel原生的唤醒标志是设么呢:pm_system_irq_wakeup: 170 triggered mt6358-irq,也是外部中断,是PMIC上的中断;我们可以看到pm_system_irq_wakeup的次数与md_settle的次数是一致的;

我们还看到这个唤醒后,后面尝试了3次休眠,前两次都是失败的;我们看一下失败的原因,他们都是没有能够真正的进入suspend,没有md_settle的打印;

第一次尝试suspend:

Abort: Pending Wakeup Sources: ccmni_md1

可见是modem侧的唤醒阻值了休眠;

第二次上市suspend:

PM: Last active Wakeup Source: bat_percent_notify_lock wakelock
suspend of devices aborted after 232.760 msecs
PM: Some devices failed to suspend, or early wake event detected

一些设备未能休眠成功,哪些设备呢?没说;又说或者是早期的一些wake 事件被检测到,哪些事件呢,又没有讲。也许通过log是可以分析出来的。

其实从这里我们可以去学习一下suspend过程,比如说这个pending wakeup, 比如说这个last active wakeup source. 

这篇关于current pulse in LTE standby的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384039

相关文章

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

访问controller404:The origin server did not find a current representation for the target resource

ider build->rebuild project。Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。 参考:资料

Avoided redundant navigation to current location: 路由相同报错

vue-router有一个内置保护机制,它会阻止不必要的重复导航,以提高性能并避免不必要的计算。 具体来说,错误信息中的就是试图访问的路径时,应用程序已经在当前这个路径上。因此,vue-router检测到了这个重复的导航请求,就发出了警告。 通常情况下,这种警告并不需要特别处理,因为这只是一个优化措施,防止不必要的导航。但是如果你频繁遇到这种情况,可能需要检查触发导航的部分代码逻辑是否有必要进

Failed to find style 'vpiCirclePageIndicatorStyle' in current theme

使用 ViewPagerIndicator 时 , 布局文件报的错 Missing styles. Is the correct theme chosen for this layout? Use the Theme combo box above the layout to choose a different layout, or fix the theme style refe

Redmine和Admin LTE轻量级整合

文章目录 Redmine和Admin LTE轻量级整合git库地址视频介绍讨论群 Redmine和Admin LTE轻量级整合 git库地址 https://gitee.com/tigergm/redmine 欢迎作为开发者加入 视频介绍 https://www.bilibili.com/video/BV1WZ4y1C7gH 讨论群 群号:138524445

Android Doze模式和app Standby模式

对低电耗模式(app Standby)和应用待机模式(Doze)进行针对性优化 从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能,可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。低电耗模式通过在设备长时间处于闲置状态时推迟应用的后台 CPU 和网络 Activity 来减少电池消耗。应用待机模式可推迟用户近期未与之交互的应用的后台网络 Ac

mysql密码策略修改(password does not satisfy the current policy requirements)

1.查看当前策略.SHOW VARIABLES LIKE 'validate_password%'; 2.修改策略 等级改为最低:set global validate_password_policy=LOW; 长度改为6:set global validate_password_length=6;

执行hadoop中bin操作时报错:Operation category READ is not supported in state standby

在hadoop执行操作的时候报错如下:   从报错中可以分析出错误:其中Operation category READ is not supported in state standby   原因:配置了Hadoop HA,启动了一个hadoop NameNode时而启动的NameNode为standby状态。   查看nn1状态:   解决方法:将standby状态手动改为act

《Linux操作系统-系统移植》第8章 USB-4G/LTE移植 -第3节 USB-4G移植(移远AG35开发-GPS解析及编程)

查看参考手册,移远带有GPS的芯片的USB Serial如下。 2.1应用简介 1、若不使用 AT+QGPSCFG 指令对AG35进行配置,则会以默认参数开启GPS参数,NMEA端口开始上报,"gpsnmeatype"默认值为31,上报间隔为1s,每次上报所有种类的NMEA数据(GGA\RMC\GSV\GSA\VTG),若采用此默认配置,大多数使用者会觉得单次上报的数据太多且很多信息重复,建

问题解决:Given NMToken for application : appattempt_xxx is not valid for current node manager

文章目录 问题场景问题环境问题原因解决方案结果总结随缘求赞 问题场景 登录服务器,使用hive -f test.sql命令,启动了统计脚本。但是,经过了SQL校验通过之后,启动就报错了。登录Hadoop控制台,点开了自己的应用,发现了以下报错提示: 问题环境 软件版本CDH5.15.1Hive1.1.0Centos7 问题原因 从报错提示,我们可以看到,现在的任务在某个