0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于IAR指定RL78程序地址空間說明

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 2023-06-19 15:24 ? 次閱讀

介紹

基于IAR實(shí)現(xiàn)C文件指定地址存放&函數(shù)指定地址存放,定義變量指定地址。

開發(fā)環(huán)境:IAR for RL78 2.21

芯片R5F510NPJ

仿真器E1

主要內(nèi)容

一、C文件指定地址存放&函數(shù)指定地址存放

1首先需要根據(jù)自己需要指定存放的C文件里面程序所占大小來規(guī)劃自己的空間。

2可根據(jù)編譯生成的map文件來定位C文件所占大小。

如何生成map文件如下圖所示:

1374d7e4-0e72-11ee-962d-dac502259ad0.jpg1384baba-0e72-11ee-962d-dac502259ad0.jpg13a52214-0e72-11ee-962d-dac502259ad0.jpg

3通過查看map文件就可以知道我們所有C文件所占空間大小了。在MODULE SUMMARY一欄,如下圖所示:

13b906d0-0e72-11ee-962d-dac502259ad0.jpg

4根據(jù)map文件我們知道C文件:r_cg_cgc.c文件所占大小為217Byte,修改連接文件icf如下圖所示:

13ccbf5e-0e72-11ee-962d-dac502259ad0.jpg

具體命令如下:

左右滑動(dòng)查看更多

//默認(rèn)配置
//define region ROM_near = mem:[from 0x000D8 to 0x0FFFF] - EXLUDE_ROM_REGION;
//define region ROM_far = mem:[from 0x000D8 to 0x0FFFF] | mem:[from 0x10000 to 0x1FFFF] | mem:[from 0x20000 to 0x2FFFF] | mem:[from 0x30000 to 0x3FFFF] - EXLUDE_ROM_REGION;
//define region ROM_huge = mem:[from 0x000D8 to 0x3FFFF] - EXLUDE_ROM_REGION;


//下邊默認(rèn)的空間都需要更改,避開自定義開辟的空間段
define region ROM_near = mem:[from 0x000D8 to 0x07FFF] - EXLUDE_ROM_REGION;
define region ROM_far = mem:[from 0x000D8 to 0x07FFF] | mem:[from 0x10000 to 0x1FFFF] | mem:[from 0x20000 to 0x2FFFF] | mem:[from 0x30000 to 0x3FFFF] - EXLUDE_ROM_REGION;
define region ROM_huge = mem:[from 0x000D8 to 0x07FFF] | mem:[from 0x10000 to 0x3FFFF]- EXLUDE_ROM_REGION;


//定義自己開辟的空間
define region ROM1 = mem:[from 0x08000 to 0x0FFFF]; 


//在自己開辟的空間里面定義一個(gè)段
place in ROM1 { readonly section NEW_SECTION1};


//把r_cg_cgc.c文件里面的程序從0x08000開始放置
place at address mem:0x08000 { ro section .textf object r_cg_cgc.o };

注意

A、自己開辟的空間需要根據(jù)需要存放C文件所占用空間大小來定義。本文只是為了方便操作定義了一塊比較大的空間。

B、place at address mem:0x08000 { ro section .textf object r_cg_cgc.o }; 該條命令中需要根據(jù)自己代碼是否超過64K來配置,跟IAR配置有關(guān)系:

13ff2534-0e72-11ee-962d-dac502259ad0.jpg

當(dāng)IAR配置如下圖所示時(shí),需要更換命令為:

place at address mem:0x08000 { ro section .text object r_cg_cgc.o }

14260f5a-0e72-11ee-962d-dac502259ad0.jpg

5一切配置好后,編譯就可以看到我們指定的C文件(r_cg_cgc.c里面含有兩個(gè)函數(shù):

R_CGC_Create() test1() )

就放在了我們指定地址的地方了,如下圖所示:

1433ecb0-0e72-11ee-962d-dac502259ad0.jpg143c1868-0e72-11ee-962d-dac502259ad0.jpg

6上文中我們在自己開辟的空間里面定義了一個(gè)段,也是用來分配自己指定函數(shù)地址的,如果函數(shù)不在同一個(gè)C文件里面可以通過如下方法

在我們需要指定的函數(shù)上邊加上如下代碼:

#pragma location = "NEW_SECTION1"  
Void fun()
{


}

NEW_SECTION1是我們自己定義的段名,可以根據(jù)自己來定義。如下圖所示:

14676f40-0e72-11ee-962d-dac502259ad0.jpg148e142e-0e72-11ee-962d-dac502259ad0.jpg

二、定義變量指定地址

定義的變量只能單獨(dú)的添加,沒有統(tǒng)一操作的方法,且方法很多,這里只介紹如下方法,在ICF里面更改定義的RAM,具體操作如下圖所示:

149f3434-0e72-11ee-962d-dac502259ad0.jpg

具體命令如下:

左右滑動(dòng)查看更多

//默認(rèn)RAM配置
//define region SADDR  = mem:[from 0xFFE20 to 0xFFEDF] - EXLUDE_RAM_REGION;
//define region RAM_near = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;
//define region RAM_far = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;
//define region RAM_huge = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;


//避開自己開辟的空間
define region SADDR  = mem:[from 0xFFE20 to 0xFFEDF] - EXLUDE_RAM_REGION;
define region RAM_near = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
define region RAM_far = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
define region RAM_huge = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
//重新定義開辟RAM空間
define region RAM1 = mem:[from 0xFE100 to 0xFFBFF];
//在自己開辟的RAM定義一個(gè)段
place in RAM1 { rw section RAM_METER};

在C代碼里面添加:

#pragma location = "RAM_METER"
unsigned char bufff[100];

RAM_METER 是我們自己定義的段名,可以根據(jù)自己來定義。如下圖所示:

14cb16f8-0e72-11ee-962d-dac502259ad0.jpg14f4d90c-0e72-11ee-962d-dac502259ad0.jpg

結(jié)論

當(dāng)部分函數(shù)或是整個(gè)C文件需要放在芯片特定地址時(shí),可以按照上述方法簡單實(shí)現(xiàn)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    352

    瀏覽量

    36684
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81049
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62622
  • C文件
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    2838

原文標(biāo)題:基于IAR指定RL78程序地址空間說明

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RL78學(xué)***

    在網(wǎng)上看到一本關(guān)于RL78的書籍,作者是美國人。全書13章,近400頁,內(nèi)容很充實(shí),歡迎下載:
    發(fā)表于 01-04 16:42

    IAR Embedded Workbench for RL78版本2.21.2

    大家好,請問誰有IAR Embedded Workbench for RL78版本 2.21.2這個(gè)軟件,可以發(fā)一下嗎,郵箱1733517686@qq.com,謝謝了。
    發(fā)表于 10-11 17:06

    [IAR EW] Renesas Starter Kit for RL78/G13 快速入門指南 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 快速入門指南 Rev.1.00
    發(fā)表于 04-14 19:23 ?0次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 快速入門指南 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 Tutorial 手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 Tutorial 手冊 Rev.1.00
    發(fā)表于 04-14 19:24 ?0次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 Tutorial 手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 軟件 Help 手冊

    [IAR EW] Renesas Starter Kit for RL78/G13 軟件 Help 手冊
    發(fā)表于 04-14 19:25 ?0次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 軟件 Help 手冊

    EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊

    EEPROM 仿真軟件 RL78 Type 02 RL78/F23 和 RL78/F24 用戶手冊
    發(fā)表于 05-19 18:41 ?2次下載
    EEPROM 仿真軟件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊

    基于IAR指定RL78程序地址空間說明

    介紹 基于IAR實(shí)現(xiàn)C文件指定地址存放函數(shù)指定地址存放,定義變量指定
    的頭像 發(fā)表于 06-19 15:25 ?1293次閱讀
    基于<b class='flag-5'>IAR</b><b class='flag-5'>指定</b><b class='flag-5'>RL78</b><b class='flag-5'>程序</b><b class='flag-5'>地址</b><b class='flag-5'>空間</b><b class='flag-5'>說明</b>

    使用IAR IDE仿真RL78內(nèi)置硬件乘法器和除法器注意事項(xiàng)

    使用IAR IDE仿真RL78內(nèi)置硬件乘法器和除法器注意事項(xiàng)
    的頭像 發(fā)表于 10-30 17:04 ?1146次閱讀
    使用<b class='flag-5'>IAR</b> IDE仿真<b class='flag-5'>RL78</b>內(nèi)置硬件乘法器和除法器注意事項(xiàng)

    [IAR EW] Renesas Starter Kit for RL78/G13 用戶手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 用戶手冊 Rev.1.00
    發(fā)表于 10-17 18:31 ?0次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 用戶手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 Tutorial 手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 Tutorial 手冊 Rev.1.00
    發(fā)表于 10-18 18:30 ?1次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 Tutorial 手冊 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 軟件 Help 手冊

    [IAR EW] Renesas Starter Kit for RL78/G13 軟件 Help 手冊
    發(fā)表于 10-18 18:30 ?0次下載
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 軟件 Help 手冊

    RL78/G23 SMS電源監(jiān)控應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《RL78/G23 SMS電源監(jiān)控應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 01-29 11:12 ?0次下載
    <b class='flag-5'>RL78</b>/G23 SMS電源監(jiān)控應(yīng)用<b class='flag-5'>說明</b>

    e2studio2024-01 RL78插件智能配置程序發(fā)布說明

    電子發(fā)燒友網(wǎng)站提供《e2studio2024-01 RL78插件智能配置程序發(fā)布說明.pdf》資料免費(fèi)下載
    發(fā)表于 01-30 09:43 ?0次下載
    e2studio2024-01 <b class='flag-5'>RL78</b>插件智能配置<b class='flag-5'>程序</b>發(fā)布<b class='flag-5'>說明</b>

    RL78的代碼生成器發(fā)布說明

    電子發(fā)燒友網(wǎng)站提供《RL78的代碼生成器發(fā)布說明.pdf》資料免費(fèi)下載
    發(fā)表于 01-30 09:48 ?0次下載
    <b class='flag-5'>RL78</b>的代碼生成器發(fā)布<b class='flag-5'>說明</b>

    RL78/G15組和RL78/G16組 瑞薩Flash示例程序01型SC版本應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《RL78/G15組和RL78/G16組 瑞薩Flash示例程序01型SC版本應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 02-19 10:36 ?0次下載
    <b class='flag-5'>RL78</b>/G15組和<b class='flag-5'>RL78</b>/G16組 瑞薩Flash示例<b class='flag-5'>程序</b>01型SC版本應(yīng)用<b class='flag-5'>說明</b>