0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于IAR指定RL78程序地址空间说明

瑞萨MCU小百科 来源:未知 2023-06-19 15:25 次阅读
134a866a-0e72-11ee-962d-dac502259ad0.gif

介绍

基于IAR实现C文件指定地址存放&函数指定地址存放,定义变量指定地址。

开发环境:IAR for RL78 2.21

芯片R5F510NPJ

仿真器E1

主要内容

一、C文件指定地址存放&函数指定地址存放

1

首先需要根据自己需要指定存放的C文件里面程序所占大小来规划自己的空间。

2

可根据编译生成的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

根据map文件我们知道C文件:r_cg_cgc.c文件所占大小为217Byte,修改连接文件icf如下图所示:

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

具体命令如下:

13ed98a0-0e72-11ee-962d-dac502259ad0.svg

左右滑动查看更多

13ed98a0-0e72-11ee-962d-dac502259ad0.svg
//默认配置
//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;


//下边默认的空间都需要更改,避开自定义开辟的空间段
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]; 


//在自己开辟的空间里面定义一个段
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、自己开辟的空间需要根据需要存放C文件所占用空间大小来定义。本文只是为了方便操作定义了一块比较大的空间。

B、place at address mem:0x08000 { ro section .textf object r_cg_cgc.o }; 该条命令中需要根据自己代码是否超过64K来配置,跟IAR配置有关系:

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

当IAR配置如下图所示时,需要更换命令为:

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里面含有两个函数:

R_CGC_Create() test1() )

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

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

6

上文中我们在自己开辟的空间里面定义了一个段,也是用来分配自己指定函数地址的,如果函数不在同一个C文件里面可以通过如下方法

在我们需要指定的函数上边加上如下代码:

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


}

NEW_SECTION1是我们自己定义的段名,可以根据自己来定义。如下图所示:

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

二、定义变量指定地址

定义的变量只能单独的添加,没有统一操作的方法,且方法很多,这里只介绍如下方法,在ICF里面更改定义的RAM,具体操作如下图所示:

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

具体命令如下:

13ed98a0-0e72-11ee-962d-dac502259ad0.svg

左右滑动查看更多

13ed98a0-0e72-11ee-962d-dac502259ad0.svg
//默认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定义一个段
place in RAM1 { rw section RAM_METER};

在C代码里面添加:

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

RAM_METER 是我们自己定义的段名,可以根据自己来定义。如下图所示:

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

结论

当部分函数或是整个C文件需要放在芯片特定地址时,可以按照上述方法简单实现。

更多资料分享

您可识别下方二维码查看:

150a33f6-0e72-11ee-962d-dac502259ad0.png1525972c-0e72-11ee-962d-dac502259ad0.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16022

    浏览量

    343687
  • 瑞萨
    +关注

    关注

    32

    文章

    22215

    浏览量

    84922
收藏 人收藏

    评论

    相关推荐

    RL78/G15组和RL78/G16组 瑞萨Flash示例程序01型SC版本应用说明

    电子发烧友网站提供《RL78/G15组和RL78/G16组 瑞萨Flash示例程序01型SC版本应用说明.pdf》资料免费下载
    发表于 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版本应用<b class='flag-5'>说明</b>

    使用IAR IDE仿真RL78内置硬件乘法器和除法器注意事项

    使用IAR IDE仿真RL78内置硬件乘法器和除法器注意事项
    的头像 发表于 10-30 17:04 584次阅读
    使用<b class='flag-5'>IAR</b> IDE仿真<b class='flag-5'>RL78</b>内置硬件乘法器和除法器注意事项

    [IAR EW] Renesas Starter Kit for RL78/G13 软件 Help 手册

    [IAR EW] Renesas Starter Kit for RL78/G13 软件 Help 手册
    发表于 10-18 18:30 0次下载
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 软件 Help 手册

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

    [IAR EW] Renesas Starter Kit for RL78/G13 Tutorial 手册 Rev.1.00
    发表于 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 用户手册 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 用户手册 Rev.1.00
    发表于 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 快速入门指南 Rev.1.00

    [IAR EW] Renesas Starter Kit for RL78/G13 快速入门指南 Rev.1.00
    发表于 10-17 18:30 0次下载
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 快速入门指南 Rev.1.00

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)
    发表于 07-12 19:52 0次下载
    <b class='flag-5'>RL78</b>ファミリ用CコンパイラCA<b class='flag-5'>78</b>K0R スタートアップルーチンの変更について(<b class='flag-5'>RL78</b>/G10用)

    RL7878K0R用 Cコンパイラ CA78K0R 変数群の同アドレスへの配置方法

    RL7878K0R用 Cコンパイラ CA78K0R 変数群の同アドレスへの配置方法
    发表于 07-12 19:51 0次下载
    <b class='flag-5'>RL78</b>、<b class='flag-5'>78</b>K0R用 Cコンパイラ CA<b class='flag-5'>78</b>K0R 変数群の同アドレスへの配置方法

    RL7878K0R用 Cコンパイラ CA78K0R 変数セクションの追加方法

    RL7878K0R用 Cコンパイラ CA78K0R 変数セクションの追加方法
    发表于 07-12 19:51 0次下载
    <b class='flag-5'>RL78</b>、<b class='flag-5'>78</b>K0R用 Cコンパイラ CA<b class='flag-5'>78</b>K0R 変数セクションの追加方法

    RL7878K0R用 Cコンパイラ CA78K0R ROM化の指定方法

    RL7878K0R用 Cコンパイラ CA78K0R ROM化の指定方法
    发表于 07-12 19:50 0次下载
    <b class='flag-5'>RL78</b>、<b class='flag-5'>78</b>K0R用 Cコンパイラ CA<b class='flag-5'>78</b>K0R ROM化の<b class='flag-5'>指定</b>方法

    RL78/F1A ユーザーズマニュアル ハードウェア編

    RL78/F1A ユーザーズマニュアル ハードウェア編
    发表于 07-10 20:39 0次下载
    <b class='flag-5'>RL78</b>/F1A ユーザーズマニュアル ハードウェア編

    E1/E20 Emulator, E2Emulator Lite 用户手册附加文件(RL78连接注意事项)(for RL78/G10, RL78/G1M, RL78/G1N)

    E1/E20 Emulator, E2 Emulator Lite 用户手册附加文件(RL78连接注意事项)(for RL78/G10, RL78/G1M, RL78/G1N)
    发表于 07-04 20:39 1次下载
    E1/E20 Emulator, E2Emulator Lite 用户手册附加文件(<b class='flag-5'>RL78</b>连接注意事项)(for <b class='flag-5'>RL78</b>/G10, <b class='flag-5'>RL78</b>/G1M, <b class='flag-5'>RL78</b>/G1N)

    EEPROM Emulation 软件 RL78 Type 01 用户手册 for RL78/G23

    EEPROM Emulation 软件 RL78 Type 01 用户手册 for RL78/G23
    发表于 07-03 19:32 0次下载
    EEPROM Emulation 软件 <b class='flag-5'>RL78</b> Type 01 用户手册 for <b class='flag-5'>RL78</b>/G23

    基于IAR指定RL78程序地址空间说明

    基于IAR实现C文件指定地址存放&函数指定地址存放,定义变量指定
    的头像 发表于 06-19 15:24 1576次阅读
    基于<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>

    EEPROM 仿真软件 RL78 Type 02RL78/F23 和 RL78/F24 用户手册

    EEPROM 仿真软件 RL78 Type 02 RL78/F23 和 RL78/F24 用户手册
    发表于 05-19 18:41 1次下载
    EEPROM 仿真软件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用户手册