91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入解析Rockchip Minidump模塊:從代碼到調試的全維度指南

jf_44130326 ? 來源:Linux1024 ? 2026-02-10 16:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式系統(tǒng)開發(fā)中,設備崩潰后的問題定位往往是最棘手的環(huán)節(jié)之一。當系統(tǒng)因內核panic、硬件異常等原因宕機時,如何快速捕獲關鍵運行狀態(tài)(如內存數(shù)據(jù)、堆棧信息、進程狀態(tài))成為解決問題的關鍵。Rockchip平臺的minidump模塊正是為此設計的核心組件,它能在系統(tǒng)異常時收集并保存關鍵信息,為后續(xù)調試提供有力支撐。

本文將深入解析minidump文件夾下的所有文件,從功能作用、代碼邏輯到調用關系,再到實際調試方法,幫助開發(fā)者全面掌握這一模塊的工作原理。

一、模塊整體定位

minidumpRockchip平臺用于實現(xiàn)「小型內存轉儲」的內核模塊,核心功能是:在系統(tǒng)發(fā)生異常(如panic)時,快速收集關鍵內存區(qū)域、堆棧信息、進程狀態(tài)等數(shù)據(jù),按照ELF格式整理并存儲到指定區(qū)域(通常是共享內存或特定存儲分區(qū)),供后續(xù)分析系統(tǒng)崩潰原因。

與傳統(tǒng)的全量內存轉儲(如kdump)相比,minidump更輕量,只收集最關鍵的信息,適合資源有限的嵌入式設備。

二、文件功能詳解

1.構建配置文件:MakefileKconfig

Makefile

#SPDX-License-Identifier: GPL-2.0-onlyobj-$(CONFIG_ROCKCHIP_MINIDUMP) += rockchip_minidump.orockchip_minidump-y := rk_minidump.o minidump_log.o minidump_memory.o rk_minidump_asm.o

?作用:定義模塊編譯規(guī)則。當內核配置中啟用CONFIG_ROCKCHIP_MINIDUMP時,將rk_minidump.o、minidump_log.o等目標文件鏈接為rockchip_minidump.ko模塊。

?關鍵:指定了模塊的源文件組合,是構建系統(tǒng)的入口。

Kconfig

?作用:提供內核配置選項(如CONFIG_ROCKCHIP_MINIDUMP、CONFIG_ROCKCHIP_MINIDUMP_PANIC_DUMP等),開發(fā)者可通過make menuconfig選擇是否啟用minidump及相關功能(如panic時轉儲、動態(tài)堆棧轉儲)。

?意義:通過配置開關控制功能編譯,減少不必要的資源占用。

2.核心數(shù)據(jù)結構:minidump_private.h

structmd_ss_toc {  u32     md_ss_toc_init;     // 子系統(tǒng)目錄表初始化狀態(tài)  u32     md_ss_enable_status;   // 子系統(tǒng)使能狀態(tài)(1=Bootloader 會轉儲該區(qū)域)  u32     encryption_status;    // 加密狀態(tài)  u32     encryption_required;   // 是否需要加密  u32     ss_region_count;     // 區(qū)域數(shù)量  u64     md_ss_smem_regions_baseptr;// 區(qū)域基地址(共享內存中)  u64     elf_header;       // ELF 頭基地址  u64     elf_size;        // ELF 大小  u64     minidump_table;     // minidump 表基地址};

?作用:定義「子系統(tǒng)共享內存目錄表(SMEM Table of Content)」結構,用于管理minidump收集的區(qū)域元數(shù)據(jù)(如區(qū)域數(shù)量、地址、加密狀態(tài)等)。

?地位:是整個模塊的數(shù)據(jù)核心,所有區(qū)域的添加、更新、查詢都圍繞該結構展開。

3.核心邏輯實現(xiàn):rk_minidump.c

該文件是minidump模塊的「大腦」,實現(xiàn)了區(qū)域管理、ELF格式處理、共享內存交互等核心功能。

關鍵函數(shù):

?rk_minidump_add_region:向minidump表添加一個新區(qū)域(如堆棧、進程信息),并更新md_ss_tocELF頭。

intrk_minidump_add_region(conststructmd_region *entry){ // 校驗區(qū)域合法性(名稱長度、地址對齊等) if(validate_region(entry))return-EINVAL; // 檢查是否已存在同名區(qū)域 if(md_entry_num(entry) >=0)return-EEXIST; // 添加到本地表,并更新共享內存中的目錄表和 ELF 頭  md_update_ss_toc(entry); // ...}

?rk_minidump_update_region:更新已添加區(qū)域的地址或大?。ㄟm用于動態(tài)變化的區(qū)域,如堆棧)。

?rk_minidump_enabled:檢查minidump是否啟用(通過md_ss_toc.md_ss_enable_status判斷)。

核心邏輯:

維護一個本地md_table結構,同步更新共享內存中的md_ss_tocELF頭,確保收集的區(qū)域信息按ELF格式規(guī)范存儲,便于后續(xù)解析工具(如readelf)讀取。

4.日志與堆棧處理:minidump_log.c

專注于收集系統(tǒng)運行時的動態(tài)信息,尤其是堆棧和進程狀態(tài),是調試崩潰問題的關鍵數(shù)據(jù)來源。

關鍵功能:

?dump_stack_minidump:當系統(tǒng)異常時,收集當前CPU的堆棧信息(支持普通堆棧和vmalloc堆棧),并通過register_stack_entry調用rk_minidump_add_region注冊到minidump表。

voiddump_stack_minidump(u64 sp){ // 處理 vmalloc 堆棧(按頁拆分)或普通堆棧 if(is_vmap_stack) {   for(i =0; i < copy_pages; i++) {      scnprintf(ksp_entry.name,sizeof(ksp_entry.name),"KSTACK%d_%d", cpu, i);      register_stack_entry(&ksp_entry, sp, PAGE_SIZE);      sp += PAGE_SIZE;    }  }else{    scnprintf(ksp_entry.name,sizeof(ksp_entry.name),"KSTACK%d", cpu);    register_stack_entry(&ksp_entry, sp, THREAD_SIZE);  }}

?條件編譯支持:通過CONFIG_ROCKCHIP_MINIDUMP_PANIC_DUMP啟用panic時的CPU上下文、運行隊列、內存信息(如md_dump_meminfo)收集。

5.內存信息收集:minidump_memory.c

負責收集系統(tǒng)內存相關的靜態(tài)/動態(tài)信息,輔助分析內存泄漏、OOM等問題。

關鍵函數(shù):

?md_dump_meminfo:輸出系統(tǒng)內存狀態(tài)(如總內存、空閑內存、緩存、交換分區(qū)等),格式與/proc/meminfo類似。

?md_dump_slabinfo:在CONFIG_SLUB_DEBUG啟用時,輸出slab分配器狀態(tài)(如活躍對象數(shù)、分配/釋放統(tǒng)計),用于分析內核內存分配問題。

?md_register_memory_dump:為特定類型的內存信息(如page ownerslab owner)分配CMA內存,并注冊到minidump表。

6. ELF輔助工具:elf.h

staticinlinestructelf_phdr*elf_program(structelfhdr *hdr,intidx) { return&elf_pheader(hdr)[idx];}

?作用:提供ELF程序頭(Program Header)的訪問接口,輔助rk_minidump.c構建符合ELF規(guī)范的minidump數(shù)據(jù)(ELF格式便于通用工具解析)。

7.匯編輔助:rk_minidump_asm.S

?作用:實現(xiàn)底層硬件相關操作,如異常發(fā)生時快速保存CPU寄存器上下文(匯編更適合直接操作硬件寄存器),確保關鍵狀態(tài)不丟失。

?典型場景:在系統(tǒng)panic時,通過匯編指令保存PC、SP、通用寄存器等,再交由C函數(shù)處理。

三、調用關系流程圖

wKgZO2kXJXuAMdoNAAL2m2ifASA526.png

核心調用鏈

事件觸發(fā)(如panicminidump_log.c/minidump_memory.c收集數(shù)據(jù)調用rk_minidump.cadd_region/update_region更新md_ss_tocELF結構數(shù)據(jù)寫入共享內存。

四、終端調試方法

掌握以下調試方法,可快速驗證minidump功能是否正常:

1.模塊加載與配置

# 確認配置已啟用zcat /proc/config.gz |grepROCKCHIP_MINIDUMP# 加載模塊(若未編譯進內核)insmod rockchip_minidump.ko# 查看模塊日志dmesg |grep"Minidump:"

1.觸發(fā)minidump測試

可通過echo c > /proc/sysrq-trigger觸發(fā)系統(tǒng)panic,強制觸發(fā)minidump(需內核啟用CONFIG_MAGIC_SYSRQ)。

2.查看收集的信息

?minidump數(shù)據(jù)存儲在共享內存,可通過devmem讀取物理地址:

devmem0xXXXXXXXXX # 地址為md_ss_toc.md_ss_smem_regions_baseptr

?若存儲在分區(qū),可通過dd導出后用readelf解析:

ddif=/dev/block/by-name/minidump of=minidump.binreadelf -l minidump.bin # 查看ELF程序頭

1.內核調試技巧

使用gdb結合內核符號表(vmlinux)調試模塊函數(shù):

gdbvmlinux(gdb) b rk_minidump_add_region # 在添加區(qū)域處打斷點(gdb) c # 繼續(xù)運行,觸發(fā)事件后調試

五、開發(fā)者為什么要關注?

1.快速定位系統(tǒng)崩潰問題

minidump收集的堆棧、內存、進程信息是分析內核panicOOM等問題的「第一現(xiàn)場證據(jù)」,掌握其原理可大幅縮短調試周期。

2.定制化數(shù)據(jù)收集

可根據(jù)需求修改minidump_log.cminidump_memory.c,添加特定模塊的內存區(qū)域(如GPU寄存器、傳感器數(shù)據(jù)),讓調試更有針對性。

3.優(yōu)化系統(tǒng)穩(wěn)定性

通過分析minidump數(shù)據(jù),可發(fā)現(xiàn)內存泄漏、堆棧溢出等潛在問題,提前優(yōu)化系統(tǒng)穩(wěn)定性。

4.理解內核模塊設計

該模塊涉及共享內存管理、ELF格式處理、內核事件通知等核心技術,是學習內核模塊開發(fā)的典型案例。

總結

Rockchipminidump模塊是嵌入式系統(tǒng)調試的「利器」,通過rk_minidump.c核心邏輯串聯(lián)起日志、內存、ELF處理等功能,在系統(tǒng)異常時高效收集關鍵信息。對于開發(fā)者而言,深入理解其代碼結構和調用關系,不僅能提升問題定位效率,更能掌握內核模塊設計的核心思路。

下次設備崩潰時,不妨從minidump數(shù)據(jù)入手,相信你會發(fā)現(xiàn)調試之路豁然開朗。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5199

    文章

    20454

    瀏覽量

    334237
  • 調試
    +關注

    關注

    7

    文章

    646

    瀏覽量

    35678
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73999
  • Rockchip
    +關注

    關注

    0

    文章

    92

    瀏覽量

    19585
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Rockchip RK3399軟件開發(fā)指南

    本文檔主要介紹 Rockchip RK3399 軟件開發(fā)指南,旨在幫助軟件開發(fā)工程師更快上手 RK3399 的開發(fā)及調試。
    發(fā)表于 10-10 07:15

    Rockchip RKDevInfoWriteTool工具及使用指南

    電子發(fā)燒友網(wǎng)站提供《Rockchip RKDevInfoWriteTool工具及使用指南.7z》資料免費下載
    發(fā)表于 09-21 09:26 ?39次下載
    <b class='flag-5'>Rockchip</b> RKDevInfoWriteTool工具及使用<b class='flag-5'>指南</b>

    ArmSom--攝像頭開發(fā)指南(一)

    一.簡介RK3588入門精通開發(fā)板:ArmSoM-W3Kernel:5.10.160OS:Debian11本?主要介紹在Rockchip平臺下Camera相關代碼配置,MIPI-C
    的頭像 發(fā)表于 11-03 14:56 ?2932次閱讀
    ArmSom--攝像頭開發(fā)<b class='flag-5'>指南</b>(一)

    深入解析與無線通信RFIC設計與測試實用指南

    深入解析與無線通信RFIC設計與測試實用指南
    發(fā)表于 04-16 11:03 ?775次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>與無線通信RFIC設計與測試實用<b class='flag-5'>指南</b>

    觸摸芯片全面選型指南功能到場景的維度考量

    觸摸芯片全面選型指南功能到場景的維度考量
    的頭像 發(fā)表于 07-17 17:54 ?815次閱讀

    代碼物聯(lián)網(wǎng)平臺典型場景落地流程:需求實現(xiàn)的路徑解析

    ,讓開發(fā)者無需深入掌握底層技術,即可快速構建端端的物聯(lián)網(wǎng)應用。設備聯(lián)網(wǎng)數(shù)據(jù)可視化,規(guī)則配置
    的頭像 發(fā)表于 08-21 16:26 ?845次閱讀

    干貨分享 | TSMaster MBD模塊解析模型搭建自動化測試的完整實踐

    在汽車電子MBD開發(fā)中,TSMasterMBD模塊深度集成于TSMaster先進的總線分析、仿真與測試平臺,旨在為工程師提供一套模型自動編譯、代碼集成自動化測試的端
    的頭像 發(fā)表于 08-22 20:04 ?2495次閱讀
    干貨分享 | TSMaster MBD<b class='flag-5'>模塊</b><b class='flag-5'>全</b><b class='flag-5'>解析</b>:<b class='flag-5'>從</b>模型搭建<b class='flag-5'>到</b>自動化測試的完整實踐

    VVIC 平臺商品詳情接口高效調用方案:簽名驗證數(shù)據(jù)解析流程

    本文詳解VVIC平臺商品詳情接口調用流程,涵蓋參數(shù)配置、簽名生成、異常處理與數(shù)據(jù)解析,提供可復用的Python代碼及避坑指南,助力開發(fā)者高效實現(xiàn)安全、穩(wěn)定的數(shù)據(jù)對接。
    的頭像 發(fā)表于 09-23 10:28 ?693次閱讀

    京東商品詳情接口實戰(zhàn)解析調用優(yōu)化商業(yè)價值挖掘(附避坑代碼

    本文深入解析京東商品詳情接口jd.union.open.goods.detail.query,涵蓋核心特性、權限限制、關鍵參數(shù)及調用避坑指南。通過實戰(zhàn)代碼演示數(shù)據(jù)采集、促銷
    的頭像 發(fā)表于 10-10 09:28 ?853次閱讀
    京東商品詳情接口實戰(zhàn)<b class='flag-5'>解析</b>:<b class='flag-5'>從</b>調用優(yōu)化<b class='flag-5'>到</b>商業(yè)價值挖掘(附避坑<b class='flag-5'>代碼</b>)

    深海連接器:原理到應用的維度解析

    深海連接器:原理到應用的維度解析 一、深海連接器的核心定義與技術基因 (一)深海環(huán)境專屬的連接解決方案 深海水密連接器是專為極端深海環(huán)境(6000 米以下高壓、-4℃~60℃溫差、
    的頭像 發(fā)表于 10-30 15:25 ?576次閱讀

    千兆室外光纜的“選型指南”——場景技術的維度解析

    選擇千兆室外光纜需綜合考慮傳輸距離、環(huán)境條件與成本,以下為關鍵選型維度維度一:傳輸距離與光纖類型 維度二:敷設方式與光纜結構 直埋敷設: 推薦型號:GYTA53(鋼帶鎧裝)、GYFTZA(非金屬
    的頭像 發(fā)表于 11-09 17:04 ?762次閱讀
    千兆室外光纜的“選型<b class='flag-5'>指南</b>”——<b class='flag-5'>從</b>場景<b class='flag-5'>到</b>技術的<b class='flag-5'>全</b><b class='flag-5'>維度</b><b class='flag-5'>解析</b>

    RK?平臺?USB?攝像頭成像調試指南信號畫質的流程優(yōu)化

    在?RK(瑞芯微)平臺開發(fā)中,USB?攝像頭成像效果不佳是高頻問題,其根源多與?USB?信號質量、PHY?寄存器配置及硬件環(huán)境相關。本文結合?Rockchip USB SQ Tool?工具,分享
    的頭像 發(fā)表于 11-26 07:05 ?822次閱讀
    RK?平臺?USB?攝像頭成像<b class='flag-5'>調試</b><b class='flag-5'>指南</b>:<b class='flag-5'>從</b>信號<b class='flag-5'>到</b>畫質的<b class='flag-5'>全</b>流程優(yōu)化

    深入解析rk平臺Android Bootloader核心代碼啟動流程AVB驗證

    下android_bootloader.c的核心代碼,帶你讀懂Android設備Bootloader內核的完整啟動邏輯,以及開發(fā)者關注這些代碼的核心價值。 一、
    的頭像 發(fā)表于 01-22 07:06 ?282次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>rk平臺Android Bootloader核心<b class='flag-5'>代碼</b>:<b class='flag-5'>從</b>啟動流程<b class='flag-5'>到</b>AVB驗證

    深入解析Rockchip SFC驅動:SPI Flash傳輸流程與問題排查指南

    Controller)驅動 (spi-rockchip-sfc.c),用于高效管理SPI Flash的讀寫傳輸。本文基于Linux內核驅動代碼Rockchip官方開發(fā)指南,
    的頭像 發(fā)表于 02-04 07:13 ?431次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b><b class='flag-5'>Rockchip</b> SFC驅動:SPI Flash傳輸流程與問題排查<b class='flag-5'>指南</b>

    深入解析Renesas E1/E20 Emulator:硬件設計與調試的全方位指南

    深入解析Renesas E1/E20 Emulator:硬件設計與調試的全方位指南 在電子設計領域,調試工具的重要性不言而喻。Renesas
    的頭像 發(fā)表于 03-03 17:30 ?1071次閱讀