20楼#
发布于:2007-03-19 17:17
奇怪的事情。在common.reg中添加了 "Flags"=1就可以保存注册表了。
系统起来后,在我的NAND Flash分区里(放完OS镜像后剩余部分格成FAT32)可以看到system.hv |
|
|
21楼#
发布于:2007-03-19 21:21
你说的是"flags"=dword:1000 ?这个标志表示此驱动程序只加载一次,和HIVE实现关系不大.
common文件的作用域是所有的OS,platform是该特定BSP的OS,project.*的作用范围是当前OS.你在common或者platform.reg中做改动应该对当前的OS都适用的. 不过可以HIVE了,值得祝贺 |
|
22楼#
发布于:2007-03-20 10:20
谢谢milkyway1888兄弟的关注!
我说的是bootvars下的"Flags"=dword:1,就是在第一阶段启动存储管理器。 (本来我的common.reg中bootvars下只有"Flags"=dword:0) |
|
|
23楼#
发布于: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有问题吗? |
|
24楼#
发布于: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) |
|
|
25楼#
发布于: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有什么特殊要求吗? 还请两位大哥帮忙分析一下 谢谢。 |
|
26楼#
发布于: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) 如何确定这部分是否能加载? |
|
27楼#
发布于: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组件,所以我就直接把它移到条件的外面了。 兄弟,祝你早日成功! |
|
|
28楼#
发布于:2007-03-21 11:08
saint_bxg兄:
看来我真的很多地方理解错了,那么这句 [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Nandfcd] 是在哪个注册表中? |
|
29楼#
发布于:2007-03-21 11:48
是在NAND驱动注册表nandfcd.reg中
|
|
|
30楼#
发布于:2007-03-21 12:05
比如说我机子上的目录是
C:\WINCE500\PLATFORM\Mx21\SRC\DRIVERS\Block\Nandfmd\Nandfcd 文件夹下的nandfcd.reg文件 |
|
|
31楼#
发布于: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 但是不能保存。 这是怎么回事? |
|
32楼#
发布于:2007-03-21 17:04
不是把common.reg下的"flags"=dword:0改成"flags"=dword:1,是添加。
不是文件夹形式的“NAND FLASH”,图标是像电脑上硬盘一样的。 platform.reg中除了存储路径,别的我没改过。 |
|
|
33楼#
发布于:2007-03-22 09:21
我改了还是不行,能告诉我你的邮箱吗?我把我的NAND驱动发给你,你帮我看看是不是驱动有问题,其它地方我实在想不出来哪还不对了。 谢谢帮我这么久。:)
|
|
34楼#
发布于:2007-03-22 13:11
|
|
|
35楼#
发布于:2007-03-23 15:26
谢谢你帮我改注册表,可是还是不行,有没有可能因为我的PB5.0是试用版,不支持HIVE?
你用的是PB5.0吗? |
|
36楼#
发布于:2007-03-23 17:33
上面的修改是我的一个操作平台,CE5.0,非PQ版本的BSP。只能做一个参考
|
|
|
37楼#
发布于:2007-03-26 03:22
使用HIVE的必要条件是NANDflash驱动要正常工作。
在RAM机制下能在nandflash上正常保存文件了, 才能继续说注册表。 ps:注册表很容易调。 |
|
38楼#
发布于:2007-03-26 08:49
楼上的兄弟,那请问一下怎么才能确定NANDFlash的驱动工作是否正常?因为系统一加HIVE就启动不起来了,没法调试,而且NANDFlash初始化函数里的打印语句也没打出来。
|
|
39楼#
发布于:2007-04-05 11:20
终于可以保存注册表了,现在大体总结一下以方便后来人,少走弯路。
首先感谢参与这个帖子的几位朋友,大家的意见对我很重要。因为我的NAND的驱动是自己写的,所以驱动一直有问题,直到heroeslll朋友提醒,才去解决这个问题。仔细检查,修改了nand驱动后便可以挂载了,调注册表确实不难,saint_bxg,milkyway1888,以及fredzeng(做HIVE的想必都读过他的文章吧),给出的注册表设置都可以实现HIVE.做的过程中大家可能遇到的问题都不一样,重要的是分清楚每一个概念,事情一件一件的去做,都绞在一起是最浪费时间的. 当然我的工作只进步了一点,还有很多需要做,比如现在第一个分区BINFS还没有挂上来.希望和大家一起讨论,学习. 我的mail : marsxd@163.com. |
|