码迷,mamicode.com
首页 > 其他好文 > 详细

重定位

时间:2019-11-05 13:54:52      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:通过   链接   资源   无法   简单的   定位   开发   启动过程   因此   

一、链接地址

  程序编译时指定的地址,通过-Ttext参数指定的地址,它是理论上程序在运行时所处的地址。

二、加载地址

  程序在运行时实际所处理的地址。

  注意:链接地址与加载地址不能保障一定一样。

三、位置有关代码

  如果程序的链接地址与加载地址不符,程序就无法运行,或运行错误中的代码叫位置有关代码。

四、位置无关代码

  如果程序的链接地址与加载地址不符,程序依然能够i有正确运行,这种代码叫位置无关代码。

  可以简单的认为使用了BL的代码叫位置有关代码,而没有使用BL的叫位置无关代码。

五、再论S5PV210的启动过程

  1.iROM中的固定程序会从SD中拷贝16~96KB的程序先进行环境初始化(设置时钟、初始化内存、开看门狗)。

  2.然后再把剩余的程序从SD卡中拷贝到SDRAM中。

  3.把开发板上的所有资源都初始化好,为OS的运行做好准备。

  4.拷贝OS到SRAM中,启动OS。

六、什么是重定位

  uboot为了兼容大多数CPU并不会这样,而先把uboot的前96KB拷贝到SRAM中,然后初始化,再把完整的uboot拷贝到SDRAM中。

  因此uboot的前96KB的程序就会在不同的位置运行两次,所以一定会出现链接地址与加载地址不符的情况。

  具体的做法是先把uboot拷贝到SRAM中只运行少量的位置无关代码,然后再把程序拷贝到正确位置,这个过程叫作重定位。

  

重定位

标签:通过   链接   资源   无法   简单的   定位   开发   启动过程   因此   

原文地址:https://www.cnblogs.com/jiangyu0331/p/11797592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!