Load_name base_designator attribute max_size
{
……
}
|
output_name base_designator attribute max_size
{
……
}
|
Load_1 0x4000 ;定义加载时域的名称为Load_1,起始地址为0x4000
{
ER_RO + 0 ;输出段名ER_RO,地址偏移量0,所以起始地址为0x4000
{ *( + RO) } ;通配符*,包含了所有的RO属性的输入段,它们被连续放置
ER_RW + 0 ;输出段名称ER_RW,起始地址为前一个输出段的结束地址加偏移量0
{ *( + RW) } ;本输出段包含所有的RW属性的输入段,它们被连续放置
ER_ZI 0x5000 ;输出段名称ER_ZI,起始地址为0x5000
{ *( + ZI) } ;本输出段包含了所有的ZI属性的输入段,它们被连续放置
}
|
LR_1 0x08000 ;加载域LR_1的起始地址为0x8000
{
ER_RO 0x08000 ;输出段ER_RO的起始地址为0x8000
{
*( + RO) ;包含了所有的RO数据,包含初始入口点
}
;其他部分内容
}
|
LR_1 0x8000 ;加载时域LR_1的起始地址为0x8000
{
ER_RO 0x8000
{
*( + RO) ;除了init.o之外的其他RO数据
}
ER_INIT 0x9000 FIXED ;设置输出段属性为FIXED,确定固定域
{
init.o( + RO) ;本输出段包含了init.o,包含映像文件的初始入口点
}
;其他部分内容
}
|
ROM_LOAD 0x80000000 ;定义加载区名称ROM_LOAD,起始地址0x80000000
{
ROM_EXE 0x80000000 ;定义执行代码空间,起始地址与加载域地址相同
{
Startup.o (vectors, +First) ;首先放置Startup.o文件的向量表vectors
* ( +RO) ;后面地址空间放置其他RO属性代码
}
IRAM 0x40000000 ;定义数据空间
{ Startup.o ( +RW, +ZI) }
STACKS 0x40004000 UNINIT ;定义堆栈空间
{ stack.o ( +ZI) }
ERAM 0x81000000 ;定义数据空间
{ * ( +RW, +ZI) } ;剩下未指定空间的所有数据
HEAP + 0 UNINIT ;定义堆空间
{ heap.o ( +ZI) }
|