 1月前
        
        
            
            
                1 条
        
        
        1月前
        
        
            
            
                1 条
            
        
        
        
    透视人生的意义:活出属于自己的答案
每个人的人生意义源自独特的生命体验,无法以单一答案概括。从自我认知入手,明确内心需求,再通过行动和创造赋予生命价值。在接受无常中成长,于人际关系中找到归属感,并通过持续反思调整方向。人生的意义并非固定,而是在探索与实践中逐渐沉淀,关键是倾听内心、珍视当下,让生命绽放独特光芒。
![[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_ieywz9f.png?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit) 2月前
        
        
            
            
                7 条
        
        
        2月前
        
        
            
            
                7 条
            
        
        
        
    [Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区
本文介绍了如何将机器进入9008模式以及通过configuration选择对应的Device type类型。在edl模式下刷机,需要选择机器对应版本并拆包镜像文件。同时,文章强调了回读分区时,如果机器已熔丝签名,必须使用未签名的版本中的prog_firehose_ddr.elf文件。最后,详细展示了如何使用tools进行分区回读操作。
 2月前
        
        
            
                评论
        
        
        2月前
        
        
            
                评论
            
            
        
        
        
    【深入内核】ARM64下的内核栈
本文深入探讨了Linux内核栈的运作机制。内核栈是进程生命周期中不可或缺的部分,用于保存用户态和内核态之间的上下文信息。文章解释了内核栈如何通过`task_struct`结构体与进程关联,以及`pt_regs`和`cpu_context`在任务切换和异常处理中的关键作用。此外,文章还详细说明了ARM64架构中`sp_el0`寄存器如何直接存储当前任务的`task_struct`指针,从而优化了栈指针的使用。文章最后讨论了内核栈的配置和栈回溯技术,为内核稳定性问题的分析提供了宝贵的见解。
 2月前
        
        
            
                评论
        
        
        2月前
        
        
            
                评论
            
            
        
        
        
    【深入内核】内核printk原理介绍
printk 是 Linux 内核用于输出调试信息的接口,通过 log buffer 存储日志信息,并在系统出现问题后记录错误信息。文章详细介绍了 printk 内核框架,包括 printk 接口的作用、log buffer 的设计和初始化、log buffer 的数据结构,以及 printk 函数的流程。文章还分析了 printk ring buffer 的写入过程,包括 prb_reserve、printk_sprint 和 prb_commit 等函数的核心作用。最后,文章通过 trace32 读取 printk_ringbuffer 在内存中的数据,并解释了 printk_ringbuffer 在内存中的增长方向,使读者对环形缓冲区的整体印象更加清晰。
![[LRDP2] 解析插件之dmesg](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/09/halo_drvnl2l.jpeg?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit) 2月前
        
        
            
                评论
        
        
        2月前
        
        
            
                评论
            
            
        
        
        
    [LRDP2] 解析插件之dmesg
Linux ramdump parser工具通过解析离线ramdump文件中的内核日志来诊断系统问题。该工具的核心功能是通过DmesgLib类实现的,该类负责读取和分析内核日志。DmesgLib类首先通过读取内核内存中的printk_ringbuffer结构来定位日志数据,然后初始化环形缓冲区参数,包括描述符数量、数据区大小等。接下来,DmesgLib类遍历描述符,提取日志文本,并解析元数据,如时间戳和调用者ID。最后,DmesgLib类将提取到的日志数据格式化输出,可以是写入文件或返回结构化数据。解析dmesg的核心在于理解printk_ringbuffer结构,该结构是内核日志的存储和管理机制。
![[Linux Ramdump Parser] 解析的核心Ramdump实例类的初始化](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_wgbocis.webp?x-oss-process=image/resize,w_800,m_lfit) 2月前
        
        
            
                评论
        
        
        2月前
        
        
            
                评论
            
            
        
        
        
    [Linux Ramdump Parser] 解析的核心Ramdump实例类的初始化
这篇文章主要介绍了Linux ramdump parser工具中的核心数据结构Ramdump类,以及其常用接口和初始化流程。Ramdump类负责解析和分析Linux内核的崩溃转储文件,并提供了一系列函数接口,以便开发人员可以基于它开发自己的插件。文章详细讲解了以下几个方面的内容: 1. **常用接口**:介绍了Ramdump类中一些常用的接口函数,例如`get_kernel_version`、`address_of`、`field_offset`、`container_of`、`read_cstring`、`read_structure_field`、`read_structure_cstring`和`read_elf_memory`等。这些接口函数分别用于获取内核版本号、获取符号地址、获取结构体成员的偏移量、根据指针获取结构体实例、从指定地址读取字符串、从结构体中读取成员变量和从ELF文件中提取字符串信息等。 2. **Ramdump类的初始化**:详细描述了Ramdump类在初始化过程中进行的操作,包括解析Kconfig配置文件、解析内核符号表、检测vmlinux和dump是否匹配以及加载模块符号表等。这些操作为后续的插件开发提供了必要的信息和基础。 3. **模块符号表加载**:介绍了如何加载模块符号表,包括获取模块符号路径、设置模块符号、解析模块符号和输出模块符号表等。这些操作使得开发人员可以方便地访问和分析模块中的函数和变量。 4. **插件开发**:最后,文章提到了如何使用Ramdump类开发插件,并分析了插件解析dump的逻辑。开发人员可以根据自己的需求,利用Ramdump类提供的接口函数,开发出各种功能强大的插件,以深入分析和调试Linux内核。 总而言之,这篇文章为开发Linux ramdump parser插件提供了详细的指导和参考,对于想要深入了解Linux内核和开发相关工具的开发人员来说,具有重要的参考价值。
![[Linux Ramdump Parser] 解析的入口ramparse.py](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_wjoyifw.webp?x-oss-process=image/resize,w_800,m_lfit) 2月前
        
        
            
                评论
        
        
        2月前
        
        
            
                评论
            
            
        
        
        
    [Linux Ramdump Parser] 解析的入口ramparse.py
这篇文章主要分析了Ramparse.py脚本的解析参数、动态插件注册、配置GNU工具、RamDump结构体初始化、打印kernel cmdline、插件模块解析和创建trace32脚本等流程。 1. **解析参数**:使用OptionParser解析脚本携带的参数,如logcat解析时间、ftrace解析时间、ram文件、vmlinux路径、nm路径、gdb路径、objdump路径等。 2. **动态插件注册**:通过执行parser_util.get_parsers函数,自动加载parsers和extensions/parsers目录下的py文件,并使用register_parser装饰器注册插件。 3. **配置GNU工具**:配置gdb/nm/objdump工具路径,可以通过参数传参,也可以通过配置local_settings.py来配置。 4. **RamDump结构体初始化**:创建RamDump实例,用于后续解析操作。 5. **打印kernel cmdline**:读取保存cmdline的全局变量saved_command_line的地址,并读取对应的字符串,输出cmdline。 6. **插件模块解析**:根据选项和插件属性,选择需要运行的插件,并调用其parse方法进行解析。 7. **创建trace32脚本**:根据选项创建trace32脚本,用于调试和分析ramdump。 文章还特别强调了以下几点: * 插件模块的解析流程,以及如何通过修改插件的optional属性来控制插件是否被解析。 * 创建trace32脚本的功能和使用方法。 总而言之,这篇文章详细介绍了Ramparse.py脚本的解析流程和功能,对于理解和使用该脚本非常有帮助。
![[Android稳定性] 第057篇 [方法篇] 高通平台使能ftrace的方法](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_vgzfxyz.webp?x-oss-process=image/resize,w_800,m_lfit) 2月前
        
        
            
            
                4 条
        
        
        2月前
        
        
            
            
                4 条
            
        
        
        
    [Android稳定性] 第057篇 [方法篇] 高通平台使能ftrace的方法
本文介绍了Linux内核中的Ftrace工具,用于跟踪和分析内核行为。文章详细讲解了使能Ftrace的方法,包括设置相关开关和打开内核trace相关的defconfig。文章还介绍了如何确认Ftrace是否被使能以及查看Ftrace日志的方法。最后,文章提供了一些参考资料供读者深入了解Ftrace。
![[Android稳定性] 第055篇 从dump信息角度学调度schedule](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/08/halo_1oshjvi.webp?x-oss-process=image/resize,w_800,m_lfit) 3月前
        
        
            
            
                4 条
        
        
        3月前
        
        
            
            
                4 条
            
        
        
        
    [Android稳定性] 第055篇 从dump信息角度学调度schedule
本文分析了Linux内核中进程调度的流程和上下文切换的细节。在调度过程中,首先关闭抢占,然后调用核心调度函数__schedule,该函数会关闭抢占,选择下一个任务,切换上下文,并最终切换到下一个任务的执行。上下文切换涉及到保存上一个进程的上下文,加载下一个进程的上下文,并最终切换到下一个任务的执行。
![[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash?](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/07/halo_1qepeee.png?x-oss-process=style/watermark&x-oss-process=image/resize,w_800,m_lfit) 3月前
        
        
            
                评论
        
        
        3月前
        
        
            
                评论
            
            
        
        
        
    [Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash?
本文主要介绍了使用crashman工具解析adsp的方法。首先,需要准备crashman工具、python环境和perl工具。然后,准备解析所需的三个部分:fulldump中的DDRCS0_0.BIN、bp symbols和adsp源码。接下来,通过执行特定的python命令进行解析,并使用ONEMORE集成工具中的adsp crash解析插件来简化解析过程。安装插件前需安装基础工具包。最后,根据工具选项卡中的选项填写相关信息,点击运行即可进行解析。
 
    