瑞萨编译器内存分配

瑞萨编译器CA78K0R内存分配函数RAM区设置

  1. 瑞萨的内存分配(用户自主分配)
    在瑞萨编译器CA78K0R中也能使用C语言的标准库,具体可查找help –> coding -> FUNCTION SPECIFICATIONS查看。所以C语言的内存分配函数molloc\calloc可使用,在<stdlib.h>头文件中。使用完之后需使用free函数释放内存。
  2. 内存分配函数的RAM区分配
    瑞萨编译器指定一块RAM区为内存分配函数使用,如molloc、calloc函数分配的内存只能在此区域中分配,故使用此两个函数分配内存建立的链表只能在指定的RAM区。
    编译器在单片机的启动文件里面没分配了这个区域的大小,在编译器的安装目录C:\Program Files (x86)\Renesas Electronics\CS+\CACX\CA78K0R\V1.71\Src\cc78k0r\src 下,需要修改cstart.asm文件,修改下图所示数据:

图1 修改cstart.asm文件
memtop区大小设置
原来默认MEMTOP区是32,即分配的区域只有32个字节,此数可改为用户需要的数值,但是需在RAM区允许的范围内。
修改保存之后,关闭编译选项Compile Options ->Startup ->use standard startup routine的选项。再在Startup下添加cstart.asm文件。如下图所示:

图2 添加文件
添加文件
此时编译器的启动路径设置如下
图3 编译器选项
在这里插入图片描述
可在编译后生成的.sym文件中看到MEMTOP区的分配地址:
图4 MEMTOP区地址分配
在这里插入图片描述
注:
1.如果需要使用默认的启动文件路径,需要从工程中移除添加的cstart.asm文件,在改变编译器设置。否则编译器可能会报错。
2.问题来源是在使用瑞萨单片机时,生成链表,发现生成的链表数量远远小于预期所发现。果然一般情况下,如没有特殊原因,单片机还是老老实实使用数组吧,工程运用中单片机还是追求“稳”字诀。当然个人爱好的话碰到问题一定要深究,越是困难就越有发掘的价值,或许这就是个人提升的契机。

以上若有不足,敬请指出!!!

猜你喜欢

转载自blog.csdn.net/qq_36439722/article/details/105087033
今日推荐