由于NANDFlash驱动使用的是MDD+PDD+FMD架构,用flashpart.dll进行分区,关于NAND的注册表内容特别不一样。在网上查询的以前成功的经验都没法使用,让我在这个上面花费了很长时间,不过也让我在这个时间了解了更多关于注册表,驱动,存储管理等等相关的基础知识。虽然很简单,但是是自己完成的第一个wince的任务。记录一下,鼓励激励我。最终实现实现hive过程如下:
1、 在工程文件catalog中,添加hive支持
选择 catalog-------Core OS------CEBASE-------File Systems and Data Store,添加如下两项
其中,Hive-based Registry 必选,而File System选择适合的一项。
2、 添加环境变量PRJ_ENABLE_FSREGHIVE
选择 project-------properties----------configuration properties---------Environment
添加PRJ_ENABLE_FSREGHIVE=1.
关于PRJ_ENABLE_FSREGHIVE为什么需要添加,可看common.reg寻找原因。
3、 修改注册表,添加注册表支持。
修改platform.reg中bootvars
[HKEY_LOCAL_MACHINE/init/BootVars]
"Start DevMgr"=dword:1
"DefaultUser"="default"
"Flags"=dword:1
"RegistryFlags"=dword:1
(对于system.hv以及user.hv采用common.reg设置)
修改drivers安定storagemanager
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NAND_Flash]
Flags"=dword:1000
(确保drivers在第一阶段并只在第一阶段被加载)
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk]
"MountAsBootable"=dword:1
(保证hive注册表存放在nandflash中)
因为在common.reg中,添加环境变量PRJ_ENABLE_FSREGHIVE=1以后,会修改msflash以及HDProfile的选项,在platform.reg中添加修改如下
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/MSFlash]
"MountAsBootable"=dword:0
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
"MountAsBootable"=dword:0
最终,注册表相关表项如下
[HKEY_LOCAL_MACHINE/init/BootVars]
"Start DevMgr"=dword:1
"DefaultUser"="default"
"Flags"=dword:1
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/EXFAT]
"FormatExfat"=dword:0
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDisk]
"Name"="NAND FLASH"
"Folder"="NANDFlash"
"AutoPart"=dword:1
"AutoFormat"=dword:1
"PartitionDriver"="flashpart.dll"
"MountAsBootable"=dword:1
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/MSFlash]
"MountAsBootable"=dword:0
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
"MountAsBootable"=dword:0
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NAND_Flash]
"Profile"="FlashDisk"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}",
"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
"Order"=dword:0
"FriendlyName"="Freescale NAND FLASH Driver"
"Dll"="flashmdd.dll"
"FlashPddDll"="flashpdd_nand.dll"
"Prefix"="DSK"
"Flags"=dword:1000
4、重新编译内核,即可生效。