阅读:2263回复:6
pxa270 strata flash 注册表保存问题(非xip)
两片16M J3 strata flash.前面31M用于存放内核,最后1M用于注册表保存,内核拷贝到sdram运行。现在通过使用msflash驱动实现1M strata flash存储空间,可以在启动CE后对这个存储空间进行操作。但是使用hive注册表,发现启动不了,注册表如下:
; HIVE BOOT SECTION IF IMGULDR [HKEY_LOCAL_MACHINE\Drivers\BlockDevice\RAMDisk] "Size"=dword:00800000 ; 8MB ENDIF IMGULDR ; END HIVE BOOT SECTION ; @CESYSGEN ENDIF CE_MODULES_RAMDISK ; HIVE BOOT SECTION ;------------------------------------------------------------- ; MsFlash(Strata Flash Driver) ;------------------------------------------------------------- ; StrataFlash block driver. [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD] "Dll"="stratad.dll" "Order"=dword:2 "Prefix"="DSK" "Ioctl"=dword:4 "Profile"="MSFlash" "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}" "IsPairedFlash"=dword:1 "BlockSize"=dword:40000 "WriteBufferSize"=dword:40 "MemBase"=dword:BC900000 "MemLen"=dword:100000 ; Support XIP in IMGFS [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS] "XIP"=dword:1 ; Override names in default profile [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash] "Name"="MSFLASH for STRATAFLASH" "Folder"="NOR Flash" [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash] "DriverPath"="Drivers\\BuiltIn\\StrataFMD" ; LoadFlags 0x01 == load synchronously "LoadFlags"=dword:1 "Order"=dword:0 "BootPhase"=dword:0 ; Override names in default profile [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash] "DefaultFileSystem"="FATFS" "PartitionDriver"="mspart.dll" "AutoMount"=dword:1 "AutoPart"=dword:1 "AutoFormat"=dword:1 "BootPhase"=dword:0 "Name"="MSFLASH for STRATAFLASH" "Folder"="Flash" "MountFlags"=dword:2 "MountAsBootable"=dword:1 [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS] "FriendlyName"="FAT FileSystem" "Dll"="fatfsd.dll" ;"Flags"=dword:00000024 "Paging"=dword:1 "CacheSize"=dword:0 "EnableCacheWarm"=dword:0 "EnableCache"=dword:1 "MountFlags"=dword:2 ; Valid Bits for Flags registry value ; If no flags are set, the hive will be stored in the object store. ; ; 0x00000001 Start storage manager in boot phase 1 for hive-based registry ; 0x00000002 Start device manager in boot phase 1 for hive-based registry ; 0x00000004 Start storage manager in boot phase 1 for registry in ; external ROM (such as BINFS) ; 0x00000008 Start device manager in boot phase 1 for registry in ; external ROM (such as BINFS) [HKEY_LOCAL_MACHINE\init\BootVars] "SystemHive"="Documents and Settings\\system.hv" "ProfileDir"="Documents and Settings" "Start DevMgr"=dword:1 "Flags"=dword:3 "RegistryFlags"=dword:1 [HKEY_LOCAL_MACHINE\init\BootVars] "DefaultUser"="default" ; END HIVE BOOT SECTION 其中下面几个字段是自己天加上去的 ; HIVE BOOT SECTION ; END HIVE BOOT SECTION [HKEY_LOCAL_MACHINE\init\BootVars] "SystemHive"="Documents and Settings\\system.hv" "ProfileDir"="Documents and Settings" "Start DevMgr"=dword:1 "Flags"=dword:3 "RegistryFlags"=dword:1 请做过strata flash保存的帮忙看一下? debug模式启动信息如下: Booting kernel with clean memory configuration: Memory Sections: [0] : start: 81cae000, extension: 00007000, length: 0632b000 Sp=ffffc7cc ARMInit done. Windows CE KernelInit Updated eptr->e32_vsize to = 000af000 Scheduling the first thread. 0x87fdf024: KernelInit2: pCurThread=87fdf024 hCurThread=07fdf266 hCurProc=07fdf002, KernelInit = 801269f8 0x87fdf024: Detecting VFP...0x87fdf024: VFP Not Found! 0x87fdf024: first = 01de0000, last = 02000000, SharedDllBase = 022c0000 0x87fc8024: CertMod.dll not found, using old OEM Trust Model 0x87fc8024: FileSystem Starting - starting with clean file system 0x87fc8024: FS: initializing ROM/RAM file system 0x87fc8024: SC_CreateAPIHandle: pvData == NULL 0x87fc8024: FS: Registering file system ROM, index 2, flags 0x00000031 0x87fc8024: FS: Mount complete (ROM, index 2, flags 0x00000031) 0x87fc8024: InitSharedHeap: 4a000000 10000 c 0x87fc8024: InitSharedHeap: return 4a000060 0x87fc8024: FSREG: Unable to read value "NoDefaultUser" under HKEY_LOCAL_MACHINE\init\BootVars 0x87fc8024: FSREG: Logging in default user. 0x87fc8024: FSREG: Unable to read value "DefaultUser" under HKEY_LOCAL_MACHINE\init\BootVars 0x87fc8024: SetCurrentUser: Logging out (nobody), logging in default 0x87fc8024: FS: Using default path "\profiles\" 0x87fc8024: BuildPath: profiles 0x87fc8024: BuildPath: profiles\default 0x87fc8024: SetCurrentUser: User hives not supported -- using same registry for all users 0x87fc8024: FS: Using default path "Windows\" 0x87fc8024: FS: Using default path "Windows\" 0x87fc8024: FSREG: Unable to read value "DBFlags" under HKEY_LOCAL_MACHINE\init\BootVars 0x87fc8024: Initializing Database 0x87fc8024: DB:Validation: Name already exists DB_notify_events 0x87fc8024: DB:CeCreateDatabase failed 0x87fc8024: Filesystem initialized! 0x87fc8024: FILESYS: Waiting for kernel to be ready to launch apps 0x87fcba40: InitMUI: DISABLED (-1039860968) 0x87fc8024: FS: HKLM\System\Events not available, no signal events created. 0x87fc8024: FILESYS: Launching apps 0x87fc8024: ERROR: d:\macallan\private\winceos\coreos\filesys\main\fsmain.c line 4103: 0x87fc8024: Unable to locate init key for starting apps! 0x87fc8024: FILESYS: Done launching apps 0x87fc8024: This device has booted 1 times !!! |
|
沙发#
发布于:2007-12-18 17:40
注册表参照了rilyyu的帖子,但是还是不能启动?请大侠们帮忙
|
|
板凳#
发布于:2007-12-18 18:21
补充一下,没有在eboot下进行分区划分
|
|
地板#
发布于:2007-12-18 20:46
问题已解决!
hive的说明文档中有如下的描述: The run-time image originally did not include the hive-based registry, and a full clean build did not complete. Be sure you complete a clean build after including the Hive-based Registry Catalog item in your OS design. 所以clean后build and sysgen就启动hive了 |
|
地下室#
发布于:2007-12-21 15:28
周兄,干地好
积极 进取! ps:你的strata.dll是怎么生成的?对shtrata.def怎么处理的?FMD_Erase怎么往里加啊? |
|
5楼#
发布于:2007-12-22 09:04
上面贴的注册表是可以用的,直接拷贝public下的strata驱动可以直接编译,生成strata.dll。strata.def那些导出函数可以不去理会,能编译通过的。FMD_Erase也不会修改
|
|
6楼#
发布于:2008-05-08 11:02
strata.def那些导出函数可以不去理会,能编译通过的。"
为什么我的通不过呢? |
|
|