0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用SystemView的堆监控功能

麦克泰技术 来源:麦克泰技术 2024-08-09 18:07 次阅读

SystemView能够监视应用程序如何使用动态存储。这意味着,如果应用程序中使用了C或C++堆、自定义堆或RTOS提供的内存池对象,我们可以跟踪这些对象的使用情况。SystemView可以在一个应用中监视所有堆,分析它们的使用情况,并展示收集到的信息,使用户能够查看堆的负载情况,发现潜在的内存泄漏,跟踪内存使用峰值等等。

本文档将展示如何以最少干扰的方式调整现有代码来使用SystemView的heap功能。

初始化SystemView

调用SEGGER_SYSVIEW_Init()函数执行初始化工作。在示例中,它由SEGGER_SYSVIEW_Conf()函数调用,该函数位于HW初始化OS_InitHW()函数中。

SystemView Heap API

为了向SystemView提供heap使用数据,需使用以下API:

1、SEGGER_SYSVIEW_HeapDefine

描述heap内部组织结构。在嵌入式系统中,heap有多种不同的组织方式,因此需使用此函数来提供使用的heap内存的具体信息。可能需要查看链接器脚本文件并使用它定义的一些符号 (例如示例项目中的__heap_start__和__heap_size__)。这个函数必须在使用SystemView堆API之前调用。

2、SEGGER_SYSVIEW_HeapAlloc

该函数应该在每次分配完成时调用。请记住,提供的内部分配块通常大于用户请求的块。

3、SEGGER_SYSVIEW_HeapFree

该函数应该在每次释放内存时调用。

因此,这些API必须伴随着对应的堆管理函数调用,如C标准库的heap函数malloc、realloc和free的情况,如何在现有项目中最有效地做到这一点,而不是根据这些信息从头开始创建项目?

heap函数的链接器封装

已有项目可能已经在代码的引用了C标准库函数。如果使用传统的编程方法,调用对应的SystemView API,用户需为这些调用引入封装来大幅更改现有代码,并用它替换代码中对stdlib heap函数的引用。幸运的是,SEGGER链接器为链接器符号提供了通用的封装功能。通过命令--wrap,链接器将把现有定义重命名为__real_,并将对函数的调用解析为__wrap_。然后,用户可以定义__wrap_malloc、__wrap_realloc和__wrap_free函数,这些函数将调用__real_malloc、__real_realloc和__real_free,并伴随着对SEGGER_SYSVIEW_HeapAlloc和SEGGER_SYSVIEW_HeapFree的相应调用。

通过在Embedded Studio工程配置中Project Options/Linker/Additional Linker Options对话框中添加以下几行,轻松调用链接器封装功能:

wKgaoma16nCARq71AACySAE7Qes389.png

示例项目代码基于embOS实时操作系统,创建了三个任务,任务实现中使用标准的C heap功能,执行一些随机分配和相应的释放。由于链接器封装功能,这些调用也将产生对SystemView heap API的调用,向SystemView应用程序发送必要的信息。

wKgZoma16ouABqZQAAf-BRi_xMQ612.png

SystemView是面向嵌入式系统实时记录、可视化和分析工具,可以监控应用程序如何使用动态存储,直观地呈现内存已分配但未释放的使用信息。

在许多情况下,可以在应用程序的生命周期内分配内存,而不会出现问题。当heap的峰值负载随着时间的推移而增加时,应用程序可能会泄漏内存。使用SystemView的堆监视器,可以很容易地看到这些更改和分配的位置,从而提供有关泄漏可能在哪里的线索。动态存储在嵌入式系统中的应用越来越广泛,有了SystemView,监控和管理动态存储已经从不可避免的事情变成了可管理的事情。

麦克泰公司代理SEGGER全线产品,具有丰富的RTOS分析软件与调试工具使用方面的知识和经验,欢迎咨询。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2909

    浏览量

    73580
  • SystemView
    +关注

    关注

    5

    文章

    49

    浏览量

    24449
  • 函数
    +关注

    关注

    3

    文章

    4240

    浏览量

    62008
  • C++
    C++
    +关注

    关注

    21

    文章

    2085

    浏览量

    73320

原文标题:如何使用SystemView的堆监控功能

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    rtthread 5.20安装systemview 2.52a出错的原因?

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

    使用systemview监控的ISR具体对应哪个中断

    使用systemview监控,mcu是stm32f429,监控中有些中断:ISR 35, ISR 36, ISR 53等等。具体对应哪个中断,怎么查?
    发表于 10-14 10:50

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

    RT-Thread nano版本可以使用systemview么?
    发表于 10-20 10:30

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

    本文的目的和结构本文的目的和背景随着 MCU 的性能越来越强,嵌入式产品的功能越来越复杂,对于系统的调试和分析提出了新挑战,调试某个功能或问题通常需要花费大量精力,SystemView 是一款帮助
    发表于 10-26 15:38

    SystemView在通信专业教学中的主要应用途径

    • 多媒体教学• 交互式教案• 仿真实验室• 科研项目预研和系统验证一、高校通信专业教学面临的挑战二、SystemView基本功能及应用库三、SystemView
    发表于 08-05 14:44 25次下载
    <b class='flag-5'>SystemView</b>在通信专业教学中的主要应用途径

    SystemView系统仿真软件在通信专业教学中的应用

    一、高校通信专业教学面临的挑战二、SystemView基本功能及应用库三、SystemView仿真综合实验室的优势四、SystemView完成的实验科目简介近十年来,随着通信技术的发展
    发表于 08-06 11:51 33次下载

    SystemView仿真软件的应用

    SystemView仿真软件的应用:利用系统设计、分析和仿真的可视化开发环境—SystemView 软件平台进行通信原理课程教学, 对SystemView 仿真软件进行了简要的介绍.并以2DPSK的调制解调原理为
    发表于 09-29 11:43 101次下载

    课程设计中SystemView的应用

    本文研究SystemView 在《通信原理》课程设计中的仿真应用。通过对MSK 的实际仿真分析,显示了SystemView强大的仿真功能,在教学中起到事半功倍的效果。
    发表于 12-20 17:10 106次下载
    课程设计中<b class='flag-5'>SystemView</b>的应用

    基于SystemView的接收信号中载波的提取

    SystemView仿真软件进行了简要的介绍,并在此基础上完成了对通信系统原理的仿真。结果表明,通过用SystemView软件仿真,方便地得到所设计电路的输出结果与分析波形。
    发表于 02-06 16:36 94次下载
    基于<b class='flag-5'>SystemView</b>的接收信号中载波的提取

    基于SystemView的PCM通信系统仿真

    基于SystemView的PCM通信系统仿真(测试测量仪器销售经理)-该文档为基于SystemView的PCM通信系统仿真讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-30 11:55 26次下载
    基于<b class='flag-5'>SystemView</b>的PCM通信系统仿真

    基于SystemView的串行MSK调制与解调的仿真研究

    基于SystemView的串行MSK调制与解调的仿真研究(测试测量 热点)-该文档为基于SystemView的串行MSK调制与解调的仿真研究讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-30 12:01 20次下载
    基于<b class='flag-5'>SystemView</b>的串行MSK调制与解调的仿真研究

    基于SystemVieW的多路载波通信系统仿真

    基于SystemVieW的多路载波通信系统仿真(依工测试测量仪器)-该文档为基于SystemVieW的多路载波通信系统仿真讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-30 12:11 31次下载
    基于<b class='flag-5'>SystemVieW</b>的多路载波通信系统仿真

    基于Systemview的脉冲编码调制系统仿真

    基于Systemview的脉冲编码调制系统仿真(测试测量仪器设备)-该文档为基于Systemview的脉冲编码调制系统仿真讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-30 12:14 16次下载
    基于<b class='flag-5'>Systemview</b>的脉冲编码调制系统仿真

    Systemview实现对QPSK系统的仿真与分析

    Systemview实现对QPSK系统的仿真与分析(测试测量计量的区别)-该文档为用Systemview实现对QPSK系统的仿真与分析讲解文档Systemview 是一种基于 windows 平台
    发表于 09-30 12:16 11次下载
    用<b class='flag-5'>Systemview</b>实现对QPSK系统的仿真与分析

    SEGGER的SystemView增加了监控

    SystemView是SEGGER用于嵌入式系统的实时记录、可视化和分析工具,现在可以监控应用程序如何使用动态存储器。
    的头像 发表于 05-09 11:17 1135次阅读