saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
阅读:5711回复:41

MX21 NAND CE5.0 HIVE的问题。做过的大哥请指导一下!谢谢了!

楼主#
更多 发布于:2007-03-13 17:25
  想把HIVE放到NAND FLASH上,FATFS文件系统。参考了网上关于做HIVE方法,做了如下设置:

1.在platform.reg中
[HKEY_LOCAL_MACHINE\init\BootVars]下
    "SYSTEMHIVE"="NAND Flash\\system.hv" (common.reg中也改为如此)
    "PROFILEDIR"="NAND Flash"
      "Flags"=dword:2 (添加,否则系统起不来)
                      (RegistryFlags默认为1)
2.默认的,NAND驱动和FATFS文件系统都在HIVE BOOT SECTION,END HIVE BOOT SECTION 中,所以没做修改

3. common.reg中[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]下添加
    "Flags"=dword:1000
   NAND 注册表中也添加"Flags"=dword:1000(但系统起来之后却看不到NAND 分驱了)。

4. 在NAND 注册表中
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash\FATFS]下
添加  "MountFlags"=dword:2

系统起来后,只见system.hv在NAND Flash文件夹中(commmon.reg中不设置的话
不会出现这样的情况),且若是NAND注册表中未添加"Flags"=dword:1000的话,
可以看到NAND分驱,但名字却是NAND Flash2了。
当然,弄了一天,到最后,断电后还是不能保存注册表。
哪位大哥有做过的,请指导一下小弟!先谢过了!
努力! 成功就在不远处....
dreamzqw
驱动牛犊
驱动牛犊
  • 注册日期2004-11-25
  • 最后登录2019-04-08
  • 粉丝1
  • 关注0
  • 积分19分
  • 威望182点
  • 贡献值0点
  • 好评度55点
  • 原创分1分
  • 专家分2分
沙发#
发布于:2007-03-14 11:14
你试试在断电前先"开始"-->"挂起",等鼠标再动了再断电.
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-14 12:31
谢谢dreamzqw兄的回复!

我试过了,还是不行。
RESET是可以保存注册表的,但断电却不行。
感觉在platfrom.reg中设置 "SYSTEMHIVE"="NAND Flash\\system.hv"
                           "PROFILEDIR"="NAND Flash"
没有有用,这两项只在common.reg中设置有用,且可以看到目录下有system.hv和user.hv,这样看来我是没有把注册表保存在NAND中了,那应该如何设置呢?我看了很多文章,设置的地方就那么几个,难道5.0中还有其他地方要改动?
努力! 成功就在不远处....
milkyway1888
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2011-05-07
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望97点
  • 贡献值0点
  • 好评度91点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-14 14:15
请参考zhuxudong 的帖子:

CE5.0下实现hive-registry

最近把ce5.0下的注册表保存实现了,在这里贴出来我的实现过程。我的平台是S3C2440,NANDFLASH是64M的k9f1208。注册表是保存在nandflash上。希望能对正在做的兄弟有所帮助。有些地方是我的个人理解,不正确的地方还请大侠批评指正。呵呵
1、添加hive-registry组件
2、在platform.reg中添加
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
   "SYSTEMHIVE"="system.hv"
   "Start DevMgr"=dword:1
          "RegistryFlags"=dword:1
; END HIVE BOOT SECTION
这部分跟4.2下是一样的
3、在nandflash的相关驱动中添加"flags"=dword:1000
; HIVE BOOT SECTION
IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
  "DefaultFileSystem"="BINFS"
  "AutoPart"=dword:1
  "AutoMount"=dword:1
  "PartitionDriver"="mspart.dll"
  "Name"="Microsoft Flash Disk"
  "Folder"="ResidentFlash"
  "BootPhase"=dword:0
  "flags"=dword:1000 ;add
  
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
  "Prefix"="DSK"
  "Dll"="smflash.dll"
  "Index"=dword:1
  "Order"=dword:0
  "Profile"="SMFLASH"
  "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
  "flags"=dword:1000 ;add
  
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
  "DriverPath"="Drivers\\BuiltIn\\SMFLASH"
  ; LoadFlags 0x01 == load synchronously
  "LoadFlags"=dword:1
  "BootPhase"=dword:0
  "flags"=dword:1000 ;add
ENDIF ; BSP_NONANDFS
; END HIVE BOOT SECTION

4、添加[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\BINFS]项。具体如下:
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\BINFS]
    "MountAsBootable"=dword:1   ;;等价于4.2下的mountflag=dword:2,指明注册表保存在此文件系统下。
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
    "MountAsBootable"=dword:1 ;;这里我也加了这句话,应该是不起作用。我没有去掉它试过。网友可以试一下。
5、重新编译

下面是几点说明,还请网友注意下。要不然最有可能出现的状况就是添加hive之后,ce就起不来了。
1、在添加hive之前,一定要保证flash(或其他介质)是可用的。可以先在ram-registry下调试好
2、要将flash(或其他介质)分区格式化成某一种文件系统。如果是binfs,像我这样设置就可以了。如果是其他文件系统,如FATFS,就要做相应的修改。还有一个问题要注意,就是注册表存放的位置不要占用nk的区域,否则ce就只能启动一次。nk被破坏掉了,第二次上电wince也就起不来了。
3、虽然pb5.0的关于hive的帮助中说在相关的注册表项中添加mountflag=dword:2,但mountflag的值在ce5.0下是忽视的,具体查看相关文档。所以要使用"MountAsBootable"=dword:1
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-14 15:27
多谢milkyway1888兄弟的回复!

我试一下

我还想问一下,在common.reg中不用改吗?你说的把注册表放在nandflash,是放在了哪部分的?我的nandflash分成了MBR,BINFS,FATFS部分。我的理解是放在FATFS部分,但你又提到“如果是其他文件系统,如FATFS,就要做相应的修改”你不是放在FATFS部分的吗?
我在common.reg中设置了system.hv的存储路径之后,系统起来之后可以看到在设置的目录文件夹下有system.hv和user.hv,但不是在NAND FATFS部分,我感到很奇怪。
努力! 成功就在不远处....
milkyway1888
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2011-05-07
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望97点
  • 贡献值0点
  • 好评度91点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-03-15 10:28
上面的文件系统采用的是BINFS,你要HIVE到FATFS部分,应该把 "MountAsBootable"=dword:1 添加到[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]下.
common.reg中不用改
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-03-15 12:52
谢谢milkyway1888!

但,怪了,试了多次,依旧不行。郁闷了
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-03-16 11:12
milkyway1888大哥,我也正在弄HIVE,照着你3楼的注册表设置了一下,可是还是不行,启动后,打出一条信息:0X87FC3024:FILESYS:Starting device and waiting for boot file system.
然后就不动了,我在没有HIVE的情况下,可以跑了。做HIVE前,我先用BP_LowlevelFormat把整个NAND格式化了一次。
注册表设置如下:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
  "SYSTEMHIVE"="Documents and Settings\\system.hv"
  "Start DevMgr"=dword:1
   "RegistryFlags"=dword:1
; END HIVE BOOT SECTION

; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH]
"DefaultFileSystem"="BINFS"
"AutoPart"=dword:1
"AutoMount"=dword:1
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
"Folder"="ResidentFlash"
"BootPhase"=dword:0
"flags"=dword:1000

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="MSFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"flags"=dword:1000

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFLASH]
"DriverPath"="Drivers\\BuiltIn\\MSFLASH"
"LoadFlags"=dword:1
"BootPhase"=dword:0
"flags"=dword:1000 ;
; END HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH\BINFS]
  "MountAsBootable"=dword:1 [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH]
  "MountAsBootable"=dword:1

最后这两条没放在HIVE里,能帮我分析一下是什么原因没启动起来吗?
我试了把; HIVE BOOT SECTION    ; END HIVE BOOT SECTION去掉,就可以起来。
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-03-16 11:14
saint_bxg :你是把BIN分成多块的还是只用一个NK.BIN?
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-03-16 13:29
只是一个nk.bin
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-03-16 14:52
我现在一加HIVE就启不来了,能不能贴出你的注册表给我参考一下,

谢谢  
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-03-16 15:08
jasonshi:你那样设置之后,系统起来能看到NAND盘吗?
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-03-16 15:14
我加了HIVE后,系统根本就起不来了  
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-03-16 15:14
我改的就这两个地方
platform.reg中
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
    "SYSTEMHIVE"="NAND Flash\\system.hv"        ; have changed.
    "PROFILEDIR"="NAND Flash"
    "RegistryFlags"=dword:1
    "Flags"=dword:1
    "Flags"=dword:2                  ; have changed. add
; END HIVE BOOT SECTION

NAND驱动注册表nandfcd.reg中
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NandFlash]
    "Dll"="nandfcd.dll"
    "Order"=dword:0
    "Prefix"="DSK"
    "Profile"="NandMSFlash"
    "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
    "FriendlyName"="i.MX21 NAND FLASH Driver"
        "Flags"=dword:1000       ;have changed. add

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash]
    "Name"="i.MX21 NAND FLASH"
    "Folder"="NAND Flash"
    "DefaultFileSystem"="FATFS"
    "AutoMount"=dword:1
        "AutoPart"=dword:1
        "AutoFormat"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash\FATFS]
    ; Override common setting to enable automatic formatting of unformatted volumes
    "Flags"=dword:00000024
    "MountAsBootable"=dword:1        ;have changed. add
    "MountAsRoot"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Nandfcd]
    "DriverPath"="Drivers\\BuiltIn\\NandFlash"
    ; LoadFlags 0x01 == load synchronously
    "LoadFlags"=dword:1
    "BootPhase"=dword:0
    ; Note: if BinFS is used together with PS, then should ensure
    ; this is loaded after BinFS by setting order to 1 and that
    ; BinFS autoload order is 0.
    "Order"=dword:0
; END HIVE BOOT SECTION
努力! 成功就在不远处....
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-03-16 15:23
你MSFLASH部分在哪里改的,common.reg中吗?
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-03-16 15:51
我没有改common.reg,所有的改动都是在platform.reg中。也没有用FAT,先把整片NAND格式化成BINFS。然后下载OS。奇怪的是只要去掉HIVE,就可以起来,一加上就启不来了,所有怀疑可能是注册表的问题。
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-03-16 16:53
jasonshi兄弟,除了BootVars之外我把你的注册表都放在我的platform.reg下,且[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH\BINFS]也放在HIVE BOOT SECTOR下,
系统是可以起来的,但还是不能保存到NAND上。
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2007-03-19 08:49
那就奇怪了,为什么我的就直接启不来了呢?
我查了一下,说支持HIVE需要设置一个block device 的什么参数,好像是与DISK_INFO_FLAG_PAGEABLE有关,你知道这是设置什么吗?可以试试看,我今天也试试看。
一起努力 :)
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-03-19 08:50
milkyway1888 大虾来帮我们两分析分析吧。
milkyway1888
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2011-05-07
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望97点
  • 贡献值0点
  • 好评度91点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-03-19 17:13
你们要把保存的文件系统信息写到正确的位置.如果是BINFS,就按3楼的试试.如果是FATFS,就把有关项加进去.
我在CF卡上面实现过HIVE,参考http://blog.csdn.net/milkyway1888/archive/2007/03/15/1530220.aspx
NANDFLASH我没有试过,3楼是摘自别人那里的.
总之,把所用到的存储介质和所要保存的文件系统相关的注册表加到 ;HIVE BOOT SECTION 和;END BOOT SECTION之间应该就可以了.
to jasonshi: 你试试[HKEY_LOCAL_MACHINE\init\BootVars]
  "SYSTEMHIVE"="NAND Flash\\system.hv"     ; have changed.
  "PROFILEDIR"="NAND Flash"
  "RegistryFlags"=dword:1
  "Flags"=dword:1
上一页
游客

返回顶部