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

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

3天内不再提示

如何查看程序栈的使用情况

我快闭嘴 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2022-09-06 13:10 次阅读

开发环境:CS+ for CA,CX

MCURL78系列

仿真器SF3000E1

程序的内存分配

一个由C/C++编译的程序占用的内存分为以下几个部分:

栈区(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值等。

堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。

全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。

文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。

程序代码区—存放函数体的二进制代码。

栈溢出的危害

栈溢出就是缓冲区溢出的一种。由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这些空间为缓冲区。如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就会造成缓冲区以外的存储单元被改写,这种现象就称为缓冲区溢出。缓冲区长度一般与用户自己定义的缓冲变量的类型有关。

如何查看程序栈的使用情况

针对瑞萨的RL78系列MCU去查看代码中使用了多少栈空间,可以按照如下步骤进行操作。

步骤一

请参照图1,打开CA78K0R(Build Tool)-->Compile options-->Debug Information选择Yes(Add to both assembly and object file)(-g2)

de0856d0-2d99-11ed-ba43-dac502259ad0.png

图1

步骤二

请参照图2,打开CA78K0R(Build Tool)-->Compile options-->Assembly file选择Yes(With no C source info)(-a)。

de2dd32e-2d99-11ed-ba43-dac502259ad0.png

图2

步骤三

请参照图3,将工程项目进行编译。

de567748-2d99-11ed-ba43-dac502259ad0.png

图3

步骤四

请参照图4,打开Tool-->Startup Stack Usage Tracer,打开后会弹出如图5和图6的窗口。会显示我们每个源文件与每个函数所占用的栈空间大小。

de7d13da-2d99-11ed-ba43-dac502259ad0.png

图4

dea68a76-2d99-11ed-ba43-dac502259ad0.png

图5

dec094b6-2d99-11ed-ba43-dac502259ad0.png

图6

如图6栈空间使用情况例子说明

main函数使用的占空间为18个字节,计算是根据其调用的所有的函数的占空间使用的总和。其中调用的各个函数R_FDL_Write用到8个字节栈空间,R_FDL_Write用到8个字节栈空间,以及所有可以中断的栈空间。

dedb515c-2d99-11ed-ba43-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    146

    文章

    16019

    浏览量

    343657
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79548
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48624

原文标题:CS+ for CA,CX查看RL78程序栈的使用

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问TC397如何查看RAM和pFlash的使用情况

    请问 TC397 如何查看 RAM 和 pFlash 的使用情况
    发表于 01-19 06:37

    rtthread编译后如何查看堆栈空间使用情况

    rtthread编译后如何查看堆栈空间使用情况,现在只能在编译完成后看到总大小,有没有办法能看到详细的使用情况。 由于RAM只有128K,除去内存池32k,想看看剩余的RAM在哪用了
    发表于 03-05 07:58

    CUBEIDE运行完可以看RAM的使用情况,运行中可以实时查看RAM的使用情况吗?

    CUBEIDE运行完可以看RAM的使用情况,运行中可以实时查看RAM的使用情况吗?以及负载情况? 图片是运行完可以看RAM使用情况,是否可
    发表于 03-12 07:56

    linux的系统内存使用情况查看

    通过free命令可以查看系统内存使用情况
    发表于 07-15 06:43

    linux的端口占用情况怎么查看

    1、lsof -i:端口号list open files用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000
    发表于 07-18 06:05

    如何查看RAM使用情况

    嗨, 我正在使用STM32L053 Nucleo,我已经为它运行了一些代码,我希望做一个RAM估计来查看当前固件的RAM使用情况。如何查看RAM使用情况? 问候#记忆
    发表于 08-05 10:08

    STM32H7的FLASH,RAM和使用情况

    第10章 STM32H7的FLASH,RAM和使用情况(map和htm文件)本章为大家介绍编译器生成的map和htm文件进行解析,通过这两个文件可以让大家对工程代码的认识程度提升一个档次。10.1 初学者重要提示10...
    发表于 08-03 06:18

    怎样使用Windows自带的东西查看电源使用情况

    这里使用Windows自带的东西查看电源使用情况。1.按Win键+R,输入cmd,回车。2.输入Powercfg /batteryreport回车。3.根据提示找到电池报告文件,双击打开即可。 ...
    发表于 12-27 08:08

    如何检查imx6中的GPU使用情况

    在板上运行 Qt6 应用程序,想观察该 Qt6 应用程序对 GPU 的使用情况。 如何检查应用程序的 GPU 使用情况或该应用
    发表于 05-22 07:04

    SoC如何查看内存使用情况

    查看系统内存: free -h 查看ION内存 NPU内存使用情况: cat /sys/kernel/debug/ion/bm_npu_heap_dump/summary | head -2VPU
    发表于 09-19 07:23

    主流GPS芯片使用情况

    主流GPS芯片使用情况
    发表于 11-27 14:34 13次下载

    Linux文件缓存使用情况和命中率查看的工具详细概述

    这里总结几个Linux文件缓存(page cache)使用情况、命中率查看的工具。
    的头像 发表于 06-18 17:51 8614次阅读
    Linux文件缓存<b class='flag-5'>使用情况</b>和命中率<b class='flag-5'>查看</b>的工具详细概述

    在Linux系统下使用top命令查看CPU使用情况

    在Linux系统下,使用top命令查看CPU使用情况
    发表于 07-10 11:46 3935次阅读
    在Linux系统下使用top命令<b class='flag-5'>查看</b>CPU<b class='flag-5'>使用情况</b>

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情况

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情况
    发表于 12-02 09:06 12次下载
    STM32/KEIL/MDK <b class='flag-5'>查看</b> FLASH 和 RAM <b class='flag-5'>使用情况</b>

    Windows查看电源使用情况

    这里使用Windows自带的东西查看电源使用情况。1.按Win键+R,输入cmd,回车。2.输入Powercfg /batteryreport回车。3.根据提示找到电池报告文件,双击打开即可。    ...
    发表于 01-05 14:18 0次下载
    Windows<b class='flag-5'>查看</b>电源<b class='flag-5'>使用情况</b>