11.25.2009

EBOOT 的 pTOC 變數是由 ROMIMAGE.EXE 賦予初值

KernelRelocate(ROMHDR *const pToc);

Eboot 啟動後,先作這個,但是查code,pToc 只有宣告,並沒有賦予初值。
在 這篇:CE5.0 - romimage.exe如何填充eboot.bin中的pTOC特殊指針生成.nb0 有說明。

原來是 romimage.exe 做的,romimage 為EBOOT.bin 建立 pTOC (ROMHDR),然後在找到 EBOOT.bin 中 的 pTOC token,修改他的初值,改為romimage 建立的 pTOC (ROMHDR)。

所以說,pTOC 的初值是 ROMIMAGE.EXE 給的

根據參考的那一篇,說明這個 romiage--pTOC--KernelRelocate( ) 的配合動作是為了達成類似 C startup function 對各變數region 的初始設定。可以看 KernelRelocate( ) 的 source code 就可以了解,跟 C Startup Code 類似。

沒有留言: