我正在制作自己的Linux发行版。开发进展顺利,但我发现很难理解内核加载地址和入口点之间的区别。
为了让uBoot加载内核,我认为内核加载的存储器地址应该与内核执行(启动)时的入口点位置相同。
但我猜想,由于这些是两个不同的值,它们不一定总是相同的,所以它们被分开有其原因。
请问有人能够向我解释这两者之间的区别吗?
我正在制作自己的Linux发行版。开发进展顺利,但我发现很难理解内核加载地址和入口点之间的区别。
为了让uBoot加载内核,我认为内核加载的存储器地址应该与内核执行(启动)时的入口点位置相同。
但我猜想,由于这些是两个不同的值,它们不一定总是相同的,所以它们被分开有其原因。
请问有人能够向我解释这两者之间的区别吗?
加载地址是内核二进制镜像要复制到的RAM位置。 入口点是uboot执行引导内核的复制二进制文件的位置。
如果RAM映射在80000000处,内核的加载地址为80008000。 bootm命令将从复制的镜像位置解压缩uImage并将其复制到80008000地址,然后调用内核入口点(可能是相同的地址:80008000)来执行内核。