WinCE下multi-bin的实现

//--------------------------------------------------------------------------------------------------------------------------------------------------

使用平台:OMAP3530+WinCE6.0

//--------------------------------------------------------------------------------------------------------------------------------------------------

     最近几个月一直在弄BootLoader,利用SD卡升级系统以及BootLoader,主要的功能差不多做完了,但是启动速度是一个问题,26M的内核启动大概需要12~13S的时间,远远不能达到用户的需求,我们决定采用multi-bin来提高启动速度。工作主要是他做的,我主要跟他打下手,现在功能实现了,我觉得有必要记下来,以便以后查起来方便。

     Multi-bin的实现需要一些基础知识:bin文件格式的理解、bib、reg文件的配置、binfs的理解记忆eboot中对flash的分区操作,这些资料在我的博客里都有转载的~~~现在说一下实现过程。

     网上介绍实现multi-bin的文章也不少,但是自己实现起来却不是那么容易的事情。存储空间的配置和注册表的配置是必须的,存储空间的配置如下:

     IF IMGMULTIBIN
          KERNEL                      84001000    00600000     RAMIMAGE ; 6MB
          CHAIN                        84601000    00001000     RESERVED ; 4K
          NK                              84602000    039FE000     NANDIMAGE; 64MB - 6MB - 4K - 4K
     ELSE
          NK                              84001000    03FFF000      RAMIMAGE ; 64MB - 4K
     ENDIF
         RAM                             88000000    03000000     RAM      ; 48MB
         DISPLAY                      8B000000    01000000     RESERVED ; 16MB

     这里说明下,在使用binfs之后,nandimage在bib文件里划分的MEMORY的范围就属于binfs管理了,在kernel需要访问这个内存范围的NB0数据的时候会让binfs.dll去读取。

     在kernel.bin中包含基本的dll,本例中包含的dll如下所示:

nk.exe
kernel.dll
coredll.dll
k.coredll.dll
oalioctl.dll
filesys.dll
fsdmgr.dll
mspart.dll
romfsd.dll
binfs.dll
boot.hv
k.fpcrt.dll
ceddk.dll
nand.dll
device.dll
devmgr.dll
regenum.dll
busenum.dll
pm.dll
pmext.dll
wince.nls

     这些基本的配置过后,最重要的就是在EBOOT中实现binfs分区,这算是我的老本行了,弄了几个月EBOOT了,闭上眼都知道怎么回事~~~~~~

主要就是用微软提供的那些函数,BP开头的,这里不方便贴出来。

     这些都弄好后,接下去就是烧写到flash里去了,有两种方式:一种是用PB通过USB或者以太网烧写;还有一种就是通过我们自己的升级方式---SD卡,文件名定义好,解析.bin文件到flash即可,flash里存储的一定是nb0,不然,启动的时候再解析会很慢。

    实现的大致流程就是这样的,但是我的那个牛人同事用了可移植性比较好的方法,兼容原来的方式,用一个环境变量就可以切换两种方式,不得不佩服他下~~~

   他在C:/WINCE600/PLATFORM/TI_EVM_3530/FILES下添加BinFSHelper.vbs、KitlRequiredFiles.lst、PreRomImage.bat、

RequiredFiles.lst文件,修改了config.bib、platform.reg,利用RomImage.bat调用PreRomImage.bat文件,然后调用BinFSHelper.vbs脚本文件,将两个文件列表中的DLL文件添加到ce.bib文件中,即成为最终的存储空间配置文件,他没有修改platform.bib文件,可移植性很强~~

    实现后测试启动时间由原来的12~13S缩减到8S左右,感觉在6.0中实现不了传说中的2S启动~~~客户要求是要5S进操作系统界面,所以,接下来的工作就是优化nanflash驱动,提高读数据效率。~~

你可能感兴趣的:(工作,脚本,Flash,存储,dll,WinCE)