RK3588内核崩溃日志抓取实战:pstore与ramoops配置全解析(附避坑指南)

RK3588内核崩溃日志捕获:pstore与ramoops的实战配置指南 本文详细介绍了在RK3588嵌入式设备上配置pstore与ramoops以捕获内核崩溃日志的实战指南。通过内核配置调整、设备树设置及高级调试技巧,帮助开发者有效定位系统崩溃原因,特别适合户外智能设备等无法长期连接调试器的场景。文章还提供了生产环境优化建议,确保日志捕获的可靠性与安全性。 阅读详情

RK3588内核崩溃日志抓取实战:pstore与ramoops配置全解析(附避坑指南)

调试嵌入式系统,最让人头疼的莫过于系统突然“死”给你看,留下一片黑屏和茫然。尤其是在RK3588这样功能复杂的异构多核平台上,一个偶发的内核崩溃(Kernel Panic)可能让整个项目进度停滞数天。传统的串口日志输出在系统完全挂起时往往来不及保存关键信息,而重启后现场早已灰飞烟灭。这时,一个可靠的“黑匣子”就显得至关重要。pstore,正是Linux内核为我们准备的这样一个机制,它能在系统崩溃的瞬间,将最后的“遗言”——内核日志、控制台输出、甚至函数调用轨迹——保存到一块特定的、不受重启影响的存储区域(如预留的内存块Ramoops)。对于使用RK3588进行产品开发的硬件工程师和系统调试人员来说,熟练掌握pstore与ramoops的配置与使用,是快速定位深层系统故障、提升调试效率的必备技能。本文将从一个实战者的视角,深入解析在RK3588平台上搭建这套“黑匣子”的完整流程,并分享那些官方文档里不会写的“坑”与解决之道。

1. 理解pstore与ramoops:内核的“临终记录仪”

在深入配置之前,我们有必要先厘清pstore和ramoops这两个核心概念的关系与工作原理。这能帮助我们在遇到问题时,做出更准确的判断。

pstore(Persistent Storage)是Linux内核的一个子系统,它提供了一个框架,用于在系统异常重启(如崩溃、断电)后,依然能保存下来自内核的各种信息。你可以把它想象成一个标准化的接口或插座。pstore本身并不规定信息具体存在哪里、怎么存,它只定义了一套存储和检索的API。实际的存储“后端”(backend)可以是多种多样的。

ramoops 就是pstore最常用的一种后端实现。它的原理非常巧妙:在系统正常启动时,就在物理内存中提前划出一小块区域(比如1MB),并告知内核这块内存是“预留的”,不会被普通的内存分配器使用。当系统发生崩溃时,pstore驱动会通过ramoops这个后端,将关键的日志信息写入这块预留内存。由于这块内存在物理上是持续供电的(只要设备不完全断电),或者其内容在特定的硬件复位类型下得以保留,那么在下一次系统启动时,内核就能从同样的物理地址,把上一次崩溃时写入的数据再读出来,并呈现给用户。

对于RK3588这样的嵌入式SoC,其内存初始化流程和复位行为有其特殊性,这正是配置时需要格外注意的地方。一个常见的误解是认为只要配置了ramoops就一定能抓到日志,实际上,这取决于崩溃的类型、内存的复位状态以及预留区域是否被后续启动流程覆盖。

注意:ramoops依赖于“内存内容在重启后不丢失”这一特性。这在许多嵌入式平台上是通过“热重启”或“软复位”实现的。对于完全断电再上电的“冷启动”,由于SDRAM会重新初始化,ramoops保存的内容通常会丢失。部分RK3588开发板可能支持更深层次的电源状态保持,需要结合具体硬件设计判断。

2. RK3588内核配置与编译:打下坚实基础

要让pstore/ramoops在RK3588上工作,首先需要确保内核编译时开启了相应的选项。这里我们基于主线Linux内核或Rockchip提供的BSP内核进行说明。

2.1 核心配置选项

你需要在内核的配置菜单中,找到并启用以下关键选项。通常可以通过 make menuconfig 命令进行图形化配置。

# 进入你的RK3588内核源码目录
cd /path/to/your/rk3588-kernel
make ARCH=arm64 menuconfig

在配置界面中,你需要确保以下选项被设置为 y (内置) 或 m (模块)。建议初次使用时直接编译进内核 (y),避免模块加载问题。

  • CONFIG_PSTORE: 这是总开关,必须启用。
  • CONFIG_PSTORE_RAM: 这就是ramoops后端驱动。
  • CONFIG_PSTORE_CONSOLE: 启用控制台日志的保存。这是抓取 dmesg 崩溃前输出的关键。
  • CONFIG_PSTORE_PMSG: 启用用户空间 pmsg 信息的保存,对于调试Android系统更有用。
  • CONFIG_PSTORE_FTRACE: 启用函数跟踪(ftrace)信息的保存,用于分析崩
基于RK3588 crash log抓取pstore 阅读详情

相关推荐

ramoops&pstore简要说明

1. pstore pstore是persistent storage的缩写。内核发生异常时如果能将日志等信息保存下来不丢失,那么就可以通过这些信息来定位问题。不同的平台可以提供的存储位置不同,例如有些平台支持硬盘,有些不支持。除了平台差异,异常类型也决定了在发生异常时该存储位置是否还可用。 pstore的目标是提供一套通用的接口用来存储异常信息。pstore以文件系统的形式提供用户空间接口,

zangdongming的专栏 1万+

linux pstore 存储内核崩溃日志

在系统运行过程中,如果内核发生了panic,那么开发人员需要通过内核报错日志来进行定位问题。但是很多时候出现问题的时候没有接调试串口,而报错日志是在内存里面的,重启后就丢失了。所以需要一种方法,可以在系统发生crash时,将crash info保存于非易失存储器中。这对分析那种小概率且没办法抓到现场的问题非常实用,尤其是现在智能互联网的设备逐渐普及的时候,远端的设备可以自己捕抓崩溃日志再通过网络传输到服务器,维护人员就可以根据收集来的日志定位和解决问题,然后通过OTA让设备升级迭代。内核使用。

枫潇潇 4736

拯救崩溃现场:用dmesg和pstore快速定位RK3588系统故障的5个技巧

本文针对RK3588系统崩溃问题,详细介绍了如何结合dmesg与pstore(特别是ramoops)构建有效的故障定位机制。通过5个实战技巧,包括理解日志双保险机制、正确配置ramoops、主动触发与捕获崩溃、深度分析日志线索以及应对死锁等复杂场景,帮助开发者快速从崩溃现场提取并分析关键crash log,高效定位系统故障根源。

weixin_29194693的博客 425

RK3588 Android12开机log分析

-----------------------------------------------------单PMIC log插入开始------------------------------------------------------------------------------------------------单PMIC log插入结束------------------------------------------------------

domen_pan的博客 5277

手把手教你用PSTORE ramoops自动捕获Linux内核panic日志(含设备树/DTS配置示例)

本文详细介绍了如何在嵌入式Linux开发中利用PSTORE框架下的ramoops机制自动捕获内核panic日志。通过对比模块参数、设备树(DTS)和platform_data三种配置方式,重点提供了ARM64平台的设备树配置示例,帮助开发者在x86_64和arm64架构上快速部署这一内核崩溃“黑匣子”,有效解决现场死机后日志丢失的调试难题。

weixin_29214691的博客 123

RK3568 启动失败

后面测试各路电压,发现VDD_CPU电压不正常,没有输出,后面仔细检查,发现PMIC_SLEEP这个GPIO被拉高了,导致VDD_CPU这个DCDC休眠,卡在usb加载过程,起初以为是EMMC,USB等模块导致,在dts disabled相应模块,依旧没有效果。但是在没有烧入固件的时候,这个VDD_CPU是OK正常的,估计是这个GPIO内部默认下拉,硬件上有个上拉,逻辑设计不合理。

layuetian2011的博客 3828

RK3568平台开发系列讲解(调试篇)Oops 日志分析

📢编写代码并不总是内核开发中最难的方面。 调试是真正的瓶颈,即使对于经验丰富的内核开发人员也是如此。 也就是说,大多数内核调试工具都是内核本身的一部分。 有时,内核通过称为Oops的消息帮助查找故障的起因。 然后,调试归结为分析消息。

内核笔记 1931

自动驾驶开发者必看:如何用Impromptu VLA数据集提升模型在乡村道路的表现(附实战代码)

本文为自动驾驶开发者提供了利用Impromptu VLA开源数据集提升模型在乡村道路等极端场景表现的实战指南。该数据集专门针对边界模糊道路、非常规障碍物等非结构化环境,通过精选的8万多个极端场景片段,帮助模型弥补数据分布偏差。文章详细介绍了环境搭建、数据准备、模型微调及性能评估的全流程,并附有实战代码,旨在系统性提升自动驾驶系统在长尾场景下的鲁棒性。

t8u9v0w1x的博客 243

【笔记】2022.6.7 数据分析概论

已完结

SpriteNym的博客 1373

k8s集群部署私有镜像仓库

本文介绍了在Kubernetes集群中部署私有镜像仓库的完整方案。使用registry:2镜像创建Deployment,通过NodePort(30500)暴露服务,并采用hostPath(/data/registry)实现数据持久化。部署过程包括节点标记、YAML配置、资源创建及验证步骤,同时提供了Docker和Containerd两种环境下的详细使用方法,包括配置不信任私有仓库、镜像推送/拉取操作指南。该方案特别适合开发测试环境,为团队提供便捷的本地镜像管理能力。

weixin_42728286的博客 893

DFT实训教程笔记2(bibili版本)- Scan synthesis practice

文章目录Scan synthesis practice 本博文是博主记录DFT实训教程的笔记版本,此笔记并没有对所有的知识进行记录,仅仅以自身的认知水平,来记录了一些部分笔记并加上了自己的理解。 Scan synthesis practice How to design scan clock structure? 假设一块chip里面有好几十个clock domain,如果每一个clock domain都用一个scan clock虽然会非常清晰,但是IO数目肯定不够用。 clock group: 1、no

ciscomonkey的博客 9082

Cadence 开发合集【总目录】

专栏主要介绍Cadence原理图和PCB信号完整性电源完整性仿真相关的内容,更加注重实操,以帮助大家轻松上手并不断提高;在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。 ............

fydar的博客 1万+

Oracle EBS AP 应付模块核心实现逻辑(极简骨架 + 分层拆解 + 业务流转 + 分录 + 核心表)

Oracle EBS AP应付模块采用四层逻辑架构:1)主数据层统一管控供应商基础信息;2)发票负债层通过三单匹配校验生成应付账款;3)付款核销层实现负债冲减;4)SLA层自动生成财务凭证。核心流程包括发票验证(匹配PO/收货单)、付款核销(全额/部分冲账)、会计分录自动生成(通过SLA引擎)。模块严格遵循"无匹配不负债、无验证不入账"原则,与采购、库存等模块深度集成,实现从供应商创建到付款核销的完整业务闭环,确保应付账款准确性和审计追溯能力。

金牌架构师 440

[Dify 实战] 如何在内网环境部署 Dify 应用:彻底离线的企业级方案解析

企业内网环境如何离线部署Dify?本文提供详细教程:Dify作为开源AI平台,支持完全离线部署,无需外网访问。文中介绍两种部署方式:推荐使用Docker一键部署,也可选择源码安装定制化方案。重点讲解内网模型配置(支持Ollama/GPT-OSS等)、知识库存储(MinIO/PostgreSQL)及内网代理设置,并给出常见问题排查方法。该方案适用于金融、政府等对数据安全要求高的场景,确保敏感数据不泄露,实现完全本地化的AI应用闭环。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 453

保姆级教程:一步步创建 ABAP Text Table

有朋友反馈,问有没有一个自己动手创建 Text Table 的例子,因为自己没有动手实践过,总觉得心里不踏实。这个行为的语义是,ZAI_TYPE_T 这张表的 AI_TYPE 字段值,不能随便维护,必须是表。然后另一个需要添加的字段是 AI_TYPE 这个字段值对应的文本值,本例笔者采用 SAP 标准的。也是自己创建的,很简单的一个 Data Element,类型为 CHAR,长度为 2.依次给主表的 01,02,03 三个字段值维护对应的描述信息,最后效果如下。按照下面的字段结构,创建另一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4276

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 手把手教你用EMS4100N替换FUSB340(附完整电路图与实测数据)
下一篇: 手把手教你用面包板搭建RC振荡电路(附波形实测对比)
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值