iar 变量 函数 指定 存放区域的方法

参考链接

指定bss存放地址

链接脚本

!!!注意bss段 读写属性,读写属性不对将无法将bss放到指定位置

/* 划分ram区域 */
define region MY_BSS= mem:[from 0x20000000 to 0x20001FFF ];
/* 指定区域属性 */
place in MY_BSS{ readwrite section my_bss};

源文件指定变量区域

#pragma default_variable_attributes = @ "my_bss"
int my_bss_dat;
#pragma default_variable_attributes =
/*-------------------------------------------*/
/*快速指定bss变量区域*/
int my_bss_dat @ "my_bss";

指定data存放地址

链接脚本

!!!注意data段 读写属性,读写属性不对将无法将data放到指定位置

/* 划分ram区域 */
define region MY_DATA= mem:[from 0x20000000 to 0x20001FFF ];
/* 指定区域属性 */
place in MY_DATA{ readwrite section my_data};

源文件指定变量区域

#pragma default_variable_attributes = @ "my_data"
int my_data_dat = 3;
#pragma default_variable_attributes =
/*-------------------------------------------*/
/*快速指定data变量区域*/
int my_data_dat @ "my_data" = 3;

指定text存放地址

链接脚本

!!!注意text段 读写属性,读写属性不对将无法将text放到指定位置

/* 划分rom区域 */
define region MY_TEXT= mem:[ from 0x70000 to 0x70FFF ];
/* 指定区域属性 */
place in MY_TEXT{ readonly section my_text};

源文件指定区域

/* 指定存放区域 */
#pragma default_function_attributes = @ "my_text"
int fun1(int x)
{
    return x + 1;
}
#pragma default_function_attributes =
/*-------------------------------------------*/
/*快速指定bss变量区域*/
int fun1(int x) @ "my_text"
{
    return x + 1;
}

#pragma location 指令

#pragma location 用有指定一行到指定区域

#pragma location="MY_FUNC"
void f(void);

对象文件放置多个函数到指定区域

  1. 将需要存放到指定区域的函数放在同一个源文件中

  2. 该源文件中不能包含任何 #pragma 指令

  3. 链接脚本包含该源文件生成的 *.o

    define region UTILITIES_region = mem:[ from 0x71000 to 0x71FFF ];
    place in UTILITIES_region { readonly object Utilities.o };
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值