指定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);
对象文件放置多个函数到指定区域
-
将需要存放到指定区域的函数放在同一个源文件中
-
该源文件中不能包含任何 #pragma 指令
-
链接脚本包含该源文件生成的 *.o
define region UTILITIES_region = mem:[ from 0x71000 to 0x71FFF ]; place in UTILITIES_region { readonly object Utilities.o };