7月前
[Android稳定性] 第055篇 从dump信息角度学调度schedule
本文分析了Linux内核中进程调度的流程和上下文切换的细节。在调度过程中,首先关闭抢占,然后调用核心调度函数__schedule,该函数会关闭抢占,选择下一个任务,切换上下文,并最终切换到下一个任务的执行。上下文切换涉及到保存上一个进程的上下文,加载下一个进程的上下文,并最终切换到下一个任务的执行。
7月前
[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash?
本文主要介绍了使用crashman工具解析adsp的方法。首先,需要准备crashman工具、python环境和perl工具。然后,准备解析所需的三个部分:fulldump中的DDRCS0_0.BIN、bp symbols和adsp源码。接下来,通过执行特定的python命令进行解析,并使用ONEMORE集成工具中的adsp crash解析插件来简化解析过程。安装插件前需安装基础工具包。最后,根据工具选项卡中的选项填写相关信息,点击运行即可进行解析。
8月前
[Android稳定性] 第052篇 [方法篇] HMI项目中如何使用QCAP解析minidump?
本文主要介绍在HMI项目中处理minidump.gz文件的方法,包括解压minidump.gz和解密minidump。文中提到两种解压方式:本地解压和在线解压,推荐在线解压。解压后,使用脚本将minidump拆分成各个bin文件。接着,生成ap_minidump.elf文件,这是解析APPS关键步骤。文章还提供了相关的脚本和命令,并展示了预期解析结果。该方法也适用于其他高通平台项目。
8月前
[Android稳定性] 第051篇 [原理篇] 从timer角度学习高通平台的watchdog
本文主要介绍了Linux内核中的定时器机制,包括低精度定时器timer_list和高精度定时器hrtimer,以及它们在watchdog timer中的应用。文章首先介绍了timer_list的实现机制、核心数据结构和API,并通过一个简单的示例展示了其使用方法。接着,文章深入剖析了hrtimer的实现机制、核心数据结构和API,并给出了一个hrtimer定时器的示例驱动。随后,文章着重介绍了watchdog timer的使用,包括其初始化、喂狗线程函数和suspend/wakeup处理。此外,文章还介绍了基于软件的软看门狗机制,包括其基本原理、核心组件、检测流程和内核中的主要实现。最后,文章总结了watchdog timer的debug方法和技巧,并提供了一些常用的内核参数用于调试。
8月前
[Android稳定性] 第050篇 [问题篇] slab内存泄露造成设备黑屏
本文描述了在测试手机经过长期智能充电后,出现卡顿和黑屏的问题现象。复现步骤包括设置手机时间和电池温度,并使用QC3.0充电器进行充电。预期结果是系统界面流畅,但实际结果是系统界面卡死和黑屏。通过分析内存信息和slab信息,发现内存不足和slab内存泄露问题。通过slabtrace分析,确定问题根源在于charger模块中的一些函数调用导致了内存泄露。解决方案是在申请内存前,先判断是否已经申请过,以避免重复申请。
8月前
[Android稳定性] 第049篇 [问题篇] 软中断霸占CPU导致watchdog无法及时喂狗
系统出现死机,核心原因是Watchdog定时器未按时触发“喂狗”操作导致20秒内无回应。从dmesg和timerlist日志分析,定时器的回调因中断或内核临界区阻塞未能执行,所有CPU的最后ping均停留在同一时刻,反映定时器链路被阻塞。这突出内核定时器和中断管理对系统稳定性的关键影响。
8月前
[Android稳定性] 第048篇 [原理篇] Android SWT机制介绍
深入解析Android System Server中的Watchdog机制,阐述其关键作用:防止核心服务和线程因死锁或长时间阻塞导致系统不可用,通过周期性Checker监控各大线程与服务,超时自动重启,保障系统稳定与用户体验。详细讲解Watchdog的启动流程、重要变量、核心线程监控逻辑和AMS集成
8月前
[Android稳定性] 第047篇 [问题篇] Unexpected kernel BRK exception at EL1
**问题背景**:多款手机在启用移动热点功能后出现死机现象,涉及BUGO19-6212、BUGO19-6235和BUGO19-6210等多个JIRA问题。 **问题现象**:设备在启用热点后崩溃。经过测试,发现启用热点功能会导致设备死机,与预期不符。 **问题分析**:通过分析堆栈信息和汇编代码,初步判断问题为数组越界。寄存器W26的值超出数组最大值,导致数组越界,进而触发BRK异常。 **wlan模块分析**:在wlan模块中,存在两个for循环,重复复制了同一批非indoor信道,导致pcl_len值翻倍,超出数组最大值。 **解决方案**:删除第二个for循环,避免重复复制信道,从而解决数组越界问题。
8月前
高通平台xbl启动流程补充
本文是对高通Android启动代码流程的进一步分析,聚焦于XBL阶段的启动流程,通过流程图与日志对应的方式详细解析。目前分析尚在进行中,预计2025年8月18日完成全部梳理。