请教一个关于WINCE支持多BIN模式起动的问题

为了缩小启动时间和内存占用的问题,我需要让WINCE支持

多BIN档。由于本人知识水平有限,支持多BIN遇到了自己不能单独解决问题和困惑,实在没有办法,想请大家帮我分析一下问题,谢谢!
    好了,我现在把我的问题以及对问题的一些个人看法做一些描述,我知道WINCE如果需要支持多BIN文件需要把Image分成两大部分:xipkernel和nk,其中xipkernel主要包括CE比较核心又需要加载的程序和DLL文件(相当于LINUX的kernel产生的Image吧),nk中包括剩余的程序,DLL文件,以及其他的文件(相当于LINUX的文件系统吧)。当然还有一个chain,他只是一个中间的连接文件,没有什么太多的内容。为了实现掉电保存注册表数据的问题,CE系统应该还需要支持HIVE。通过网上的一些资料我对WINCE做了以下工作。
1.在PB中将HIVEbased Registers添加到WorkSpaces中
2.注释掉default.fdf
3.修改config.bin

MEMORY
    pdwXIPLoc    00000000  803FF000  FIXUPVAR
    XIPKERNEL    80200000  001FF000  RAMIMAGE
    CHAIN          803FF000  00001000  RESERVED
    NK               80400000  01E00000  NANDIMAGE
    RAM             82200000  07C00000  RAM
    FLASH          92000000  00100000  RESERVED  

CONFIG
  AUTOSIZE=ON
  COMPRESSION=ON
  DLLADDR_AUTOSIZE=ON
  KERNELFIXUPS=ON
  PROFILE=OFF
  RAM_AUTOSIZE=OFF
  ROMFLAGS=0
  ROM_AUTOSIZE=OFF
  XIPSCHAIN=803FF000

4.添加以下文件到platform.bib
MODULES
;  Name            Path                                          Memory Type
;  --------------  ---------------------------------------------  -----------
  nk.exe          D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/kern.exe                XIPKERNEL  SH
  coredll.dll        D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/coredll.dll                XIPKERNEL  SH
  filesys.exe    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/filesys.exe                XIPKERNEL  SH
  fatfsd.dll      D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/fatfsd.dll                XIPKERNEL  SH
  diskcache.dll    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/diskcache.dll            XIPKERNEL  SH
  fatutil.dll    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/fatutil.dll              XIPKERNEL  SH
  binfs.dll    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/binfs.dll                    XIPKERNEL  SH
  fsdmgr.dll    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/fsdmgr.dll                XIPKERNEL  SH
  mspart.dll    D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/mspart.dll                XIPKERNEL  SH
  ceddk.dll      D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/ceddk.dll                XIPKERNEL  SH
  smflash.dll            D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/smflash.dll            XIPKERNEL SH

FILES
  boot.hv        D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/boot.hv                  XIPKERNEL  SH
  default.hv      D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/default.hv              XIPKERNEL  SH
  user.hv        D:/WINCE500/PBWorkspaces/SMDK2440/RelDir/SMDK2440_ARMV4I_Release/user.hv                  XIPKERNEL  SH

5.添加以下文件到platform.reg
; HIVE BOOT SECTION
; Add BinFS to partition table
[HKEY_LOCAL_MACHINE/System/StorageManager/PartitionTable]
        "21"="BINFS"

[HKEY_LOCAL_MACHINE/System/StorageManager/BINFS]
        "Folder"="BINFS"
        "FriendlyName"="Bin FileSystem"
        "Dll"="binfs.dll"
        ; MountFlags:
        ; 0x10 specifies that this file system is to be mounted as an external
        ;      ROM filesystem shadowing the /windows directory
        ; 0x1 specifies that the mountpoint /BINFS is to be hidden
        ;
        "MountFlags"=dword:10  
        "BootPhase"=dword:0
; END HIVE BOOT SECTION

6.sysgen
  此操作完成后会在Release目录下产生一下几个文件:
  boot.hv, default.hv, user.hv
  xipkernel.bin, chain.bin, nk.bin, xip.bin

7.将xip.bin烧写到机器,启动打印以下信息后系统没有反应Windows CE Kernel for ARM (Thumb Enabled) Built on Jun 24 2004 at 18:25:00
ProcessorType=0920  Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8020633c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
OALIntrInit,g_pPortRegs->GPFDAT=0x3d
OALIntrInit: g_pPortRegs->GPGDAT=0x6617
BSPIntrInit sunny mark
BSPIntrInit GPGCON=0x100
BSPIntrInit GPFCON=0xaaa2
BSPIntrInit EXTINT0=0x22222222
BSPIntrInit EXTINT1=0x22222222
OALIntrEnableIrqs irp=14,cout=1
OALIntrEnableIrqs irp=14

我需要请教的问题描述如下:
我的硬件是s3c2440,64M SDRAM, 64M Flash,板子是公司在Samsung基础上重新设计的
按我的理解我的FLASH存储映射关系如下
///
0 block    stepldr.bin(nboot) 这部分相当于启动NorFlash
///
1 block    toc
///
2-9 block eboot.bin (bootloader的主要代码)
//
                              (10-137)      xipkernel.bin
10-2058 block xip.bin  (138)          chain.bin
                               (139-2058)  nk.bin
注:此部分不考虑坏块的问题,我想应该是这样的映射关系
//

系统的工作原理应该是这样的:
把(10-138)块的内容copy到内存80200000-80400000,然后跳到startup的入口上启动WINCE系统,我现在不能理解的是WINCE怎么知道nk.bin是binfs文件系统,而且位置是在(139-2058)这个位置上呢?我知道LINUX可以通过CmdLine来传递挂载根文件系统的类型,Flash的开始地址和大小,但我不知道WINCE有没有类似的传法,如果有的话,它是如何实现的?
  

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值