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

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

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

如何使用SystemView的堆監(jiān)控功能

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 2024-08-09 18:07 ? 次閱讀

SystemView能夠監(jiān)視應(yīng)用程序如何使用動(dòng)態(tài)存儲(chǔ)。這意味著,如果應(yīng)用程序中使用了C或C++堆、自定義堆或RTOS提供的內(nèi)存池對(duì)象,我們可以跟蹤這些對(duì)象的使用情況。SystemView可以在一個(gè)應(yīng)用中監(jiān)視所有堆,分析它們的使用情況,并展示收集到的信息,使用戶能夠查看堆的負(fù)載情況,發(fā)現(xiàn)潛在的內(nèi)存泄漏,跟蹤內(nèi)存使用峰值等等。

本文檔將展示如何以最少干擾的方式調(diào)整現(xiàn)有代碼來使用SystemView的heap功能。

初始化SystemView

調(diào)用SEGGER_SYSVIEW_Init()函數(shù)執(zhí)行初始化工作。在示例中,它由SEGGER_SYSVIEW_Conf()函數(shù)調(diào)用,該函數(shù)位于HW初始化OS_InitHW()函數(shù)中。

SystemView Heap API

為了向SystemView提供heap使用數(shù)據(jù),需使用以下API:

1、SEGGER_SYSVIEW_HeapDefine

描述heap內(nèi)部組織結(jié)構(gòu)。在嵌入式系統(tǒng)中,heap有多種不同的組織方式,因此需使用此函數(shù)來提供使用的heap內(nèi)存的具體信息??赡苄枰榭存溄悠髂_本文件并使用它定義的一些符號(hào) (例如示例項(xiàng)目中的__heap_start__和__heap_size__)。這個(gè)函數(shù)必須在使用SystemView堆API之前調(diào)用。

2、SEGGER_SYSVIEW_HeapAlloc

該函數(shù)應(yīng)該在每次分配完成時(shí)調(diào)用。請(qǐng)記住,提供的內(nèi)部分配塊通常大于用戶請(qǐng)求的塊。

3、SEGGER_SYSVIEW_HeapFree

該函數(shù)應(yīng)該在每次釋放內(nèi)存時(shí)調(diào)用。

因此,這些API必須伴隨著對(duì)應(yīng)的堆管理函數(shù)調(diào)用,如C標(biāo)準(zhǔn)庫的heap函數(shù)malloc、realloc和free的情況,如何在現(xiàn)有項(xiàng)目中最有效地做到這一點(diǎn),而不是根據(jù)這些信息從頭開始創(chuàng)建項(xiàng)目?

heap函數(shù)的鏈接器封裝

已有項(xiàng)目可能已經(jīng)在代碼的引用了C標(biāo)準(zhǔn)庫函數(shù)。如果使用傳統(tǒng)的編程方法,調(diào)用對(duì)應(yīng)的SystemView API,用戶需為這些調(diào)用引入封裝來大幅更改現(xiàn)有代碼,并用它替換代碼中對(duì)stdlib heap函數(shù)的引用。幸運(yùn)的是,SEGGER鏈接器為鏈接器符號(hào)提供了通用的封裝功能。通過命令--wrap,鏈接器將把現(xiàn)有定義重命名為__real_,并將對(duì)函數(shù)的調(diào)用解析為__wrap_。然后,用戶可以定義__wrap_malloc、__wrap_realloc和__wrap_free函數(shù),這些函數(shù)將調(diào)用__real_malloc、__real_realloc和__real_free,并伴隨著對(duì)SEGGER_SYSVIEW_HeapAlloc和SEGGER_SYSVIEW_HeapFree的相應(yīng)調(diào)用。

通過在Embedded Studio工程配置中Project Options/Linker/Additional Linker Options對(duì)話框中添加以下幾行,輕松調(diào)用鏈接器封裝功能:

wKgaoma16nCARq71AACySAE7Qes389.png

示例項(xiàng)目代碼基于embOS實(shí)時(shí)操作系統(tǒng),創(chuàng)建了三個(gè)任務(wù),任務(wù)實(shí)現(xiàn)中使用標(biāo)準(zhǔn)的C heap功能,執(zhí)行一些隨機(jī)分配和相應(yīng)的釋放。由于鏈接器封裝功能,這些調(diào)用也將產(chǎn)生對(duì)SystemView heap API的調(diào)用,向SystemView應(yīng)用程序發(fā)送必要的信息。

wKgZoma16ouABqZQAAf-BRi_xMQ612.png

SystemView是面向嵌入式系統(tǒng)實(shí)時(shí)記錄、可視化和分析工具,可以監(jiān)控應(yīng)用程序如何使用動(dòng)態(tài)存儲(chǔ),直觀地呈現(xiàn)內(nèi)存已分配但未釋放的使用信息。

在許多情況下,可以在應(yīng)用程序的生命周期內(nèi)分配內(nèi)存,而不會(huì)出現(xiàn)問題。當(dāng)heap的峰值負(fù)載隨著時(shí)間的推移而增加時(shí),應(yīng)用程序可能會(huì)泄漏內(nèi)存。使用SystemView的堆監(jiān)視器,可以很容易地看到這些更改和分配的位置,從而提供有關(guān)泄漏可能在哪里的線索。動(dòng)態(tài)存儲(chǔ)在嵌入式系統(tǒng)中的應(yīng)用越來越廣泛,有了SystemView,監(jiān)控和管理動(dòng)態(tài)存儲(chǔ)已經(jīng)從不可避免的事情變成了可管理的事情。

麥克泰公司代理SEGGER全線產(chǎn)品,具有豐富的RTOS分析軟件與調(diào)試工具使用方面的知識(shí)和經(jīng)驗(yàn),歡迎咨詢。

聲明:本文內(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)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2966

    瀏覽量

    73812
  • SystemView
    +關(guān)注

    關(guān)注

    5

    文章

    50

    瀏覽量

    24481
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2100

    瀏覽量

    73453

原文標(biāo)題:如何使用SystemView的堆監(jiān)控功能

文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    rtthread 5.20安裝systemview 2.52a出錯(cuò)的原因?

    在 SEGGER_SYSVIEW_RTThread.c中 Info.sName = thread->name; 提示 packages/SystemView
    發(fā)表于 07-12 09:36

    如何在項(xiàng)目中使用RTOS分析工具SystemView

    。因此RTOS應(yīng)用的實(shí)時(shí)行為對(duì)于開發(fā)者而言并不是非常直觀的,此時(shí)就可以用到SystemView這樣的RTOS可視化分析工具來幫助分析應(yīng)用的實(shí)際執(zhí)行過程。SystemView是SEGGER公司開發(fā)
    發(fā)表于 07-05 14:00

    使用systemview監(jiān)控的ISR具體對(duì)應(yīng)哪個(gè)中斷

    使用systemview監(jiān)控,mcu是stm32f429,監(jiān)控中有些中斷:ISR 35, ISR 36, ISR 53等等。具體對(duì)應(yīng)哪個(gè)中斷,怎么查?
    發(fā)表于 10-14 10:50

    RT-Thread nano版本可以使用systemview么?

    RT-Thread nano版本可以使用systemview么?
    發(fā)表于 10-20 10:30

    如何使用RT-Thread上的SystemView分析工具

    本文的目的和結(jié)構(gòu)本文的目的和背景隨著 MCU 的性能越來越強(qiáng),嵌入式產(chǎn)品的功能越來越復(fù)雜,對(duì)于系統(tǒng)的調(diào)試和分析提出了新挑戰(zhàn),調(diào)試某個(gè)功能或問題通常需要花費(fèi)大量精力,SystemView 是一款幫助
    發(fā)表于 10-26 15:38

    SystemView在通信專業(yè)教學(xué)中的主要應(yīng)用途徑

    • 多媒體教學(xué)• 交互式教案• 仿真實(shí)驗(yàn)室• 科研項(xiàng)目預(yù)研和系統(tǒng)驗(yàn)證一、高校通信專業(yè)教學(xué)面臨的挑戰(zhàn)二、SystemView基本功能及應(yīng)用庫三、SystemView
    發(fā)表于 08-05 14:44 ?25次下載
    <b class='flag-5'>SystemView</b>在通信專業(yè)教學(xué)中的主要應(yīng)用途徑

    SystemView系統(tǒng)仿真軟件在通信專業(yè)教學(xué)中的應(yīng)用

    一、高校通信專業(yè)教學(xué)面臨的挑戰(zhàn)二、SystemView基本功能及應(yīng)用庫三、SystemView仿真綜合實(shí)驗(yàn)室的優(yōu)勢(shì)四、SystemView完成的實(shí)驗(yàn)科目簡介近十年來,隨著通信技術(shù)的發(fā)展
    發(fā)表于 08-06 11:51 ?33次下載

    SystemView仿真軟件的應(yīng)用

    SystemView仿真軟件的應(yīng)用:利用系統(tǒng)設(shè)計(jì)、分析和仿真的可視化開發(fā)環(huán)境—SystemView 軟件平臺(tái)進(jìn)行通信原理課程教學(xué), 對(duì)SystemView 仿真軟件進(jìn)行了簡要的介紹.并以2DPSK的調(diào)制解調(diào)原理為
    發(fā)表于 09-29 11:43 ?101次下載

    課程設(shè)計(jì)中SystemView的應(yīng)用

    本文研究SystemView 在《通信原理》課程設(shè)計(jì)中的仿真應(yīng)用。通過對(duì)MSK 的實(shí)際仿真分析,顯示了SystemView強(qiáng)大的仿真功能,在教學(xué)中起到事半功倍的效果。
    發(fā)表于 12-20 17:10 ?106次下載
    課程設(shè)計(jì)中<b class='flag-5'>SystemView</b>的應(yīng)用

    基于SystemView的接收信號(hào)中載波的提取

    對(duì)SystemView仿真軟件進(jìn)行了簡要的介紹,并在此基礎(chǔ)上完成了對(duì)通信系統(tǒng)原理的仿真。結(jié)果表明,通過用SystemView軟件仿真,方便地得到所設(shè)計(jì)電路的輸出結(jié)果與分析波形。
    發(fā)表于 02-06 16:36 ?94次下載
    基于<b class='flag-5'>SystemView</b>的接收信號(hào)中載波的提取

    基于SystemView的PCM通信系統(tǒng)仿真

    基于SystemView的PCM通信系統(tǒng)仿真(測(cè)試測(cè)量儀器銷售經(jīng)理)-該文檔為基于SystemView的PCM通信系統(tǒng)仿真講解文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,,,,,
    發(fā)表于 09-30 11:55 ?26次下載
    基于<b class='flag-5'>SystemView</b>的PCM通信系統(tǒng)仿真

    基于SystemVieW的多路載波通信系統(tǒng)仿真

    基于SystemVieW的多路載波通信系統(tǒng)仿真(依工測(cè)試測(cè)量儀器)-該文檔為基于SystemVieW的多路載波通信系統(tǒng)仿真講解文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,,,,,
    發(fā)表于 09-30 12:11 ?31次下載
    基于<b class='flag-5'>SystemVieW</b>的多路載波通信系統(tǒng)仿真

    基于Systemview的脈沖編碼調(diào)制系統(tǒng)仿真

    基于Systemview的脈沖編碼調(diào)制系統(tǒng)仿真(測(cè)試測(cè)量儀器設(shè)備)-該文檔為基于Systemview的脈沖編碼調(diào)制系統(tǒng)仿真講解文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,,,,,
    發(fā)表于 09-30 12:14 ?16次下載
    基于<b class='flag-5'>Systemview</b>的脈沖編碼調(diào)制系統(tǒng)仿真

    Systemview實(shí)現(xiàn)對(duì)QPSK系統(tǒng)的仿真與分析

    Systemview實(shí)現(xiàn)對(duì)QPSK系統(tǒng)的仿真與分析(測(cè)試測(cè)量計(jì)量的區(qū)別)-該文檔為用Systemview實(shí)現(xiàn)對(duì)QPSK系統(tǒng)的仿真與分析講解文檔Systemview 是一種基于 windows 平臺(tái)
    發(fā)表于 09-30 12:16 ?11次下載
    用<b class='flag-5'>Systemview</b>實(shí)現(xiàn)對(duì)QPSK系統(tǒng)的仿真與分析

    SEGGER的SystemView增加了監(jiān)控

    SystemView是SEGGER用于嵌入式系統(tǒng)的實(shí)時(shí)記錄、可視化和分析工具,現(xiàn)在可以監(jiān)控應(yīng)用程序如何使用動(dòng)態(tài)存儲(chǔ)器。
    的頭像 發(fā)表于 05-09 11:17 ?1193次閱讀