【原创】关于WinCE中config.bib的问题
2009-12-17 23:08
127 查看
这两天在看关于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
答案很简单了。这里大家自己算算就好了。
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
答案很简单了。这里大家自己算算就好了。
相关文章推荐
- 关于SQL的char,varchar字段在导出时切断中文字符显示问号或乱码的问题[原创]
- 关于Java文件路径问题(原创+转贴)
- 【原创_解析】关于static型变量被外部文件修改的问题..
- 【原创】关于Adapter的The content of the adapter has changed问题分析
- [导入][原创]关于Select Where In 的排序问题
- [原创]关于多层设计想到的问题-涉及Nhibernate和Log4Net
- 【原创】关于SPSecurity.RunWithElevatedPrivileges的一个问题[A problem about SPSecurity.RunWithElevatedPrivileges]
- 【原创】关于wince OS开发面试问题的总结系列之OAL
- 关于用jsp生成xml的问题【原创】
- 关于BP算法在DNN中本质问题的几点随笔 [原创 by 白明] 微信号matthew-bai
- 关于未来元素的问题【原创】
- 【原创】回答网友关于ARM9 S3C2440 wince6.0 内存 128M的使用问题
- 【原创】关于Sqlserver的LogFiles超大的问题
- [原创]关于《精通QT4编程》第一个例子无法编译的问题的解答
- 【原创】关于IE8上打印预览后window.close()无法关闭页面的问题
- 关于Installshield里一些常见问题的解答(二)--此篇非原创,只是集成了一些网友的解答
- 【原创】关于转载文章提示包含被禁用URL的问题
- 关于Installshield里一些常见问题的解答(二)--此篇非原创,只是集成了一些网友的解答
- 【原创】关于oracle11G空表无法导出问题的解决方法
- 【原创】关于wince OS开发面试问题的总结系列之OAL