chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

一、模塊整體定位

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

與傳統(tǒng)的全量?jī)?nèi)存轉(zhuǎn)儲(chǔ)(如kdump)相比,minidump更輕量,只收集最關(guān)鍵的信息,適合資源有限的嵌入式設(shè)備。

二、文件功能詳解

1.構(gòu)建配置文件: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ī)則。當(dāng)內(nèi)核配置中啟用CONFIG_ROCKCHIP_MINIDUMP時(shí),將rk_minidump.o、minidump_log.o等目標(biāo)文件鏈接為rockchip_minidump.ko模塊。

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

Kconfig

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

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

2.核心數(shù)據(jù)結(jié)構(gòu):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 會(huì)轉(zhuǎn)儲(chǔ)該區(qū)域)  u32     encryption_status;    // 加密狀態(tài)  u32     encryption_required;   // 是否需要加密  u32     ss_region_count;     // 區(qū)域數(shù)量  u64     md_ss_smem_regions_baseptr;// 區(qū)域基地址(共享內(nèi)存中)  u64     elf_header;       // ELF 頭基地址  u64     elf_size;        // ELF 大小  u64     minidump_table;     // minidump 表基地址};

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

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

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

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

關(guān)鍵函數(shù):

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

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

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

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

核心邏輯:

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

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

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

關(guān)鍵功能:

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

voiddump_stack_minidump(u64 sp){ // 處理 vmalloc 堆棧(按頁(yè)拆分)或普通堆棧 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時(shí)的CPU上下文、運(yùn)行隊(duì)列、內(nèi)存信息(如md_dump_meminfo)收集。

5.內(nèi)存信息收集:minidump_memory.c

負(fù)責(zé)收集系統(tǒng)內(nèi)存相關(guān)的靜態(tài)/動(dòng)態(tài)信息,輔助分析內(nèi)存泄漏、OOM等問題。

關(guān)鍵函數(shù):

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

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

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

6. ELF輔助工具:elf.h

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

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

7.匯編輔助:rk_minidump_asm.S

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

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

三、調(diào)用關(guān)系流程圖

wKgZO2kXJXuAMdoNAAL2m2ifASA526.png

核心調(diào)用鏈

事件觸發(fā)(如panicminidump_log.c/minidump_memory.c收集數(shù)據(jù)調(diào)用rk_minidump.cadd_region/update_region更新md_ss_tocELF結(jié)構(gòu)數(shù)據(jù)寫入共享內(nèi)存。

四、終端調(diào)試方法

掌握以下調(diào)試方法,可快速驗(yàn)證minidump功能是否正常:

1.模塊加載與配置

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

1.觸發(fā)minidump測(cè)試

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

2.查看收集的信息

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

devmem0xXXXXXXXXX # 地址為md_ss_toc.md_ss_smem_regions_baseptr

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

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

1.內(nèi)核調(diào)試技巧

使用gdb結(jié)合內(nèi)核符號(hào)表(vmlinux)調(diào)試模塊函數(shù):

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

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

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

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

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

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

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

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

4.理解內(nèi)核模塊設(shè)計(jì)

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

總結(jié)

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

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

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

    關(guān)注

    5208

    文章

    20620

    瀏覽量

    336665
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    653

    瀏覽量

    35862
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4975

    瀏覽量

    74332
  • Rockchip
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    Rockchip RKDevInfoWriteTool工具及使用指南

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

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

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

    深入解析與無(wú)線通信RFIC設(shè)計(jì)與測(cè)試實(shí)用指南

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

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

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

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

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

    干貨分享 | TSMaster MBD模塊解析模型搭建自動(dòng)化測(cè)試的完整實(shí)踐

    在汽車電子MBD開發(fā)中,TSMasterMBD模塊深度集成于TSMaster先進(jìn)的總線分析、仿真與測(cè)試平臺(tái),旨在為工程師提供一套模型自動(dòng)編譯、代碼集成自動(dòng)化測(cè)試的端
    的頭像 發(fā)表于 08-22 20:04 ?2776次閱讀
    干貨分享 | 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>自動(dòng)化測(cè)試的完整實(shí)踐

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

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

    深海連接器:原理到應(yīng)用的維度解析

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

    千兆室外光纜的“選型指南”——場(chǎng)景技術(shù)的維度解析

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

    RK?平臺(tái)?USB?攝像頭成像調(diào)試指南信號(hào)畫質(zhì)的流程優(yōu)化

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

    深入解析rk平臺(tái)Android Bootloader核心代碼啟動(dòng)流程AVB驗(yàn)證

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

    深入解析Rockchip SFC驅(qū)動(dòng):SPI Flash傳輸流程與問題排查指南

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

    深入解析Renesas E1/E20 Emulator:規(guī)格調(diào)試流程

    深入解析Renesas E1/E20 Emulator:規(guī)格調(diào)試流程 在嵌入式開發(fā)領(lǐng)域,
    的頭像 發(fā)表于 03-25 11:45 ?233次閱讀

    Renesas E1/E20 仿真器使用指南規(guī)格調(diào)試解析

    Renesas E1/E20 仿真器使用指南規(guī)格調(diào)試解析 在電子工程師的日常工作中,仿真
    的頭像 發(fā)表于 03-31 15:30 ?141次閱讀