問(wèn)題概述
客戶使用IDE CS+ CCRL編譯瑞薩RL78系列MCU R5F1027A(flash空間16K),出現(xiàn)報(bào)錯(cuò)信息,“data”地址超出范圍。而實(shí)際使用的flash約8K,還不到16K。R5F1027A項(xiàng)目使用的code flash約8K,一旦添加新代碼就出現(xiàn)編譯錯(cuò)誤信息,提示地址溢出的錯(cuò)誤?


分析
1
針對(duì)提示的錯(cuò)誤信息,嘗試屏蔽不同的軟件函數(shù),發(fā)現(xiàn)減少軟件代碼,編譯恢復(fù)正常。
2
多次嘗試后發(fā)現(xiàn)flash空間在超過(guò)8K左右后,會(huì)出現(xiàn)編譯錯(cuò)誤。
3
查看項(xiàng)目生成的MOT文件。發(fā)現(xiàn)code flash地址直接從0x2000開(kāi)始,前面的0x00C4選項(xiàng)字節(jié)之后到0x2000 的flash空間都是沒(méi)有使用到。

4
查看map文件,和mot文件相符合,.CONST 代碼段是從0x2000開(kāi)始分配的,也就是代碼段前面的flash空間有將近8K沒(méi)用上。

5
分析確認(rèn)到原因后,多次嘗試修改section settings。參考RL78其他型號(hào)code flash 8K的R5F10268的CS+ CCRL工程設(shè)置,發(fā)現(xiàn).const分配的地址是從0x00CE開(kāi)始。而R5F1027A的工程默認(rèn)從0x2000開(kāi)始,所以想把.const直接從0x2000改成0x00CE,一直提示不符合設(shè)置范圍的錯(cuò)誤。最后把.const分配的地址放到后面改成0x3C00,其他代碼段.text則按順序從0x00D0開(kāi)始,這樣設(shè)置后,編譯成功了。


6
以上設(shè)置過(guò)后代碼重新編譯ok,也從0x00D0開(kāi)始,但是當(dāng)設(shè)置開(kāi)啟On-chip在線仿真功能后,發(fā)現(xiàn)報(bào)監(jiān)控字節(jié)的錯(cuò)誤。

7
查看數(shù)據(jù)手冊(cè)發(fā)現(xiàn),debug監(jiān)控字節(jié)會(huì)占用10個(gè)字節(jié),從0x00CE開(kāi)始到0x00D8.

8
把代碼段.text地址從0x00D0修改成0x00E0開(kāi)始后,重新編譯正常了。查看MAP文件和mot文件,地址也是符合的,從0x00E0開(kāi)始分配。


總結(jié)
通過(guò)查看分析MAP文件和mot文件,定位到.CONST 代碼段是從0x2000開(kāi)始分配的,導(dǎo)致代碼段前面的flash空間有將近8K沒(méi)用上,最終通過(guò)修改設(shè)置代碼段地址,問(wèn)題得到解決。
審核編輯:劉清
-
mcu
+關(guān)注
關(guān)注
147文章
18443瀏覽量
381137 -
FlaSh
+關(guān)注
關(guān)注
10文章
1702瀏覽量
154282
發(fā)布評(píng)論請(qǐng)先 登錄
CS+ Code Generator Tool 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 API Reference[CS+ for CA,CX][CS+ for CC]
CS+ V6.01.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V6.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V5.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V4.01.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V4.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V3.02.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ Code Generator Tool 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 API Reference[CS+ for CA,CX][CS+ for CC]
CS+ V6.01.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V6.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V5.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V4.01.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V4.00.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
CS+ V3.02.00 集成開(kāi)發(fā)環(huán)境 用戶手冊(cè): RL78 Debug Tool[CS+ for CC]
使用CS+ CACX編譯RL78系列MCU出現(xiàn)flash空置0XFF錯(cuò)誤問(wèn)題

使用CS+ CCRL編譯RL78系列MCU引起flash空間浪費(fèi)的錯(cuò)誤問(wèn)題解析
評(píng)論