一、环境描述:
CPU: PXA270
RAM: 64MB SDRAM
ROM: Intel 2M Nor Flash(Boot)
Samsung 1GB Nand Flash(BINFS+FATFS)
说明:系统镜像文件xip.bin会烧录到NAND的开始区域,此区域是BINFS格式;NAND剩下的区域会全部以FATFS格式化成一个盘 DISK_STORAGE。
OS: WINCE5.0
已经添加“File systems and Data Store”->"Hive-based Registry".
此系统基于WINCE5, RAM-base registry已经完整实现。
xip.bin组成:core.bin 最小内核,Boot时会复制到RAM解开。
nk.bin device.exe/gwes.exe...etc. 所有其余的dll/lib/exe等的集合。
二、调试信息:
FS: Mount complete (ROM, index 2, flags 0x00000031)
0x83ce6024: ERROR: c:\macallan\private\winceos\coreos\filesys\reg\reghive\registry.c line 714: 0x83ce6024: FSREG: Unable to mount boot hive from ROM
三、查找原因:
1. ROM(NAND)应该是加载成功了。
2. 无法找到boot.hv。
3. 使用viewbin -t 查看bin文件,开始的core.bin(boot加载到RAM运行)里面竟然没有boot.hv
MODULES ---------------------------------------
11/09/2007 04:06:44 741376 nk.exe
11/09/2007 04:09:29 968704 coredll.dll
11/09/2007 04:09:28 558592 filesys.exe
11/08/2007 02:22:00 35328 binfs.dll
11/08/2007 02:21:56 173056 fsdmgr.dll
11/08/2007 02:22:00 40960 mspart.dll
11/08/2007 04:43:03 22528 ceddk.dll
11/09/2007 04:08:00 143872 nandfls.dll
FILES ----------------------------------------
11/09/2007 04:09:24 CHRS 3727 20680 initobj.dat (ROM 0x8023A0A4)
11/09/2007 04:09:24 CHRS 2213 7283 initdb.ini (ROM 0x802AC3EC)
而后面的nk.bin里面确有如下的hv
FILES ----------------------------------------
11/08/2007 07:59:20 C_R_ 2380 10290 ceconfig.h (ROM 0x8050F64C)
11/09/2007 04:09:23 _HRS 0 127906 wince.nls (ROM 0x81D2456C)
11/09/2007 04:09:24 CHRS 5288 36864 boot.hv (ROM 0x81D43910)
11/09/2007 04:09:24 CHRS 69643 286720 default.hv (ROM 0x81D44DB8)
11/09/2007 04:09:24 CHRS 6151 40960 user.hv (ROM 0x81D55DC4)
7/01/2004 04:00:00 _HR_ 0 134 close.2bp (ROM 0x80511324)
四、问题:
boot.hv/default.hv/user.hv怎么没有自动放到core.bin中呢?是platform.reg里面需要什么配置吗?还是PB里面需要添加什么feature?
已解决。结贴!
解决方法:
在common.bib中,发现将boot.hv/default.hv/user.hv全部放到了NK中,难怪XIPKERNEL中没有。改了后就ok。
造成问题的原因:
目前在网上找到的相关HIVE实现帖子,基本都只说明了platform.reg中的修改,包括DX fredzeng的http://blog.eeworld.net/fredzeng 中发布的中文贴。
幸亏fredzeng DX曾经发过一篇E文贴,最后提到了bib文件的修改,无意中找到,才发现这个问题。
另外:boot.hv/default.hv/user.hv在%_flatreleasedir%下是隐藏的系统文件,一般的搜索是找不到的。所以我开始还以为没有这些文件呢。
very good, 不管是提问题的方式,还是最后把研究出来的结果公布出来,楼主做的很值得我们学习。