CS+ for CC环境如何设置RH850 MCU堆和栈的空间?

电子说

1.3w人已加入

描述

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

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

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

操作系统

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

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

设置堆空间

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

操作系统

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

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

#include #define SIZEOF_HEAP 0x200 int _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,也就是设置的大小。





审核编辑:刘清

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分