![[Android稳定性] 第005篇 [问题篇] 原子状态调度引起死机](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_android_stability_005.png)
[Android稳定性] 第005篇 [问题篇] 原子状态调度引起死机
不当锁用导致死机,如在原子状态下调度,文章分析原因并提出解决方案。案例中,全局变量导致锁操作错误,强调不应使用全局变量控制锁,易引发多核并发问题。
![[Android稳定性] 第004篇 [原理篇] minidump的原理介绍](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_android_stability_004.png)
[Android稳定性] 第004篇 [原理篇] minidump的原理介绍
Minidump 是一种记录系统崩溃信息的机制,各子系统注册在内存映射表中,当系统崩溃时,引导子系统会加密并保存注册过的内存信息,存到 RAM EMMC 分区。通过在用户空间设置 dload_mode=mini,将 0x40 的值写入到 0x3d3000,在手机崩溃后,引导子系统会读取 0x3d3000 的值,如果设置为 minidump 模式,则会读取存在 md_kmsg 和 md_pmsg 地址的 kmsg log 和 logcat log,并将 log 存于 minidump 分区。
![[Android稳定性] 第002篇 [原理篇] subsystem ramdump的原理介绍](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_android_stability_002.png)
[Android稳定性] 第002篇 [原理篇] subsystem ramdump的原理介绍
一、什么是SSR? Subsystem:modem、LPASS、Venus、WCNSS、GPU、SLPI等,芯片由APSS处理器和额外处理器运行它们的软件。 SSR(Subsystem Restart,子系统重启)是高通的一个feature选项。如果SSR打开,尽管子系统crash了,仍然允许整个系
![[Android稳定性] 第001篇 [方法篇] 高通Android平台稳定性分析介绍](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/image_b05b186a515e6f82e9535c6b41fd201e.png)
[Android稳定性] 第001篇 [方法篇] 高通Android平台稳定性分析介绍
0. 前言 鉴于研发人员当遇到底层稳定性问题时(主要为Linux kernel crash),不知道如何分析或者不知道使用哪些工具进行分析,所以本文主要介绍这方面的基础知识点。 1. 复位类型 首先我们需要了解高通pmic的几种复位类型: 复位类型 解释 备注 warm reset Many pow

如何排查rro资源overlay的问题?
一、什么是RRO? 运行时资源叠加层 (RRO) 是一个软件包,可在运行时更改目标软件包的资源值。例如,安装在系统映像上的应用可能会根据资源值更改其行为。安装在不同分区中的 RRO 可能会在运行时更改应用的资源值,而不是在构建时硬编码资源值。 您可以启用或停用 RRO。您可以通过编程方式设置启用/停

如何实现动态切换rro?
0. 问题背景 我司一个android项目中,只有一个devicename的情况下,需要集成两套power_profile.xml。原因是两者的电池参数存在差异。而我们当前的设计逻辑是使用了missi的rro overlay机制来实现的。但是这种机制是依赖于devicename的,也就是说一个dev
![[linux内存管理] 第011篇 内存模型之Sparse Memory Model](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_linux_memory_management_011.png)
[linux内存管理] 第011篇 内存模型之Sparse Memory Model
0. 前言 在[linux内存管理] 第004篇 内存架构和内存模型一文中简单描述了处理器中对于内存共享技术的架构 NUMA和 UMA,以及基于这两个架构衍生的内存模型 FLATMEM、DISCONTIGMEM、SPARSEMEM,其中 FLATMEM 和 DISCONTIGMEM 因为各自的缺点而
![[linux内存管理] 第012章 物理内存管理三大结构体之zone](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/image_01a394592c615a3e79014ebf60d0709c.png)
[linux内存管理] 第012章 物理内存管理三大结构体之zone
0. 前言 在[linux内存管理] 第011篇 内存模型之Sparse Memory Model中,我们分析了 bootmem_init函数的 sparse_init。而本章暂时停下对 bootmem_init后续流程的分析,梳理一下一些基本的知识点。 在linux里将内存分为三个层次进行了管理,

记一次uid设置错误导致的adb push失败问题
一、问题背景 我司某项目无法使用adb push push文件到/vendor/firmware_mnt目录。使用的指令以及报错结果如下: adb root adb disable-verity adb reboot adb root adb remount adb shell mount -o r

设备树节点是如何转换成platform_device设备的呢?
0. 前言 其实本章想要描述的函数的功能和内存的关系并不大,但是在启动流程中,paging_init后,该函数unflatten_device_tree就会被执行。为了启动流程的完整性,也鉴于此函数也确实有必要花时间去介绍。 作为Linux BSP驱动工程师我们在适配驱动的流程里,可能就是配置DTS