写点什么

瑞萨 RH850 CS+ 环境下设置堆和栈空间

  • 2023-02-14
    北京
  • 本文字数:730 字

    阅读完需:约 2 分钟

瑞萨RH850 CS+环境下设置堆和栈空间

嵌入式软件开发离不开对堆和栈的操作。

栈由操作系统自动分配和释放 ,存放函数的参数值、局部变量的值等。通常都是被调用时处于存储空间中,调用完毕立即释放;

堆由开发者手动分配和释放, 若开发者不释放,通常程序结束时回收。

汽车电子技术、瑞萨 MCU 感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~

本篇博文将讲解基于瑞萨 IDE:CS+ for CC 环境如何设置 RH850 MCU 堆和栈的空间。

RH850集成环境用户手册-嵌入式文档类资源

1、设置栈空间

打开 cstart.asm,找到 STACKSIZE,如下图所示:

​其中 0X200 即为栈的大小即 512Bytes。

​点击编译工程,生成 map 文件,查看栈 size,正好是 0X200,如下图所示:

​修改代码,设置栈 size 为 0X400,如下所示:

STACKSIZE	.set	0x400	.section	".stack.bss", bss	.align	4	.ds	(STACKSIZE)	.align	4_stacktop:
复制代码

点击编译工程,生成 map 文件,查看栈 size,正好是 0X400,如下图所示:


​2、设置堆空间

瑞萨官网已经介绍了堆空间,链接如下:

malloc | CS+ V4.01.00 (renesas.com)

Increase Heap Memory - Forum - RL78 MCU - Renesas Community

在 map 文件中可以查看到堆空间大小,如下图所示:

​bss 起始地址:0xFEDD6130 ,bss 结束地址:0xFEDD61F7,size:0xc8,align:4。

设置堆 size 为 0X200,代码如下所示:

#include <stddef.h>#define SIZEOF_HEAP  0x200int _REL_sysheap[SIZEOF_HEAP>>2];size_t _REL_sizeof_sysheap = SIZEOF_HEAP;
复制代码

将代码放置到 main.c 文件中,如下图所示:

​点击编译工程,生成 map 文件,查看堆 size,如下图所示:

​bss 起始地址:0xFEDD6134 ,bss 结束地址:0xFEDD63FB,size:0x2C8,align:4。

bss 空间增量:0x2C8 - 0xC8 = 0X200,也就是设置的大小。

发布于: 刚刚阅读数: 4
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018-02-09 加入

嵌入式工程师,创客爱好者,公众号:美男子玩编程,全网粉丝10万+。 CSDN博客专家、微软IoT领域MVP、华为云云享专家、阿里云专家博主、知乎认证科学技术领域答主。

评论

发布
暂无评论
瑞萨RH850 CS+环境下设置堆和栈空间_嵌入式_不脱发的程序猿_InfoQ写作社区