u-boot版本: v2009.08
看到很多文章都把两者描述为u-boot的入口地址,概念有点模糊。
其实可以这么理解:
_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比较的结果相等而不用作自身代码搬移的工作了。
refer to:
http://blog.csdn.net/czxyhll/article/details/7859021
http://home.eeworld.com.cn/my/space-uid-116357-blogid-119284.html