4.30.2008

MultiXIP : msdn

修改 config.bib

在config.bib 的 "MEMORY" section 中定義出run-time image 的 multixip regions, 以下是範例:
;  NAME           START ADDR    SIZE       TYPE
; ----------------------------------------------------------------
NK 80220000 007DE000 RAMIMAGE
SHELL 809FE000 00100000 RAMIMAGE
APPS 80AFE000 00100000 RAMIMAGE
CHAIN 80BFE000 00002000 RESERVED ; XIP chain info
RAM 80C00000 01000000 RAM
pdwXIPLoc 00000000 80BFE000 FIXUPVAR ; XIP pTOC
上面將原來的一個NK image 分成 3 個 BIN:NK, SHELL, APPS。另外一個 CHAIN 和 pdwXIPLoc 是MultiXIP另外需要的。

NK, SHELL, APPS 這三個區域是連續的,區域的大小可以自己決定,但是要考慮要放到該區域內得AP (要能放得下)。 一般來說,把該區域內所有AP的size 加總之後,+32K 就可以。

CHAIN 這個bin 要放在 NK, SHELL, APPS 之後。實際上chain.bin 的位置和bootloader 的實做有關。

pdwXIPLoc 區域被宣告為 FIXUPVAR,而且包含整個NK, SHELL, APPS。並且在CHAIN 之前結束。

之後,要修改 config.bib 的 CONFIG section:

有幾個是額外要設的:
  • AUTOSIZE=ON : 調整RAM 的start address 在最後一個 XIP region 後。
  • ROM_AUTOSIZE=ON : 自動調整每一個 XIP 區塊的大小。
  • DLL_ADDR_AUTOSIZE= ON : 調整DLL 的size,能夠橫跨 XIP region。
  • XIPSCHAIN=80bfe000 : 告訴 Romimage CHAIN.bin 的start address。
這樣config.bib 就做完了。

接著改 Platform.bib:

.. 懶得寫,而且跟我們的用法不一樣,大略來說,就是把一些dll, exe 分到 APP 和 SHELL 中。

然後是設定 platform builder的 參數:

Platform -- Settings -- Environment -- New : 加上 IMGMULTIBIN ,value 設為 1。

Build:

check - Make Run-Time Image After Build 和 Copy Files to Release Directory After Build。
sysgen.

完成後,會產生
  • Xip.bin
  • Nk.bin
  • Shell.bin
  • Apps.bin
  • Chain.bin
  • Eboot.bin
其中Xip.bin 包含 所有 XIP regions.

xip.bin -- 就是要download 的 bin 檔

-- 然後就是用 platform build 透過 KITL -- eboot download 到 target 上去。



有關 XIP Chain

XIP Chain 是一塊XIP region,由 OAL 讀取,內部資料描述 有幾個 XIP region。和每個region 的 entry。還有 XIP region 的starting memory address。

XIP Chain 會由 bootloader (eboot) 寫入flash/rom,
xip chain 在memory 的位置是由 Config.bib 設定的。然後由 fixup variable 傳給OAL。

Fixup Variable 是 ROMIMAGE.EXE 的一個功能變數,可以讓你在 makeimg 的階段

沒有留言: