2017-04-04 35 views
4

我正在製作自己的Linux發行版。開發進展順利但是我發現很難理解內核加載地址和入口點之間的區別。內核加載地址和入口點之間的區別

爲了讓內核被uBoot加載,我會認爲內核加載的內存地址總是和內核入口(啓動點)執行時的內存地址一樣(開始)。

但我猜測,因爲這些是兩個分開的值,並不總是必須是相同的,他們有分開的理由。

請問誰能解釋兩者之間的區別?

我對內核開發仍然陌生,所以它可能是第一天的問題。

感謝您的幫助!

Thomas

+1

請參閱http://stackoverflow.com/questions/31725605/building-kernel-uimage-using-loadaddr – sawdust

回答

4

加載地址是內核二進制映像將被複制到的RAM位置。 入口點是由uboot啓動內核所執行的複製二進制文件的位置。

如果RAM在80000000和內核LOAD ADDRESS映射是80008000. bootm命令解壓縮從複製的圖像位置的uImage到80008000點的地址,然後調用內核入口點(可以是相同的地址:80008000),以執行內核。