ARM7中的sct

load_region_name (base_address | ("+" offset)) [attribute_list] [ max_size ]

load_region_name:下载区域名称,最大有效字符数31。

base_address:本区域内部目标被连接到的地址(按字对齐)。
+offset:相对前一个下载区域的偏移量(4的整数倍,如果为第一个区域)。

attribute_list:PI,OVERLAY,ABSOLUTE,FIXED,UNINIT。
PI: 位置独立。
OVERLAY: 覆盖。
ABSOLUTE: 绝对地址。
FIXED: 固定地址,下载地址与执行地址具有该地址指示确定。
UNINIT: 未初始化数据。
RELOC:无法明确指定执行区域具有该属性,而只能通过继承前一个执行区或父区域获得。
对于PI,OVERLAY,ABSOLUTE,FIXED,我们只能选择一个,缺省属性为ABSOLUTE。一个执行区域要么直接继承其前面的执行区域的属性或者具有属性为ABSOLUTE。
具有PI,OVERLAY,RELOC属性的执行区域允许其地址空间重叠,对于BSOLUTE,FIXED 属性执行区域地址空间重叠Armlink会报错。
max_size:可选,他用于指使Armlink在实际分配空间大于指定值时报错。

例子:

uint32 g_stay_iap __attribute__ ((section ("ER_RSV")));

 

 

ROM_LOAD 0x00000000
{
    ROM_EXEC 0x00000000
    {
        * (RESET, +First)
        *(+RO)
    }

;    ROM_KEY 0x20000 FIXED
;    {
;        key_table_new.o(+RO)
;    }

 ; 将全局变量定位于RAM的起始位置  
 IRAM_OVERLAY 0x40000000 OVERLAY
 {
  *.o (ER_RSV)
 }
    IRAM0 0x40000040
    { 
        * (+RW,+ZI)
    }  

    IRAM1 +0
    { 
      *.o (MyStacks)
    } 

;    HEAP +0 UNINIT
;    {
;        Startup.o (Heap)
;    }


 ; 将UserStack定位于RAM的最高端地址
    USER_STACKS 0x40007FE0 UNINIT
    {
        *.o (Stacks)
    }
}

 

 

;重定向__user_initial_stackheap 函数

;分配新的bottom_of_heap地址等,R0-R3是函数必须的返回值,返回bottom_of_heap的值

;通过分散加载描述文件,重定向其位置,bottom_of_heap等已经在Startup.s中定义为DATA类型

__user_initial_stackheap   
    LDR   r0,=bottom_of_heap
;    LDR   r1,=StackUsr
    LDR   r2,=top_of_heap
    LDR   r3,=bottom_of_Stacks
    MOV   pc,lr

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值