saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
阅读:5582回复: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了。
当然,弄了一天,到最后,断电后还是不能保存注册表。
哪位大哥有做过的,请指导一下小弟!先谢过了!
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-09 10:11
 saint_bxg兄弟,非常感谢你的帮助。 :)
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-06 14:18
恭喜jasonshi 兄弟成功了。
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-05 11:20
终于可以保存注册表了,现在大体总结一下以方便后来人,少走弯路。

      首先感谢参与这个帖子的几位朋友,大家的意见对我很重要。因为我的NAND的驱动是自己写的,所以驱动一直有问题,直到heroeslll朋友提醒,才去解决这个问题。仔细检查,修改了nand驱动后便可以挂载了,调注册表确实不难,saint_bxg,milkyway1888,以及fredzeng(做HIVE的想必都读过他的文章吧),给出的注册表设置都可以实现HIVE.做的过程中大家可能遇到的问题都不一样,重要的是分清楚每一个概念,事情一件一件的去做,都绞在一起是最浪费时间的.
      当然我的工作只进步了一点,还有很多需要做,比如现在第一个分区BINFS还没有挂上来.希望和大家一起讨论,学习. 我的mail : marsxd@163.com.
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-26 08:49
楼上的兄弟,那请问一下怎么才能确定NANDFlash的驱动工作是否正常?因为系统一加HIVE就启动不起来了,没法调试,而且NANDFlash初始化函数里的打印语句也没打出来。
heroeslll
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2007-03-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-03-26 03:22
使用HIVE的必要条件是NANDflash驱动要正常工作。
在RAM机制下能在nandflash上正常保存文件了,
才能继续说注册表。

ps:注册表很容易调。
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-03-23 17:33
上面的修改是我的一个操作平台,CE5.0,非PQ版本的BSP。只能做一个参考
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-03-23 15:26
谢谢你帮我改注册表,可是还是不行,有没有可能因为我的PB5.0是试用版,不支持HIVE?
你用的是PB5.0吗?
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-03-22 13:11
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-03-22 09:21
我改了还是不行,能告诉我你的邮箱吗?我把我的NAND驱动发给你,你帮我看看是不是驱动有问题,其它地方我实在想不出来哪还不对了。   谢谢帮我这么久。:)
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-03-21 17:04
不是把common.reg下的"flags"=dword:0改成"flags"=dword:1,是添加。
不是文件夹形式的“NAND FLASH”,图标是像电脑上硬盘一样的。
platform.reg中除了存储路径,别的我没改过。
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-03-21 15:16
我以前nand的驱动没有单独的注册表,注册表项都是放在platform.reg下的,现在我把nand驱动重写了,也改成跟你的一样的了,加了注册表nandfcd.reg,注册表就按照你贴出来的写的,然后所有的改动项都改成跟你的一样的了,可是还是启不起来。苦死我了。
只要把common.reg下的"flags"=dword:1,改回"Flags"=dword:0,然后去掉platform.reg下的
"Start DevMgr"=dword:1
"Flags"=dword:1
"Flags"=dword:2
就可以起来了,也可以看到文件夹“NAND FLASH”以及里面的system.hv,default 但是不能保存。  

这是怎么回事?
 
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-03-21 12:05
比如说我机子上的目录是
C:\WINCE500\PLATFORM\Mx21\SRC\DRIVERS\Block\Nandfmd\Nandfcd
文件夹下的nandfcd.reg文件
努力! 成功就在不远处....
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-03-21 11:48
是在NAND驱动注册表nandfcd.reg中
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-03-21 11:08
saint_bxg兄:
看来我真的很多地方理解错了,那么这句
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Nandfcd]
是在哪个注册表中?
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-03-20 19:58
jasonshi兄弟:你没有看清楚我是怎么改的啊。
1、在platform.reg中我只改了"SystemHive"="NAND Flash\\system.hv"
                                     "ProfileDir"="NAND Flash"    这相当于我选择了把.hv文件保存在NAND Flash分区里(这个名字由NAND驱动注册表nandfcd.reg中"Folder"="NAND Flash"定义)
2、在common.reg中我只添了"RegistryFlags"=dword:1 "flags"=dword:1,其他我没改过。
关于"SystemHive"="Documents and Settings\\system.hv"
                              "ProfileDir"="Documents and Settings"  是在NAND Flash 上创建了个Documents and Settings文件夹,把.HV文件放在里面,当然,文件夹名字可以任意设定。
3、然后就是在NAND驱动注册表中[........Profiles\NandMSFlash\FATFS]下添加个"MountAsBootable"=dword:1就可以了。      "Flags"=dword:1000添加与否不会影响HIVE的实现。你是不是把NAND驱动注册表当成platform.reg中MSFLASH部分了?不是的,那是在BSP包中......\
DRIVERS\NAND驱动注册表,是和platform.reg分开的。
4、环境变量FILESYS_FSREGHIVE我没设过。
5、我的分区是在bootloader中就创建好的。系统起来后就可以在 "我的设备"下看到 NAND Flash分区了。
6、关于NAND中AutoLoad部分的加载,因为我的系统中这部分是放在了#if defined IMGMULTIXIP || defined BSP_PS_NAND下的,我用的镜像不是IMGMULTIXIP且我用的非PQ包,不能加载PS NAND组件,所以我就直接把它移到条件的外面了。

兄弟,祝你早日成功!
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-03-20 14:53
确保[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Nandfcd]一定要能加载。若是这部分不能加载,系统就起不来。( Entry for nand driver to be loaded by storage manager.
Once a driver has been loaded by storage manager, it will not
be loaded again by device manager.
Note: Needed for Hive registry or persistent storage)

如何确定这部分是否能加载?
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2007-03-20 14:51
恭喜saint_bxg兄,  
帮我再看看吧,我参考着你的改了,现在common.reg改了下面部分:
[HKEY_LOCAL_MACHINE\init\BootVars]
   "SystemHive"="NAND Flash\\system.hv"
   "ProfileDir"="NAND Flash"
   "RegistryFlags"=dword:1
   "Flags"=dword:1
 platform.reg改成下面的样子了:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
    "SYSTEMHIVE"="NAND Flash\\system.hv"
    "PROFILEDIR"="NAND Flash"
    "Start DevMgr"=dword:1
    "RegistryFlags"=dword:1
    "Flags"=dword:1
    "DefaultUser"="default"    

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
    "Prefix"="DSK"
    "Dll"="smflash.dll"
    "Index"=dword:1
    "Order"=dword:0
    "Profile"="MSFlash"
    "IClass"=multi_sz:"{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

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
    "DefaultFileSystem"="BINFS"
    "AutoPart"=dword:1
    "AutoMount"=dword:1
    "PartitionDriver"="mspart.dll"
    "Name"="ARCA Flash Disk"
    "Folder"="NAND Flash"
    "BootPhase"=dword:0
    "Flags"=dword:1000

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

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH]
    "MountAsBootable"=dword:1
; END HIVE BOOT SECTION
问题还是启不来, ,只要把
[HKEY_LOCAL_MACHINE\init\BootVars]
    "SYSTEMHIVE"="NAND Flash\\system.hv"
    "PROFILEDIR"="NAND Flash"
    "Start DevMgr"=dword:1
    "RegistryFlags"=dword:1
    "Flags"=dword:1
    "DefaultUser"="default"
放在HIVE外面就能起来了,可是不能保存设置。
我看了下common.reg,里面有个环境变量FILESYS_FSREGHIVE是否需要设置?
还有下载bin 的时候我用了BP_OpenPartition( (IMAGE_START_BLOCK+1)*PAGES_PER_BLOCK,    //    next block of MBR
                              0x3c00,//30M for os
                              PART_BINFS,
                              TRUE,
                              PART_OPEN_ALWAYS);
这个应该建的是BINFS分区吧?
然后下载完剩下的空间用BP_OpenPartition( NEXT_FREE_LOC,
                                USE_REMAINING_SPACE,
                                PART_DOS32,
                                TRUE,
                                PART_OPEN_ALWAYS);
建了一个新分区,这个分区是BINFS的还是FAT的?是不是这里搞错了?
还有就是怀疑是不是fmd.cpp有什么特殊要求吗?
还请两位大哥帮忙分析一下  谢谢。
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-03-20 12:19
总结一下这做的HIVE注册表改动,同时谢谢milkyway1888和jasonshi兄弟的关注和帮助!

我的设备平台:MX21,CE5.0(非PQ),NAND 64M(分成MBR、BINFS、FAT32)

改动文件:
1、commom.reg中BootVars下添加
 "RegistryFlags"=dword:1
 "flags"=dword:1
2、platform.reg中BootVars下修改
        "SYSTEMHIVE"="NAND Flash\\system.hv"           ;;存储路径放到NAND Flash分区里
             "PROFILEDIR"="NAND Flash"
3、NAND驱动注册表nandfcd.reg中
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NandFlash]和
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash]下添加"Flags"=dword:1000

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandMSFlash\FATFS]下添加"MountAsBootable"=dword:1

确保[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Nandfcd]一定要能加载。若是这部分不能加载,系统就起不来。( Entry for nand driver to be loaded by storage manager.
Once a driver has been loaded by storage manager, it will not
be loaded again by device manager.
Note: Needed for Hive registry or persistent storage)
努力! 成功就在不远处....
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-03-20 10:21
谢谢milkyway1888大哥,我昨天试的结果是:
[HKEY_LOCAL_MACHINE\init\BootVars]
    "SYSTEMHIVE"="Documents and Settings\\system.hv"
    "Start DevMgr"=dword:1
    "RegistryFlags"=dword:1
这段不放在;HIVE BOOT SECTION 和;END BOOT SECTION之间就可以起来,一会再试试你的新建议,呵呵:)
    再问一下,实现HIVE对fmd.cpp的实现有什么特殊的要求吗?我直接照着5.0里2410里的fmd.cpp改的, IOControl之类的函数都没有实现,我当了一个网上的例子看的fmd.cpp和我的不一样,和标准的设备驱动类似,还用到了SC_CreateMutex之类的函数。我的fmd.cpp有问题吗?
上一页
游客

返回顶部