軟件平臺:wince600
硬件平臺:深圳友堅恆天科技 UT_S3C6410開發板
http://www.urbetter.com實現方法:
1. 必須加入HIVE based regiters這個組件到OS(在PB右邊的文件系統選項裏)
2. 註冊表添加,必須將一下部分加入你的註冊表中實現hive
;HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE/init/BootVars]
"SYSTEMHIVE"="Documents and Settings//system.hv" ;system.hv會保存到/HDD/Documents and Settings/system.hv
;"PROFILEDIR"="Documents and Settings" ;user.hv會保存到/HDD/Documents and Settings/default/user.hv
"Start DevMgr"=dword:1 ;這個說是啓動device.exe,但是wince 5.0好像不用這個
"DefaultUser"="default" ;咱們只有一個用戶default,基本上就是決定user.hv的路徑了
"Flags"=dword:3 ;這個應該是wince 5.0下決定在哪個階段啓動device.exe的表項
"RegistryFlags"=dword:1 ;這個就是設置註冊表每次改動後自動flush到system.hv
;###########################################################################
;這個部分是binfs的註冊表項,如果你不是用的binfs那麼不用將它們拉到boot.hv中
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/SMFlash]
"DriverPath"="Drivers//BlockDevice//SMFlash"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:0
"Flags"=dword:1000
[HKEY_LOCAL_MACHINE/Drivers/BlockDevice/SMFlash]
"Prefix"="DSK"
"Dll"="BIBDrv.dll"
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="SMFlash"
"FriendlyName"="Samsung Flash Driver"
"MountFlags"=dword:11
"BootPhase"=dword:0
"Flags"=dword:1000
; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/SMFlash]
"DefaultFileSystem"="BINFS" ;binfs的路徑爲/BINFS
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"MountFlags"=dword:11
"Folder"="ResidentFlash"
"Name"="Samsung Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000
"MountHidden"=dword:0
;###########################################################################
;###########################################################################
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/PocketStore]
"Prefix"="DSK"
"Dll"="ONDisk.dll"
"Order"=dword:1
"Profile"="PocketStore"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"BmlVolumeId"=dword:0 ; BML volume ID = 0
"BmlPartitionId"=dword:8 ; BML parition ID = PARTITION_ID_FILESYSTEM
"Index"=dword:2
"Flags"=dword:1000 ;這個flag指定這個驅動只在boot.hv中加載一次
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/PocketStore]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountAsBootable"=dword:1 ;這個是wince 5.0下指定這個分區保存system.hv的關鍵
"Folder"="HDD"
"Name"="NAND Drive"
"Ioctl"=dword:4
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/PocketStore/FATFS]
"EnableCacheWarm"=dword:0
ENDIF
;###########################################################################
;END HIVE BOOT SECTION
; HIVE BOOT SECTION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Support BINFS Section
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Add BinFS to partition table
[HKEY_LOCAL_MACHINE/System/StorageManager/PartitionTable]
"21"="BINFS"
[HKEY_LOCAL_MACHINE/System/StorageManager/BINFS]
"Folder"="BINFS"
"FriendlyName"="Bin FileSystem"
"Dll"="binfs.dll"
; MountFlags:
; 0x10 specifies that this file system is to be mounted as an external
; ROM filesystem shadowing the /windows directory
; 0x1 specifies that the mountpoint /BINFS is to be hidden
;
"MountFlags"=dword:10
"BootPhase"=dword:0
; END HIVE BOOT SECTION
3. config.bib文件修改
MEMORY
pdwXIPLoc 00000000 803FF000 FIXUPVAR
XIPKERNEL 80200000 001FF000 RAMIMAGE
CHAIN 803FF000 00001000 RESERVED
NK 80400000 01E00000 NANDIMAGE
RAM 80400000 07C00000 RAM
FLASH 92000000 00100000 RESERVED
CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF
ROMFLAGS=0
;ROMSIZE=01E00000
;ROMSTART=800B8000
;ROMWIDTH=32
ROM_AUTOSIZE=OFF
XIPSCHAIN=803FF000
4. 必須將下列文件加入到XIPKERNEL裏
"nk.exe",
"coredll.dll",
"filesys.exe",
"fatfsd.dll",
"diskcache.dll",
"fatutil.dll",
"binfs.dll",
"fsdmgr.dll",
"mspart.dll",
"smflash.dll",
"boot.hv",
加入方法如下:
nk.exe $(_FLATRELEASEDIR)/kern.exe XIPKERNEL SH
其他項類似方法添加.
注:可以直接修改common.bib文件
編譯完成後,將xip.bin文件燒寫到你的板子上即可.