内核加载地址和入口点有什么区别?

What is the difference between the kernel loadaddress and entry point?

我正在制作自己的 Linux 发行版。开发进展顺利,但我发现很难理解内核加载地址和入口点之间的区别。

为了让 uBoot 加载内核,我认为加载内核的内存地址总是与内核执行时的入口(起点)位置相同(开始了)。

但我猜测,因为这是两个分开的值,不一定总是相同,所以将它们分开是有原因的。

谁能给我解释一下两者的区别?

加载地址是要复制内核二进制映像的 RAM 位置。 入口点是复制的二进制文件的位置,由 uboot 执行以启动内核。

如果 RAM 映射到 80000000 并且内核加载地址是 80008000。 bootm 命令将 uImage 从复制的映像位置解压缩到 80008000 地址,然后调用内核入口点(可能是相同的地址:80008000)来执行内核。