分散加载(6)---根域root region

一、根域的概念

在分散加载文件中,我们必须定义一个这样的执行域:这个执行域的开始地址必须等于它所在的加载域的开始地址,并且在这个执行域中,必须包含整个程序(也称镜像文件)的入口点(entry point),说白了就是我们常用的启动文件***.S,在这个文件中包含了RESET段,C语言入口函数_main(). 这样的一个执行域,称作根域;

必须定义根域,必须把入口点放在根域中,否则连接器报错。

举例说明:我们在cortex M核的MCU/SOC的分散加载文件中,都可以看到这样的内容,其中,RESET就是程序入口,InRoot$$Sections就是_main()包括的函数段。如图:

 

 

二、定义根域的方法

1)方法一:使用绝对物理地址创建根域,如图:

 

 

加载域开始地址 = 执行域开始地址 = 0x8000000.

2)方法二:使用偏移量+0创建根域,如图:

 

 

  

注意:使用偏移量 +0 的方式定义根域,有一个特别需要注意的地方,就是后面的执行域都视作根域,但是包含ZI数据的执行域除外。原话是这样的:If you specify an offset of zero (+0) for all subsequent execution regions in the load region, then all execution regions not following an execution region containing ZI are also root regions.

比如:

 

 

3)方法三:使用执行域属性FIXED创建根域,如图:

 

 

注意:使用属性FIXED,要注意固定的地址,不要超出他所在范围的加载域空间,否则,没有意义。如图:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值