第一步:Bootloader Support for BinFS
bootloader 要能夠在media (例如:Nandflash)上 create partition(BINFS & extend)。
這要link bootpart library。
bootloader create 好 BINFS 和 extended partition,OS就可以在 extended partition 上create data partition。
bootpart library 還可以 create boot partition 來存放 boot parameters :MBR 放在那一個block,BinFS region。
Bootpart library 在 %_WINCEROOT%\public\Common\Oak\Drivers\EthDbg\Bootpart
加入以下的registry後,BOOTPART 就可以認得 Bootpart create的 BOOT 和 BINFS partition:
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"20"="BOOT"
"21"="BINFS"
第二步 修改 Config.bib
增加一個 EXT 記憶體區域,Type是 NANDIMAGE
NANDIMAGE Type 是 "不會被allocate memory" 的區域。 (但是還是要宣告出一塊address range ?)。
NK 800B8000 00300000 RAMIMAGENK (RAMIMAGE)這塊區域是在boot的時候,會被load到RAM里的,所以BINFS需要的driver 都要放到NK中:
EXT 803B8000 01000000 NANDIMAGE
CHAIN 813B8000 00001000 RESERVED
- 有一堆....NK.exe, Kernel.dll, Coredll.dll, Oalioctl.dll, Fsdmgr.dll, mspart.dll, romfsd.dll, binfs.dll filesys.dll,, flash driver,, device.dll... 一堆
- RAM_AUTOSIZE=OFF
- ROM_AUTOSIZE=OFF
- 設定 XIPCHAIN=chain region 的開始位址。
第三步 修改 Platform.reg
BinFS Registry Settings
[HKEY_LOCAL_MACHINE\System\StorageManager\BinFS]
"FriendlyName" = "Bin FileSystem"
"Dll" = "binfs.dll"
"Paging"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManger\Profile\MSFlash]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"MountHidden"=dword:1
"MountAsRom"=dword:1
"Folder"="NAND Flash"
"Name"="Flash Disk Block Device"
這樣就完了 ? 不知道要怎樣把build出來的image (*.nb0, *.bin) download 到nandflash 中,用 Kitl 嗎? 還是要 用 eboot bootpart ?
ref 這一篇後...
這樣做之後,Config.bib 中,RAM 區域的開始位址,就可以設為 EXT (NANDIMAGE)的起始位址,也就是說,使用 BINFS 後,OS 的 RAM 就多了 (NANDIMAGE)這塊區域可以運用了。
當所有 NANDIMAGE 區域的 dll 都不需要 load 的時候,OS 的 RAM 就可以使用 這整塊,全部的區域。
可不可以這樣說:使用BINFS 後,RAM 可以增加的size,最大是 NANDIMAGE 這麼大。..
1 則留言:
Dear Sir,
我有一些XIP的問題想要請教,
不知是否方便連絡?
我的e-mail
chayoung.tw@yahoo.com.tw
張貼留言