瑞萨RH850 CS+环境下设置堆和栈空间
Posted 不脱发的程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瑞萨RH850 CS+环境下设置堆和栈空间相关的知识,希望对你有一定的参考价值。
目录
嵌入式软件开发离不开对堆和栈的操作。
栈由操作系统自动分配和释放 ,存放函数的参数值、局部变量的值等。通常都是被调用时处于存储空间中,调用完毕立即释放。
堆由开发者手动分配和释放, 若开发者不释放,通常程序结束时回收。
对汽车电子技术、瑞萨MCU感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~
本篇博文将讲解基于瑞萨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、设置堆空间
瑞萨官网已经介绍了堆空间,链接如下:
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 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,也就是设置的大小。
以上是关于瑞萨RH850 CS+环境下设置堆和栈空间的主要内容,如果未能解决你的问题,请参考以下文章