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

8

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

为了让uBoot加载内核,我认为内核加载的存储器地址应该与内核执行(启动)时的入口点位置相同。

但我猜想,由于这些是两个不同的值,它们不一定总是相同的,所以它们被分开有其原因。

请问有人能够向我解释这两者之间的区别吗?


1
请参阅https://dev59.com/OlwZ5IYBdhLWcg3wM9_Z 。 - sawdust
1个回答

10

加载地址是内核二进制镜像要复制到的RAM位置。 入口点是uboot执行引导内核的复制二进制文件的位置。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接