問題概述
客戶使用IDE CS+ CCRL編譯瑞薩RL78系列MCU R5F1027A(flash空間16K),出現報錯信息,“data”地址超出范圍。而實際使用的flash約8K,還不到16K。R5F1027A項目使用的code flash約8K,一旦添加新代碼就出現編譯錯誤信息,提示地址溢出的錯誤?
分析
1
針對提示的錯誤信息,嘗試屏蔽不同的軟件函數,發現減少軟件代碼,編譯恢復正常。
2
多次嘗試后發現flash空間在超過8K左右后,會出現編譯錯誤。
3
查看項目生成的MOT文件。發現code flash地址直接從0x2000開始,前面的0x00C4選項字節之后到0x2000 的flash空間都是沒有使用到。
4
查看map文件,和mot文件相符合,.CONST 代碼段是從0x2000開始分配的,也就是代碼段前面的flash空間有將近8K沒用上。
5
分析確認到原因后,多次嘗試修改section settings。參考RL78其他型號code flash 8K的R5F10268的CS+ CCRL工程設置,發現.const分配的地址是從0x00CE開始。而R5F1027A的工程默認從0x2000開始,所以想把.const直接從0x2000改成0x00CE,一直提示不符合設置范圍的錯誤。最后把.const分配的地址放到后面改成0x3C00,其他代碼段.text則按順序從0x00D0開始,這樣設置后,編譯成功了。
6
以上設置過后代碼重新編譯ok,也從0x00D0開始,但是當設置開啟On-chip在線仿真功能后,發現報監控字節的錯誤。
7
查看數據手冊發現,debug監控字節會占用10個字節,從0x00CE開始到0x00D8.
8
把代碼段.text地址從0x00D0修改成0x00E0開始后,重新編譯正常了。查看MAP文件和mot文件,地址也是符合的,從0x00E0開始分配。
總結
通過查看分析MAP文件和mot文件,定位到.CONST 代碼段是從0x2000開始分配的,導致代碼段前面的flash空間有將近8K沒用上,最終通過修改設置代碼段地址,問題得到解決。
審核編輯:劉清
-
mcu
+關注
關注
146文章
17319瀏覽量
352650 -
FlaSh
+關注
關注
10文章
1642瀏覽量
148677
原文標題:使用CS+ CCRL編譯RL78系列MCU出現CONST地址引起flash空間浪費的錯誤問題
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論