gerryzhou
驱动小牛
驱动小牛
  • 注册日期2006-05-14
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望133点
  • 贡献值0点
  • 好评度132点
  • 原创分0分
  • 专家分0分
阅读:2210回复:6

pxa270 strata flash 注册表保存问题(非xip)

楼主#
更多 发布于:2007-12-18 10:57
两片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 !!!
 
gerryzhou
驱动小牛
驱动小牛
  • 注册日期2006-05-14
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望133点
  • 贡献值0点
  • 好评度132点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-12-18 17:40
注册表参照了rilyyu的帖子,但是还是不能启动?请大侠们帮忙
gerryzhou
驱动小牛
驱动小牛
  • 注册日期2006-05-14
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望133点
  • 贡献值0点
  • 好评度132点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-12-18 18:21
补充一下,没有在eboot下进行分区划分
gerryzhou
驱动小牛
驱动小牛
  • 注册日期2006-05-14
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望133点
  • 贡献值0点
  • 好评度132点
  • 原创分0分
  • 专家分0分
地板#
发布于: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了
lester98
驱动牛犊
驱动牛犊
  • 注册日期2007-11-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望36点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-12-21 15:28
周兄,干地好
积极 进取!

ps:你的strata.dll是怎么生成的?对shtrata.def怎么处理的?FMD_Erase怎么往里加啊?
gerryzhou
驱动小牛
驱动小牛
  • 注册日期2006-05-14
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望133点
  • 贡献值0点
  • 好评度132点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-12-22 09:04
上面贴的注册表是可以用的,直接拷贝public下的strata驱动可以直接编译,生成strata.dll。strata.def那些导出函数可以不去理会,能编译通过的。FMD_Erase也不会修改
guoguor
驱动小牛
驱动小牛
  • 注册日期2004-10-10
  • 最后登录2012-03-06
  • 粉丝0
  • 关注0
  • 积分1023分
  • 威望203点
  • 贡献值0点
  • 好评度117点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-05-08 11:02
strata.def那些导出函数可以不去理会,能编译通过的。"
为什么我的通不过呢?
一个小虾米,加油......
游客

返回顶部