注册表需要保存到NAND FLASH里面,需要在boot.hv里就加载FAT文件系统来访问
存储在第一个盘里面的system.hv,user.hv. 所以要在注册表中把加载第一部分
FAT的项目放在
“; HIVE BOOT SECTION”
;items to load
“; END HIVE BOOT SECTION”
S3C6410平台上,BSP为20080918(支持MLC),要支持注册表保存,步骤如下:
1.catalog里选中Hive-based Registry
2.修改platform.reg. 改动有以下几处
IF IMGHIVEREG
[HKEY_LOCAL_MACHINE/Init/BootVars]
"RegistryFlags" = dword:1 ;设置注册表每次改动后自动flush到system.hv
"Flags"=dword:3
ENDIF IMGHIVEREG
。。。。。
IF BSP_POCKETMORY
;添加以下三行。 即把FLASH的第一部分放在BOOT.HV里加载
IF IMGHIVEREG
; HIVE BOOT SECTION
ENDIF IMGHIVEREG
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/FlashDisk]
"Prefix"="DSK"
"Dll"="ONDisk.dll"
"Order"=dword:1
; "Index"=dword:1
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="FlashDisk"
"BmlVolumeId"=dword:0 ; BML volume ID = 0
"BmlPartitionId"=dword:8 ; BML parition ID = PARTITION_ID_FILESYSTEM
"WMRStartSector"=dword:0
"WMRNumOfSector"=dword:10000 ; 32MByte
"Flags"=dword:11000 ; do not load again in boot phase 2 ;一定要打开,不然会多一个盘
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Name"="PocketMory MLC Disk"
; "Folder"="PocketMory"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:2 ;这里要打开并且修改为2,表示可以存储HIVE文件
; "Ioctl"=dword:4
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/FlashDisk]
"DriverPath"="Drivers//BuiltIn//FlashDisk"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"BootPhase"=dword:0
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk/FATFS]
"FriendlyName"="PocketMory FAT FileSystem"
; "Dll"="fatfsd.dll"
"Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT |
FATFS_DISABLE_AUTOSCAN
"Folder"="PocketMory"
"FormatExfat"=dword:1
; "EnableCacheWarm"=dword:0
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/FlashDisk/Filters/CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk/FATFS/Filters/CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
;添加以下三行。
IF IMGHIVEREG
; END HIVE BOOT SECTION
ENDIF IMGHIVEREG
;----------------------------------------------------------------------------
; 2nd FAT Area
;----------------------------------------------------------------------------
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/FlashDisk1]
"Prefix"="DSK"
"Dll"="ONDisk.dll"
"Order"=dword:1
; "Index"=dword:1
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="FlashDisk1"
"BmlVolumeId"=dword:0 ; BML volume ID = 0
"BmlPartitionId"=dword:9 ; BML parition ID = PARTITION_ID_FILESYSTEM1
"WMRStartSector"=dword:10000
"WMRNumOfSector"=dword:ffffffff ; last location
; "Flags"=dword:11000 ; do not load again in boot phase 2 ;
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk1]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Name"="PocketMory MLC Disk1"
; "Folder"="PocketMory1"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
; "MountFlags"=dword:0
; "Ioctl"=dword:4
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/FlashDisk1]
"DriverPath"="Drivers//BuiltIn//FlashDisk1"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"BootPhase"=dword:0
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk1/FATFS]
"FriendlyName"="PocketMory FAT FileSystem1"
; "Dll"="fatfsd.dll"
"Flags"=dword:00000014 ; FATFS_ENABLE_BACKUP_FAT |
FATFS_DISABLE_AUTOSCAN
"Folder"="PocketMory1"
"FormatExfat"=dword:1
; "EnableCacheWarm"=dword:0
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/AutoLoad/FlashDisk1/Filters/CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk1/FATFS/Filters/CacheFilt]
"Dll"="cachefilt.dll"
"LockIOBuffers"=dword:1
ENDIF BSP_POCKETMORY
3.用“Build Current BSP and Subprojects”编译。 OK!