介 紹
MCU設計中,很多時候客戶需要在Flash指定地址存入指定數據,這里需要用到Flash的絕對定位,我們知道有些公司可以在keil使用char const buf[x] __attribute__ ((at(0x80000))) = {};實現,那么RA是否可以實現?
通過瑞薩官方編譯工具e2 studio對.ld腳本文件修改,在Flash上劃一小塊出來,然后通過__attribute__實現。
具體步驟如下
1、首先在Flash上劃一塊出來,在e2 studio對.ld文件進行修改。工程路徑如下圖
2、fsp.ld文件中,memory選項,Add新的分區,這里直接指定起始地址和長度。
3、fsp.ld下,文本編輯,初始my_code(!rx),刪除”!”
4、如下,編輯my_code
在文本編輯會自動創建代碼如下:
5、為了避免可能出現的問題,最好修改Flash地址空間,因為到此時,my_code被包在Flash區,需要修改flash區地址。
首先,復制memory_regions.ld并改名到同一目錄下,在fSP.ld文件文本編輯處include新復制的文件:
接下來,我們需要在memory_regions_my.ld修改Flash空間
同樣,我們可以在此處設置my_code的起始地址和長度,在第2步新建的分區直接用起始地址和長度別名替代。
6、在主函數變量聲明處,添加代碼
const char buff[16] __attribute__((section(".my_code "))) = {"1234567890abcdef"};
buff長度需與分區大小相同,否則會報錯。
Build需要使用release。
7、編譯完成后,查看如下:
注:推薦大家使用e2 studio help contents:(非常好用!!!)
來源:瑞薩MCU小百科(作者:James Xu)
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
FlaSh
+關注
關注
10文章
1641瀏覽量
148413 -
定位
+關注
關注
5文章
1347瀏覽量
35449 -
RA
+關注
關注
0文章
19瀏覽量
24690
發布評論請先 登錄
相關推薦
評論