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