U-Boot学习笔记(四):TEXT_BASE的理解

来源:互联网 发布:集思宝g120数据导出 编辑:程序博客网 时间:2024/06/05 05:57
[IMX6Q]TEXT_BASE和_start的区别 :
其实可以这么理解:

_start是可以动态变化,而TEXT_BASE是链接时就确定的地址。

_start是实际运行的地址,而TEXT_BASE是要copy到sdram中运行的地址, 当然也是最终u-boot实际运行的地址。

u-boot的start.S中在启动第一阶段会比较这两个值是否相等,不相等则会将

自身copy到sdram中。

假设_start出是第一条执行的指令,并且TEXT_BASE=0x27800000,

分两种情况说明:

1. 当u-boot被download到nor flash或被copy到内部sram时,假设被copy到的地址是0x907000,

那么此时_start的地址是0x907000,此时就需要将自身copy到TEXT_BASE地方。

2. 当u-boot本身就被download sdram的TEXT_BASE定义的地址出,那么此时_start本身的地址

就是0x27800000了,所以和TEXT_BASE比较的结果相等而不用作自身代码搬移的工作了。
0 0
原创粉丝点击