[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区 2025-08-27 8 条
[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区

本文介绍了如何将机器进入9008模式以及通过configuration选择对应的Device type类型。在edl模式下刷机,需要选择机器对应版本并拆包镜像文件。同时,文章强调了回读分区时,如果机器已熔丝签名,必须使用未签名的版本中的prog_firehose_ddr.elf文件。最后,详细展示了如何使用tools进行分区回读操作。

[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区
查看完整文章 评论

机器进入9008模式

  1. 工厂版本使用adb reboot edl命令

  2. 开发版本、稳定版本进入fastboot模式,使用fastboot oem edl命令

通过configuration选择对应的Device type类型

2025/08/halo_7fm4lbh.png

选择下载模式

按照edl模式刷机选择机器对应版本,工厂版本需要将对应GN、GL、IN对应镜像拷贝到版本里面,使用命令进行拆包:python checksparse.py -i rawprogram0.xml

2025/08/halo_m49fwv3.png

注意:如果需要回读分区的机器已经熔丝签名了,则必须使用一个没有熔丝签名的版本中的 prog_firehose_ddr.elf

选择tools进行回读

  1. 选择Partition Manager

  1. 选择OK

回读分区

  1. 选择对应的分区,右键选择Manage Partiotion Data

  1. 选择Read Data

  1. 分区对应回读保存目录

[Android稳定性] 第056篇 [问题篇] 记一例Kernel panic - not syncing: Attempted to kill init! 2025-08-02 3 条
[Android稳定性] 第056篇 [问题篇] 记一例Kernel panic - not syncing: Attempted to kill init!

**问题现场**:系统出现大量I/O和read ERROR,初步怀疑与storage访问相关,进一步分析发现系统正在进行shutdown流程。 **初步分析**:系统当时正在走低电关机流程,且尝试访问磁盘数据时出现IO ERROR,怀疑是下电时序导致storage先下电,导致上层进程访问失败。 **平台回复**:charger相关函数检测到低电后直接调用kernel_power_off执行下电关机,跳过上层shutdown流程,导致上层访问存储设备失败,引发异常。 **解决方法**:删除底层shutdown操作,先走上层关机流程,避免问题发生。 **代码浅析**:正常情况下,上层先走完shutdown流程,再通过syscall让底层继续shutdown。 **补充**:在系统下电流程中,做好时序上的同步非常重要,避免出现竞态访问导致异常。

[Android稳定性] 第055篇 [原理篇] 从dump信息角度学调度schedule 2025-08-01 4 条
[Android稳定性] 第055篇 [原理篇] 从dump信息角度学调度schedule

本文分析了Linux内核中进程调度的流程和上下文切换的细节。在调度过程中,首先关闭抢占,然后调用核心调度函数__schedule,该函数会关闭抢占,选择下一个任务,切换上下文,并最终切换到下一个任务的执行。上下文切换涉及到保存上一个进程的上下文,加载下一个进程的上下文,并最终切换到下一个任务的执行。

[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash? 2025-07-30 评论
[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash?

本文主要介绍了使用crashman工具解析adsp的方法。首先,需要准备crashman工具、python环境和perl工具。然后,准备解析所需的三个部分:fulldump中的DDRCS0_0.BIN、bp symbols和adsp源码。接下来,通过执行特定的python命令进行解析,并使用ONEMORE集成工具中的adsp crash解析插件来简化解析过程。安装插件前需安装基础工具包。最后,根据工具选项卡中的选项填写相关信息,点击运行即可进行解析。

[Android稳定性] 第052篇 [方法篇] HMI项目中如何使用QCAP解析minidump? 2025-06-25 3 条
[Android稳定性] 第052篇 [方法篇] HMI项目中如何使用QCAP解析minidump?

本文主要介绍在HMI项目中处理minidump.gz文件的方法,包括解压minidump.gz和解密minidump。文中提到两种解压方式:本地解压和在线解压,推荐在线解压。解压后,使用脚本将minidump拆分成各个bin文件。接着,生成ap_minidump.elf文件,这是解析APPS关键步骤。文章还提供了相关的脚本和命令,并展示了预期解析结果。该方法也适用于其他高通平台项目。

[Android稳定性] 第051篇 [原理篇] 从timer角度学习高通平台的watchdog 2025-06-25 1 条
[Android稳定性] 第051篇 [原理篇] 从timer角度学习高通平台的watchdog

本文主要介绍了Linux内核中的定时器机制,包括低精度定时器timer_list和高精度定时器hrtimer,以及它们在watchdog timer中的应用。文章首先介绍了timer_list的实现机制、核心数据结构和API,并通过一个简单的示例展示了其使用方法。接着,文章深入剖析了hrtimer的实现机制、核心数据结构和API,并给出了一个hrtimer定时器的示例驱动。随后,文章着重介绍了watchdog timer的使用,包括其初始化、喂狗线程函数和suspend/wakeup处理。此外,文章还介绍了基于软件的软看门狗机制,包括其基本原理、核心组件、检测流程和内核中的主要实现。最后,文章总结了watchdog timer的debug方法和技巧,并提供了一些常用的内核参数用于调试。

[Android稳定性] 第050篇 [问题篇] slab内存泄露造成设备黑屏 2025-06-19 评论
[Android稳定性] 第050篇 [问题篇] slab内存泄露造成设备黑屏

本文描述了在测试手机经过长期智能充电后,出现卡顿和黑屏的问题现象。复现步骤包括设置手机时间和电池温度,并使用QC3.0充电器进行充电。预期结果是系统界面流畅,但实际结果是系统界面卡死和黑屏。通过分析内存信息和slab信息,发现内存不足和slab内存泄露问题。通过slabtrace分析,确定问题根源在于charger模块中的一些函数调用导致了内存泄露。解决方案是在申请内存前,先判断是否已经申请过,以避免重复申请。

 [Android稳定性] 第049篇 [问题篇] 软中断霸占CPU导致watchdog无法及时喂狗 2025-06-16 4 条
[Android稳定性] 第049篇 [问题篇] 软中断霸占CPU导致watchdog无法及时喂狗

系统出现死机,核心原因是Watchdog定时器未按时触发“喂狗”操作导致20秒内无回应。从dmesg和timerlist日志分析,定时器的回调因中断或内核临界区阻塞未能执行,所有CPU的最后ping均停留在同一时刻,反映定时器链路被阻塞。这突出内核定时器和中断管理对系统稳定性的关键影响。