为什么会出现链接地址跟运行地址不同的情况?
答:当一块芯片启动的时候,依靠内部的SRAM,可以运行一小段代码,而因为DDR还没初始化,注定了开始的运行地址是在内部SRAM中的。当我们需要运行一个操作系统,那么点的内存怎么够运行呢?所以这时候就需要初始化DDR才可,而因为我们知道这代码将来都是在DDR上面运行的,所以链接脚本指定的链接地址肯定是DDR上面的地址,所以这就出现了链接地址跟运行地址不同的情况了。
所以裸机编程时,一般不需要进行重定位,印为逻辑代码量小。 片上ram就已经可以运行。
https://blog.csdn.net/cherisegege/article/details/80708143
https://blog.csdn.net/longjingcha110/article/details/88676148
韦东山sdram例程解析
https://blog.csdn.net/qq_34888036/article/details/80880201
https://blog.csdn.net/laoniu_c/article/details/17228681