首页>
知识库>
详情

关于WinCE中config.bib的问题

2020-06-30 来源:CloudBest 阅读量: 5
关键词:

    这两天在看关于bootloader的事情。以前的同事提到开机速度的问题,顺便也就提到了nk的大小的问题。这一连串的事情使得想回头再看看config.bib的事情。这篇文章也算来总结下。也接触过一些ARM的芯片以及对应的BSP包。config.bib文件在msdn上一段解释如下:

    The Config.bib file is the first place to declare how much memory will be made available to the kernel. A single entry is required and should indicate the default amount of RAM that is possible for the device.

    所以我们可以了解到config.bib的作用。接下来我们还是用实际的例子来做解释。例如,本人现在在使用A公司的芯片,该公司的image采用的是XIP的模式,他们BSP包中的config.bib中列出了xip中所设计内容的分配,具体如下:

    XIPKERNEL     80200000  00400000  RAMIMAGE

    NK                  80600000  03400000  NANDIMAGE

    CHAIN               83a00000  00001000  RESERVED

    我们来做一个简单的加减法,

    00400000+03400000+00001000 = 3801000 = 58724352

    这里大家晕了。3801000 = 58724352 其中 0x3801000 = 58724352Byte = 58M左右。

    呵呵。这下子就看懂了吧。然后我回头来看最终烧录到flash中的xip.nb0文件,就是58M。

    这个是一个非主流ARM的image。那我们在回头来看看2440是个什么样子的。

    本人手头上有个一个mini2440的板子,现在更新到最新的bsp wince5.0的。我们一起来看看他的config.bib片段。在这里mini2440采用的是nk.bin烧录的形式。原厂提供的nk.bin的大小是25M。好了。我们迫不及待的去看config了。下面是mini2440的config片段:

    MEMORY

    NK      80200000  01E00000  RAMIMAGE

    RAM     82000000  01E00000  RAM

    我们在来做一个进制转换01E00000  = 31457280 31M. 这里为什么会不一样了呢,我们在看看nk.nb0文件,是30.7M多。这里需要解释的是这两个文件的区别了:

    nk.bin和nk.nb0都是CE的镜像。然而,我们在下载的过程中常常会遇到,有时候下载nk.bin,有时确是下载nk.nb0,这两者到底有什么区别呢?

    首先,NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。

    两者大小的区别是因为在生成过程中BIN会将你设定的后面的NULL自动去掉,而NB0就不会。

    NB0的大小就是第三个变量ROMSIZE所设置的大小。

    由于nk.nb0是非压缩的数据,里面的数据就是NK展开以后在内存里面的数据。

    而nk.bin是有压缩的数据,里面的数据是压缩以后类似于成块形的数据,被loader拷贝到内存以后没有区别。

    由于bin文件需要解压,因而其下载方式也不一样,

    通常,通过串口直接下载用nb0,pb下载用bin。

    其次,nk.nb0是可以直接烧到FLASH/ROM中的,是代码镜像,可以直接跳转到其入口执行。

    而nk.bin是Microsoft binary image格式的文件,必须按其格式定义解开到其指定的地址空间的位置才能执行。

    这是老生常谈了。我们赶紧看看文章中提及的ROMSIZE。ROMSIZE=01e00000。果不其然。

    这一下我们了解了两个知识。一个是config.bib的问题,一个是nk.bin/nb0的问题

    下面大家一起来分析一个问题,例如,我用过的S社现在也就是S&C社的一颗ARM芯片。下面我给出它的conifg片段,大家算算他的xip.nb0的大小,猜猜他nk.bin可能的大小:

    TINYNK        8CE50000        00600000        RAMIMAGE

    DRIVERS     82000000        00200000        NANDIMAGE

    NK          82200000        01D00000        NANDIMAGE

    答案很简单了。这里大家自己算算就好了。