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

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

3天内不再提示

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

瑞萨嵌入式小百科 来源:未知 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
    +关注

    关注

    147

    文章

    19129

    浏览量

    404018
  • 瑞萨
    +关注

    关注

    38

    文章

    22518

    浏览量

    91200
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RL78/I1D微控制器:特性、电气规格与应用考量

    RL78/I1D微控制器:特性、电气规格与应用考量 在电子设计领域,微控制器是众多项目的核心组件,其性能和特性直接影响着产品的功能和稳定性。Renesas的RL78/I1D微控制器以其低功耗、高性能
    的头像 发表于 04-13 14:55 200次阅读

    Renesas RL78/G14 入门指南

    ,用于开发和调试基于 RL78/G14 微控制器的应用程序。本文将详细介绍该套件的快速启动步骤,帮助工程师们快速上手。 文件下载: R5F1006ADSP#V0.pdf 二、套件概述 Renesas
    的头像 发表于 04-13 14:30 163次阅读

    RL78/L12微控制器:低功耗与高性能的完美结合

    RL78/L12微控制器:低功耗与高性能的完美结合 在电子设计领域,选择一款合适的微控制器对于产品的性能和成本至关重要。Renesas的RL78/L12微控制器以其超低功耗、丰富的功能和广泛的应用场
    的头像 发表于 04-01 15:50 197次阅读

    RL78/G1G微控制器:特性、规格与应用考量

    RL78/G1G微控制器:特性、规格与应用考量 在电子设计领域,微控制器是众多项目的核心组件。今天,我们来深入探讨Renesas的RL78/G1G微控制器,了解它的特性、电气规格、封装信息以及使用时
    的头像 发表于 04-01 15:10 567次阅读

    RL78/G13A微控制器:特性、规格与应用解析

    RL78/G13A微控制器:特性、规格与应用解析 在电子设备的设计领域,微控制器扮演着至关重要的角色。今天,我们将深入探讨Renesas的RL78/G13A微控制器,从其特性、电气规格到实际应用,为
    的头像 发表于 04-01 14:50 162次阅读

    RL78/G11微控制器:特性、电气规格与应用考量

    RL78/G11微控制器:特性、电气规格与应用考量 一、引言 在当今的电子设计领域,微控制器扮演着至关重要的角色。Renesas的RL78/G11微控制器以其低功耗、高性能等特点,成为通用应用的理想
    的头像 发表于 04-01 14:35 280次阅读

    RL78/G10微控制器:低功耗通用应用的理想之选

    RL78/G10微控制器:低功耗通用应用的理想之选 一、引言 在电子设备不断追求低功耗、高性能的今天,微控制器的选择至关重要。RL78/G10作为瑞萨电子推出的一款低功耗微控制器,具有众多出色的特性
    的头像 发表于 04-01 14:30 456次阅读

    RL78/G16微控制器:特性、规格与设计要点解析

    RL78/G16微控制器:特性、规格与设计要点解析 在电子设计领域,微控制器(MCU)扮演着核心角色,其性能和特性直接影响着产品的功能和稳定性。Renesas的RL78/G16系列MCU以其低功耗
    的头像 发表于 04-01 14:15 509次阅读

    深入解析RL78/G1G单片机:特性、规格与应用考量

    深入解析RL78/G1G单片机:特性、规格与应用考量 在电子设备不断发展的今天,单片机作为核心控制元件,其性能和特性对于产品的成功至关重要。Renesas的RL78/G1G单片机以其独特的设计和丰
    的头像 发表于 02-26 17:20 859次阅读

    RL78/I1D微控制器:低功耗设计的理想之选

    RL78/I1D微控制器:低功耗设计的理想之选 在电子设备追求低功耗、高性能的今天,Renesas RL78/I1D微控制器以其卓越的特性脱颖而出。作为一名电子工程师,我在实际项目中对这款微控制器有
    的头像 发表于 02-25 15:10 526次阅读

    RL78/G12微控制器深度解析:特性、电气规格与应用考量

    RL78/G12微控制器深度解析:特性、电气规格与应用考量 在电子设计领域,选择一款合适的微控制器对于产品的性能和稳定性至关重要。Renesas的RL78/G12微控制器凭借其低功耗、高性能等特点
    的头像 发表于 02-04 16:05 418次阅读

    瑞萨RL78/F22 MCU基于IAR开发环境创建触摸应用样例工程

    驱动程序 –使用QE for Capacitive Touch开发触摸应用 –添加应用代码实现LED闪烁 1 概述 本文包含以下主要内容: 瑞萨RL78/F22 Target Board简介 基于IAR
    的头像 发表于 01-19 09:33 6827次阅读
    瑞萨<b class='flag-5'>RL78</b>/F22 MCU基于<b class='flag-5'>IAR</b>开发环境创建触摸应用样例工程

    瑞萨RL78/F25 MCU基于IAR开发环境创建触摸应用样例工程

    瑞萨RL78/F25 MCU基于IAR开发环境创建触摸应用样例工程
    的头像 发表于 01-05 14:59 9112次阅读
    瑞萨<b class='flag-5'>RL78</b>/F25 MCU基于<b class='flag-5'>IAR</b>开发环境创建触摸应用样例工程

    RL78/G15 MCU:低功耗设计的理想之选

    RL78/G15 MCU:低功耗设计的理想之选 在当今电子产品追求低功耗、高性能的大趋势下,Renesas的RL78/G15 MCU凭借其出色的低功耗特性和丰富的功能,成为了众多电子工程师的关注焦点
    的头像 发表于 12-29 15:20 2170次阅读

    深入解析RL78/G22微控制器:特性、电气参数与应用要点

    深入解析RL78/G22微控制器:特性、电气参数与应用要点 一、引言 在当今的电子设计领域,微控制器的性能和特性对于产品的成功至关重要。Renesas的RL78/G22微控制器以其超低功耗、丰富
    的头像 发表于 12-29 15:15 484次阅读