为什么uboot需要加载到beagleoboard的特定地址?

Why uboot need to load at specific address in beagleoboard?

在 beagle board 中启动我们使用下面这个特定地址来加载 uImage 和 dtb?

loaduImage=fatload mmc 0:1 0x80007fc0 uImage

loadfdt=fatload mmc 0:1 ${dtaddr} omap3-beagle-xm.dtb

为什么我们不能使用其他地址?在beagle board xm的数据sheet中指出,beagle board中的DRAM地址是从0x80000000开始的,为什么不选择任意地址呢?

为什么我们不能按照 https://www.kernel.org/doc/Documentation/arm/Booting 文档中的建议在某个地址加载 uImage 并在 128MB 后加载 dtb。

引自 link:安全位置刚好在从 RAM 开始的 128MiB 边界上方。

Header 是 0x40,因此内核最终位于 0x80008000,一个 4k 页面边界。 0x80008000 只是约定,如果您愿意,可以更改地址,但需要相应地修改内核代码。

http://processors.wiki.ti.com/index.php/HOWTO_Change_the_Linux_Kernel_Start_Address