这两天在看关于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

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

关于WinCE中config.bib的问题相关推荐

  1. WINCE config.bib文件中的FSRAMPERCENT的意义

    在BSP/files文件夹下面关于FSRAMPERCENT的内容如下: CONFIG ------- FSRAMPERCENT=0x80808080 下面我们来看看上面表达式的意义 FSRAMPERC ...

  2. WINCE的内存配置-config.bib文件的解析

    WINCE的内存(包括SDRAM及FLASH)的配置包含两个方面:源代码(包括C和汇编)中的定义,及系统配置文件CONFIG.BIB中的定义.源代码中需要定义内存的物理及虚拟地址,大小,并初始化名为O ...

  3. wince中BIB文件的详细介绍

    wince中BIB文件的详细介绍 在WinCE中使用的一个重要的文件就是BIB文件,全称Binary Image Builder File.在WinCE的编译过程中会用到BIB文件,应该是在最后的Ma ...

  4. WinCE中的paging pool

    我们知道,在Config.bib配置中,RAM指定的内存区域会被划分为程序内存和对象存储.但在使用paging pool时,RAM段要减去paging pool的大小,剩余空间再划分为程序内存和对象存 ...

  5. wince中的BSP工程的相关文件介绍

    一.pbcxml分析         每一个BSP都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP的信息.下面就来介绍一下BSP的pbcxml文件. 文件的大致格式应该是这样的: &l ...

  6. WinCE BSP的BIB文件介绍

    在WinCE中使用的一个重要的文件就是BIB文件,全称Binary Image Builder File.在WinCE的编译过程中会用到BIB文件,应该是在最后的Makeimg阶段.所有的BIB文件会 ...

  7. WinCE中命令行工具Viewbin简介(查看nk.bin中包含的文件)

    Viewbin是微软提供的一个命令行工具,在WinCE5.0和WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到他.View ...

  8. wince中对ini文件的操作

    下面是代码 class ZT_INI {/************************************************************************//*写操作* ...

  9. bib config_OEMAddressTable,config.bib详解

    比如X86的OEMAddressTable (platform\common\src\x86\common\startup\startup.asm): _OEMAddressTable: dd  80 ...

最新文章

  1. 内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages【转】
  2. php设计模式 - 建造者模式
  3. 不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
  4. 试卷批分(c++打表版)
  5. php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...
  6. Lvs Tun隧道模式配置
  7. 游戏大厅 从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2
  8. 机房收费重构之总结篇
  9. jmstemplate 获取队列id_学习Linux(38)消息队列
  10. 1041. Robot Bounded In Circle
  11. c语言因为是汇编语言的一种,. C语言是一种(). A.机器语言B.汇编语言C.中级语言D.高...
  12. Head first 第一章
  13. 叉乘:基于虚拟线圈法的车流量统计
  14. uniapp 获取时间戳
  15. cad怎么画立体图形教学_立体图形怎么画步骤 找CAD图形中心点的方法步骤图
  16. python爬取去哪儿网机票_5元机票?去哪儿网及深航回应:未发现售价5元的机票订单...
  17. c语言实现输入电压检测,STC12C2052AD单片机AD转换C语言程序的实现
  18. Android 谷歌拼音输入法最新发布
  19. 禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!(第二弹)
  20. 如何网站建设搭建?建设搭建步骤是什么?

热门文章

  1. oracle如何并发重建索引,oracle数据库如何重建索引?
  2. 小红帽怎样装图形化界面_纯技术篇:U盘装系统,不再多花冤枉钱
  3. linux使用root操作文件,以root用户登录Linux系统,当前目录是/root,要求完成如下操作和功...
  4. 【C语言进阶深度学习记录】六 C语言中的分支语句
  5. 在工程中最常用的 vim使用技巧
  6. Spring Boot----整合SpringCloud
  7. 那些ubuntu创建用户踩过的坑
  8. CSS基础选择器(选择器的优先级),CSS样式块( 长度/颜色/显示方式/文本样式),盒模型组成,盒模型-block,盒模型布局...
  9. canvas 动画库 CreateJs 之 EaselJS(上篇)
  10. 【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞