今天实验了下multi-XIP功能,大致步骤如下:
1.修改config.bib
RAM 82b00000 01400000 RAM
ABC 82b00000 00100000 NANDIMAGE ;起始地址与RAM重叠
CHAIN 83f00000 00001000 RESERVED
AUTOSIZE=ON
RAM_AUTOSIZE=OFF
ROM_AUTOSIZE=OFF
COMPRESSION=ON
KERNELFIXUPS=ON
DLLADDR_AUTOSIZE=ON
XIPSCHAIN=83f00000 ;必须等于CHAIN
2.修改platform.bib,将需要的文件放到ABC中去
PSConfig.psr $(_FLATRELEASEDIR)/PSConfig.psr ABC S
btagext.dll $(_FLATRELEASEDIR)/btagext.dll ABC SH
这样,PSConfig.psr与btagext.dll就放到/binfs目录里面了。
3.修改注册表,加上
[HKEY_LOCAL_MACHINE/System/StorageManager/BinFS]
"FriendlyName"="BIN Filesystem"
"Dll"="binfs.dll"
"Paging"=dword:1
必须加在 ; HIVE BOOT SECTION与; END HIVE BOOT SECTION之间.
在我的系统上,关于文件系统这一块的注册表设置为
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE/init/BootVars]
"SYSTEMHIVE"="system.hv"
"Start DevMgr"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE/init/BootVars]
"DefaultUser"="default"
[HKEY_LOCAL_MACHINE/Drivers/BlockDevice/SMFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="SMFLASH"
"FriendlyName"="MS Flash Driver"
"MountFlags"=dword:10
"BootPhase"=dword:0
"Flags"=dword:1000
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/SMFLASH]
"DriverPath"="Drivers//BlockDevice//SMFLASH"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:1
"Flags"=dword:1000
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/SMFLASH]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"Folder"="ResidentFlash"
"Name"="Microsoft Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/SMFLASH/FATFS]
"FriendlyName"="FAT FileSystem"
"Dll"="fatfsd.dll"
"Flags"=dword:00280014
"Paging"=dword:1
"CacheSize"=dword:0
"EnableCacheWarm"=dword:0
"EnableCache"=dword:1
"MountFlags"=dword:2
[HKEY_LOCAL_MACHINE/System/StorageManager/BinFS]
"FriendlyName"="BIN Filesystem"
"Dll"="binfs.dll"
"Paging"=dword:1
; END HIVE BOOT SECTION
4.加入Hive-based Registry,BINFS,FATFS,STORE MANAGER.我就因为忘记加BINFS而导制CPartition::MountPartition()->LoadDriver()出错.
5.sysgen
6.下载xip.bin.