客户使用IDE CS+ CACX编译瑞萨RL78系列MCU R5F1027A,出现报错信息,code flash无法分配。而实际使用的flash 约10K还远不到16K。为什么R5F1027A(flash空间16K)使用的code flash不到16K就出现添加新代码后编译,提示无法分配的错误?

分析
1、经过排查没有对IDE编译环境CS+ CACX做特殊的设置,在项目代码比较少的情况下,编译也正常。
2、针对提示的错误信息,尝试屏蔽不同的软件函数,发现需要减少较多的软件代码,编译才恢复正常。
3、多次尝试后发现flash空间在超过8K左右后,会出现编译错误。
4、查看项目的HEX文件。发现flash地址从0x0C57,到0x1FFF的空间都是填充的FF,也就是这段flash空间没有使用到。

5、查看map文件,发现和HEX文件相吻合,@@CODEL代码flash段是从0x20C6开始分配的,也就是代码段分配在16K空间的后面8K。这样前面的flash空间有13A9字节,将近5K没用上。


6、分析确认到原因后,要想办法解决,多次尝试无果,再分析map文件。发现分配的代码段@@CODEL,从0x20C6开始是跟@@CNST 这个常量的段是相邻的。
7、想办法尝试改变@@CNST的地址分配,看看@@CNST的地址改变,是否会影响@@ CODEL代码段的地址分配。
8、把@@CNST这个常量的段,通过添加DR文件,设置到后面地址0x3C00后,发现编译正常了。

结论
查看生成的HEX文件,发现前面的flash空间0x0C57也用上了,问题得到解决。
通过和同事交流,以及多番查阅IDE的HELP文档,分析了解各个代码段@@XXXX的含义,解决了客户端遇到的问题。


原文标题:使用CS+ CACX编译RL78系列MCU出现flash空置0XFF错误问题
文章出处:【微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
-
mcu
+关注
关注
147文章
18604浏览量
386855 -
瑞萨
+关注
关注
36文章
22429浏览量
89740
发布评论请先 登录
把qspi0配置成了普通的fifo模式,读什么都返回0xff,这是怎么回事?
下载模式的切换之后,会出现编译错误的解决办法
MCU片上Flash
AD7771 SPI读出内部寄存器全是0xFF的原因?
通过Boot swap实现瑞萨RL78/F24 MCU固件升级
芯海科技推出全新CS8M321与CS8M326系列经济型MCU
ADS1115第八位读取值一直都是0xFF,是什么原因?
芯海科技CS8M321/326系列经济型MCU全新上市

使用CS+ CACX编译RL78系列MCU出现flash空置0XFF错误问题
评论