DAVINCI DM36x 之——RBL→UBL→U-BOOT內(nèi)存變換圖
summery:
1)位于cpu Memory Map 的0x8000~0xBFFF中的RBL 初始化 0x7FFC~0x8000 作為RBL堆棧;
2)讀取NAND 的 DEVICE ID 號,然后在RBL中的NAND DEVICE ID fomat中查找相應(yīng)ID ,以達(dá)到對應(yīng)控制的目的;
3)從NAND中的1th block 的 0th page 中查找UBL描述符,如果沒有查到相應(yīng)的MagicNum則next block中查找;如果查到正確的幻數(shù),則記錄UBL的描述符,包括MAGICNUM ,BLOCKNUM,,,加載地址位IARM最后24byte 中;
4)查找描述符完畢后,從描述符后的1th page 開始copy 到 IRAM中,IARM中的加載地址是0x20;
5)RBL程序跳入IRAM中的0x20地址開始執(zhí)行UBL代碼;
6)UBL代碼會將位于nand中的UBL last block后的1th code(u-boot) copy 到 DDR2上;
7)啟動U-BOOT代碼;
下面是具體內(nèi)存操作MAP:
還有些不明白的地方:
1)DDR2中的 U-BOOT分布,上圖只是反匯編U-BOOT出來的地址;
2)燒寫是為什么還要tftp 0x80700000 ;然后從nandwrite 0x80700000 0xXXXXXXXX 0xXXXXXXXX,此時的0x80700000代表究竟;
煩請知道的大牛給指點下;
提醒:顯示的圖片窗口有限,可以右擊圖片另存為后,可以看到全圖;