U-Boot是否要重定向,取决于其运行地址和链接地址是否相同。
01
—
链接、运行、加载地址
通常来说,当U-Boot运行于DDR时,无需重定向就可以运行起来。当U-Boot在NORFLASH、MMC、SPI FLASH等作为启动设备的存储介质中时,SoC内部的RAM空间通常无法满足U-Boot的需求,此时,需要U-Boot自身通过重定向功能实现程序的搬移。
下面三个比较关键的地址概念,分别是链接地址、运行地址、加载地址,在重定向的过程中起着非常重要的作用。链接地址是U-Boot重定向后的执行地址,若重定向后在DDR上运行,那么链接地址是DDR内存中的地址。二次重定向一般为了给kernel留出运行空间,习惯将U-Boot重定向到高端内存区。链接地址通过在include/configs/xxx.h中设置CONFIG_SYS_TEXT_BASE来实现。 运行地址是U-Boot当前执行时的地址PC。假设U-Boot不需要重定向,那么运行地址一般也就时基于加载地址进行相应的偏移。若U-Boot需要重定向