rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
阅读:3366回复:16

如何从XIP改成实现hive注册表和mflash

楼主#
更多 发布于:2007-04-06 15:52
  请问一下各位大侠,小弟的平台是pxa270,wince5.0原来的bsp是xip的nk直接在norflash里运行
现在想实现mflash和hive注册表需要做那些改动啊。
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-06 19:03
寻求第三方支持,例如IPSM
或是让你的OS在RAM中运行
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-12 16:37
请问IPSM是什么,如何寻求其支持。
更重要的问题是我现在已经将os改为在ram中运行,并且仿照操作nandflash的方法将norflash分成了binfs分区和扩展分区(这里并不是太理解)
现在需要stratad.dll来挂载MSFLASH分区。这个dll如何得到?
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-12 19:28
PB里已经带有了这个驱动
F:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD\STRATA
参考XSC1BD的BSP
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-13 09:38
谢谢wenzai 我用的是CE5.0,其中也有这个驱动
但是我将驱动加入平台编译时,有错误发生,有几个宏没有定义
WRITE REGISTER ULONG 什么的 真是烦阿
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-13 12:13
WRITE REGISTER ULONG 未定义?
加上个头文件看看 ceddk.h
努力! 成功就在不远处....
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-04-13 15:17
谢谢saint_bxg,我在Targetlibs里加了ceddk.lib这个错误就没有了。应该加上头文件ceddk.h也可以的吧。
现在终于把stratad.dll编译出来了。可是还是没有出现MSFLASH文件夹。注册表里的membase,和memlen应该写什么啊。是eboot里分出的扩展分区的起始地址和大小吗?
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-04-13 16:57
谢谢两位大侠的帮助,MSFLASH文件夹终于出现了,我发现membase,memlen的值可以随便设定,甚至可以把membase的值设到放nk的区域里,不过这样只能启动一次,因为nk会被写坏。所以我觉的在eboot里把flash分为binfs和扩展分区也是没有必要的。于是实验了一下,eboot中直接用flashwrite把解包后nk写到flash中同样可以正常启动和实现MSFLASH。下面要继续尝试搞定hive了
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-04-13 23:06
恭喜rilyyu兄弟!
你的membase,memlen是设置什么的?设置 做存储设备的FLASH的 起始地址和大小?
努力! 成功就在不远处....
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-04-14 10:38
我的平台有2片16M的norflash地址是连续的.从BCA00000到BEA00000
其中BCA00000到BCA80000是放eboot和启动参数的
NK的大小大概是0x16xxxxx
所以MEMBASE设的是BE180000 MEMLEN设的是(BEA0000-BE180000)
但是我试验发现MEMBASE设任意值,只要落在flash地址范围内都可以
比如可以把MEMBASE设成BCA80000
同样可以启动,并出现flash文件夹
只不过这样下次就启动不起来了
第一次启动时会很慢,应该是驱动程序在对需要挂载flash进行格式化,下一次就不会了.
MEMBASE应该只要不设置到NK区域内任何一个位置都是可以的.
city_lovelace
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2007-07-05
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-06-26 22:51
请问rilyyu:
       你是如何编译出strata.dll的?它的def文件里面都是导出DSK_XXX这样的函数,难道都改成 FMD_XXX这样的?
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-06-29 09:42
呵呵,太久了,我都有点忘了。刚看了一下def导出的确实是DSK_XXX
也不需要改成FMD_XXX
除非你是用在boot程序里面配合mspart.dll用吧(??)
city_lovelace
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2007-07-05
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-06-29 13:50
多谢rilyyu,我这几天为这个问题人都快疯了。
我是这样做的:
1、把public下的strata目录拷贝到我的BSP目录下,修改stratad中的SOURCE文件为
        TARGETTYPE  = DYNLINK
      并引用相应的lib文件;
2、编译的时候发现stratad.def文件中的export的函数全为DSK_Open、DSK_Init...,同时还没有DLLMain函数,也不知道怎么修改,只好把fmd.c中以FMD_打头的函数定义在strata.def中
3、编译倒是通过了,将stratad.dll加入platform.bib,然后将stratad.reg的内容加入到platform.reg,并修改下面的内容
        "MemBase"=dword:81000000    
        "MemLen"=dword:00200000

现在发现最后发现根本就不会调用FMD_Init,不知道问题出在什么地方?
rilyyu,希望能与你更直接的沟通,我的QQ:1268871,MSN:city_lovelace@hotmail.com,再次表示我诚挚的感谢!
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-06-29 23:06
呵呵 星期一上班了再和你联系
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-07-02 09:24
贴出sources 及reg供你参考

TARGETNAME=stratad
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
DLLENTRY=DllMain
DEFFILE=stratad.def

WINCEOEM=1
WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\stratad.def
INCLUDES=..\

TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib\
           $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\CEDDK.lib  
        
    
SOURCELIBS= $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fal.lib

CDEFINES=$(CDEFINES) -DREAD_FROM_REGISTRY

SOURCES=..\fmd.cpp

reg文件
; 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}"
   "MemBase"=dword:BE580000      
   "MemLen"=dword:00480000

; 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
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-07-02 15:11
在wince5.0下自己设置一下环境变量sysgen_msflash=1就可以得到动态链接库,不需要把他们考出来并且改source文件,怕还需要连接其他的库。
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-07-03 09:21
是楼上说的这样的,lib如何链接成dll可以在makedef文件中找到。
游客

返回顶部