20楼#
发布于:2007-03-20 10:20
谢谢milkyway1888兄弟的关注!
我说的是bootvars下的"Flags"=dword:1,就是在第一阶段启动存储管理器。 (本来我的common.reg中bootvars下只有"Flags"=dword:0) |
|
|
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-19 17:17
奇怪的事情。在common.reg中添加了 "Flags"=1就可以保存注册表了。
系统起来后,在我的NAND Flash分区里(放完OS镜像后剩余部分格成FAT32)可以看到system.hv |
|
|
23楼#
发布于: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 |
|
24楼#
发布于:2007-03-19 08:50
milkyway1888 大虾来帮我们两分析分析吧。
|
|
25楼#
发布于:2007-03-19 08:49
那就奇怪了,为什么我的就直接启不来了呢?
我查了一下,说支持HIVE需要设置一个block device 的什么参数,好像是与DISK_INFO_FLAG_PAGEABLE有关,你知道这是设置什么吗?可以试试看,我今天也试试看。 一起努力 :) |
|
26楼#
发布于:2007-03-16 16:53
jasonshi兄弟,除了BootVars之外我把你的注册表都放在我的platform.reg下,且[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFLASH\BINFS]也放在HIVE BOOT SECTOR下,
系统是可以起来的,但还是不能保存到NAND上。 |
|
|
27楼#
发布于:2007-03-16 15:51
我没有改common.reg,所有的改动都是在platform.reg中。也没有用FAT,先把整片NAND格式化成BINFS。然后下载OS。奇怪的是只要去掉HIVE,就可以起来,一加上就启不来了,所有怀疑可能是注册表的问题。
|
|
28楼#
发布于:2007-03-16 15:23
你MSFLASH部分在哪里改的,common.reg中吗?
|
|
|
29楼#
发布于: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 |
|
|
30楼#
发布于:2007-03-16 15:14
我加了HIVE后,系统根本就起不来了
![]() |
|
31楼#
发布于:2007-03-16 15:08
jasonshi:你那样设置之后,系统起来能看到NAND盘吗?
|
|
|
32楼#
发布于:2007-03-16 14:52
我现在一加HIVE就启不来了,能不能贴出你的注册表给我参考一下,
![]() 谢谢 ![]() |
|
33楼#
发布于:2007-03-16 13:29
只是一个nk.bin
|
|
|
34楼#
发布于:2007-03-16 11:14
saint_bxg :你是把BIN分成多块的还是只用一个NK.BIN?
|
|
35楼#
发布于: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去掉,就可以起来。 |
|
36楼#
发布于:2007-03-15 12:52
谢谢milkyway1888!
但,怪了,试了多次,依旧不行。郁闷了 |
|
|
37楼#
发布于:2007-03-15 10:28
上面的文件系统采用的是BINFS,你要HIVE到FATFS部分,应该把 "MountAsBootable"=dword:1 添加到[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]下.
common.reg中不用改 |
|
38楼#
发布于: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部分,我感到很奇怪。 |
|
|
39楼#
发布于: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 |
|