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

描述

 

 

 

客户使用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小百科】欢迎添加关注!文章转载请注明出处。


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

全部0条评论

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

×
20
完善资料,
赚取积分