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

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

3天内不再提示

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

瑞萨MCU小百科 来源:瑞萨MCU小百科 2023-06-19 15:24 次阅读

介绍

基于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

具体命令如下:

左右滑动查看更多

//默认配置
//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

具体命令如下:

左右滑动查看更多

//默认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文件需要放在芯片特定地址时,可以按照上述方法简单实现。

审核编辑:汤梓红

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

    关注

    5

    文章

    319

    浏览量

    36283
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309
  • C文件
    +关注

    关注

    0

    文章

    12

    浏览量

    2776

原文标题:基于IAR指定RL78程序地址空间说明

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RL78学***

    在网上看到一本关于RL78的书籍,作者是美国人。全书13章,近400页,内容很充实,欢迎下载:
    发表于 01-04 16:42

    IAR Embedded Workbench for RL78版本2.21.2

    大家好,请问谁有IAR Embedded Workbench for RL78版本 2.21.2这个软件,可以发一下吗,邮箱1733517686@qq.com,谢谢了。
    发表于 10-11 17:06

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

    RL7878K0R用 Cコンパイラ CA78K0R ROM化の指定方法
    发表于 03-29 19:43 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>方法

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

    [IAR EW] Renesas Starter Kit for RL78/G13 快速入门指南 Rev.1.00
    发表于 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
    发表于 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 手册
    发表于 04-14 19:25 0次下载
    [<b class='flag-5'>IAR</b> EW] Renesas Starter Kit for <b class='flag-5'>RL78</b>/G13 软件 Help 手册

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

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

    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ファミリ用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用)

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

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

    [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

    [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 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 软件 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 手册

    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>