透视人生的意义:活出属于自己的答案 1月前查看 1 条
透视人生的意义:活出属于自己的答案

每个人的人生意义源自独特的生命体验,无法以单一答案概括。从自我认知入手,明确内心需求,再通过行动和创造赋予生命价值。在接受无常中成长,于人际关系中找到归属感,并通过持续反思调整方向。人生的意义并非固定,而是在探索与实践中逐渐沉淀,关键是倾听内心、珍视当下,让生命绽放独特光芒。

[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区 2月前查看 7 条
[Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区

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

【深入内核】ARM64下的内核栈 2月前查看 评论
【深入内核】ARM64下的内核栈

本文深入探讨了Linux内核栈的运作机制。内核栈是进程生命周期中不可或缺的部分,用于保存用户态和内核态之间的上下文信息。文章解释了内核栈如何通过`task_struct`结构体与进程关联,以及`pt_regs`和`cpu_context`在任务切换和异常处理中的关键作用。此外,文章还详细说明了ARM64架构中`sp_el0`寄存器如何直接存储当前任务的`task_struct`指针,从而优化了栈指针的使用。文章最后讨论了内核栈的配置和栈回溯技术,为内核稳定性问题的分析提供了宝贵的见解。

【深入内核】内核printk原理介绍 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 2月前查看 评论
[LRDP2] 解析插件之dmesg

Linux ramdump parser工具通过解析离线ramdump文件中的内核日志来诊断系统问题。该工具的核心功能是通过DmesgLib类实现的,该类负责读取和分析内核日志。DmesgLib类首先通过读取内核内存中的printk_ringbuffer结构来定位日志数据,然后初始化环形缓冲区参数,包括描述符数量、数据区大小等。接下来,DmesgLib类遍历描述符,提取日志文本,并解析元数据,如时间戳和调用者ID。最后,DmesgLib类将提取到的日志数据格式化输出,可以是写入文件或返回结构化数据。解析dmesg的核心在于理解printk_ringbuffer结构,该结构是内核日志的存储和管理机制。

[Linux Ramdump Parser] 解析的核心Ramdump实例类的初始化 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 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稳定性] 第055篇 从dump信息角度学调度schedule 3月前查看 4 条
[Android稳定性] 第055篇 从dump信息角度学调度schedule

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

[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash? 3月前查看 评论
[Android稳定性] 第054篇 [方法篇] 高通平台如何解析ADSP Crash?

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

简述
在万物之间穿行,也在自我之间渡过。
  • liuqi20328@gmail.com
  • 生涯
  • 行业嵌入式
  • 职业Linux/Android内核工程师
  • 人生
  • 生活角色浪子、父母的娃、我夫人的老公
  • 社会角色公司职员、中华人民共和国公民
  • 类型
  • 星座 双子座
  • 生肖
  • 血型O
  • 数据
  • 发表文章144篇
  • 发表评论12个
  • 星球加热12295度
  • 最近的心情能量
  • 地图数据来源于高德地图
  • intj 建筑师
    intj 建筑师
    • 外向内向
    • 远见现实
    • 理性感受
    • 评判展望
    • 坚决起伏
  • 了解更多信息