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