uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题
uboot啟動Linux內(nèi)核過程分為4大步驟:
問題2: uboot階段DDR的分區(qū)的問題
上述步驟2和步驟4中,有將uboot/kernel拷貝紙DDR的步驟,具體要拷貝到DDR的什么位置呢?
分清楚這兩個概念:
鏈接地址:鏈接時指定的地址(指定方式為:Makefile中用-Ttext,或者鏈接腳本)
運行地址:程序?qū)嶋H運行時地址(指定方式:由實際運行時被加載到內(nèi)存的哪個位置說了算)
此問題中的提及的位置是鏈接地址,在由Makefile中用-Ttext,或者鏈接腳本指定的。
-
Uboot放在DDR中的什么位置?
是用Makefile中的-Ttext指定的。查看code:
TEXT_BASE是將來我們整個uboot鏈接時指定的鏈接地址。因為uboot中啟用了虛擬地址映射,這個虛擬地址0xC3E0 0000地址對應(yīng)的物理地址就等于0x33E0 0000,所以我們會將uboot加載到DDR中的起始位置是0x33E0 0000,加載調(diào)用的code 如下:
0表示通道0;MOVI_BL2_POS是uboot的第二部分在SD卡中的開始扇區(qū),這個扇區(qū)數(shù)字必須和燒錄uboot時燒錄的位置相同;MOVI_BL2_BLKCNT是uboot的長度占用的扇區(qū)數(shù);CFG_PHY_UBOOT_BASE是重定位時將uboot的第二部分復(fù)制到DDR中的起始地址(0x33E00000). -
Kernel 鏡像要放在DDR的什么地址?
內(nèi)核一定要放在鏈接地址處,鏈接地址去內(nèi)核源代碼的鏈接腳本或者Makefile中去查找。X210中是0x30008000。
遺留問題: 內(nèi)核的鏈接腳本后續(xù)要截屏放在這里
在uboot中通過執(zhí)行如下命令將kernel加載到DDR中:
movi read kernel 30008000
(其中kernel指的是uboot中的kernel分區(qū)) -
總結(jié)
Uboot/kernel要拷貝到DDR中的物理地址;
鏈接腳本或-Ttext 指定的是程序運行的虛擬地址;
總結(jié)
以上是生活随笔為你收集整理的uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 留恋留恋留恋是哪首歌啊?
- 下一篇: uboot引导kernel - 3 -