BIB的全称为Binary Image Builder,在Wince编译过程中的最后MakeImage阶段会用到BIB文件,BIB文件的作用是指示构建系统如何构建二进制映像。所有的BIB文件会被合并成CE.bib文件,然后打包工具Romimage.exe会根据BIB文件中的描述来决定哪些文件最终被包含到WINCE image中,BIB文件还决定了WINCE设备内存的分配,比如定义了WINCE image占用哪块内存,显存(Framebuffer)占用哪块内存等。

BIB文件包括4项:MEMORY,CONFIG,MODULES和FILES,它们的作用如下所示:

⑴MEMORY:

定义内存的相关设置,一般在0PLATFORMSMDKxxFILESconfig.bib文件中。WINCE构建系统通过MEMORY项知道哪些内存是RAM,哪些内存是ROM,以及它们的大小。MEMORY项的格式如下:

MEMORY

NAME       Start Address     Memory Size       Type

其中

NAME:此段内存的名称,此名称没有特别的规定,但最好是通过这个名称我们就可以知道这段内存的用途,这个名称必须是唯一的,如下文的名称。

Start Address:表示此内存的起始地址,用十六进制数表示,如下文的运行时映像NK所使用的内存的起始地址是0x8C200000。

Memory Size:此内存的大小,用十六进制数表示,如下文config.bib中0x01800000(24M),次内存的大小需要根据自己系统的NK大小来指定,如果是中文系统,这个大小应该就需要加大了。

Type:此内存段的类型,有如下几种可选的类型:

①FIXUPVAR:用于在WINCE编译的Makeimage阶段,就初始化内核中的全局变量。

②NANDIMAGE:当创建了一个使用BinFS的image的时候,NAND设备上的WINCE内核重定向到RAM中的区域,当系统访问该区域(此块RAM)的时候,BinFS会负责访问NAND设备上相应的位置,并返回数据给系统,实际上就是在NAND设备上面实现了XIP的功能。比如开发板上有NAND的Flash,那么就可以把此段内存标为NANDIMAGE类型。如果Bootloader支持BinFS,那么就可使放在NAND Flash中的bin文件支持本地执行XIP(默认情况下只有NOR的Flash才可支持本地执行),此段内存必须也对齐。

③RAM:指定此段内存是RAM,定义了WINCE系统使用的RAM区域,WINCE系统可用这些内存来执行程序和存放RAM文件系统。这块内存必须是连续的,这里有一点要注意就是从硬件的角度来说,这块内存不能跨越两片SDRAM,也就是说整个区域空间必须在一片硬件SDRAM上。

④RAMIMAGE:指定这块内存用于加载WINCE image(也就是NK.bin),实际上WINCE启动以后,image会被拷贝到这块内存区域上面运行。一个image只能有一个连续的RAMIMAGE区域。

⑤RESERVED:这块内存区域会被预留出来,一般用于Framebuffer或者是DMA buffer,或者是一块共享内存用于EBOOT传递参数给WINCE系统,WINCE不会使用这段内存。

⑥EXTENSION:定义了一块WINCE image中的区域作为ROMHDR extension的数据区域。

如下面的config.bib文件所示

以下是我们公司产品的WINCE500PLATFORMSMDK2440FILESconfig.bib文件

MEMORY

NK            8C200000  01800000  RAMIMAGE

RAM           8DA00000  04D00000  RAM

; Common RAM areas

AUD_DMA       8c002000  00002000  RESERVED

DRV_GLB       8c010000  00010000  RESERVED

SD_DMA        8c028000  00008000  RESERVED

EDBG          8c030000  00020000  RESERVED

CAMERA        8c087487  000A0000  RESERVED

DISPLAY       8c183000  0007d000  RESERVED

/*****************************************************************/

此段内容表示从地址0x8c200000开始的24MB空间用来存放运行时影响(NK.bin);从0x8DA00000开始的77M内存是RAM区,可供应用程序使用;从0x8c002000开始到0x8c200000的内存是被保留的,主要是声音和显示的DMA区域。

/*****************************************************************/

⑵CONFIG:这一项是一些附加的选项,一般在config.bib文件中定义,用来告诉构建系统如何生成运行时映像,其格式如下:

CONFIG

ITEM=Parameter

ITEM比较常用的有:

①AUTOSIZE:默认值为ON,如果WINCE image在RAM中,此选项允许自动地把WINCE image没有使用的RAM分配给WINCE操作系统,也就是被用作WINCE系统的RAM。

②PROFILE:指定是否在WINCE image中包含用来性能剖分(profile)的结构和符号,默认值为OFF。

③BOOTJUMP:指定启动时系统的跳转地址,默认会跳向Startup函数的地址。

④COMPRESSION:指定构建系统是否压缩WINCE image中的可写部分。如果此部分被压缩,那么WINCE运行时会把这部分解压缩到RAM中;如果没有被压缩,则直接把这部分复制到RAM中。

⑤KERNELFIXUPS:指定构建系统是否对内核的可写区域进行重定位。默认为ON,把内核的可写区域重定位到RAM的起始地址。

⑥RAMFLAGS:指定内核特性的一些位掩码,可以进行组合

0x01:表示禁用按需调页,这样某个模块在运行前就要被完全装入RAM中。

0x02:表示禁用Full Kernel(完全内核模式)。

0x10:表示只信赖bib文件中放在MODULES块中的文件。

0x20:指示内核不要清空x86的TLB。

0x40:表示按照DLL的/base链接选项中的地址加载DLL,这样DLL就可被加载到某个预先定义的地址。

⑦ROMSTART:指WINCE image在内存中的起始地址,如下文的0x8C200000.

⑧ROMWIDTH:指定数据总线的宽度,可为8,16或32。

8:表示构建系统会把WINCE image分为4个文件,按8位BYTE依次存放。

16:表示构建系统会把整个WINCE image分成两个文件。

32:表示构建系统会把整个WINCE image作为一个文件。

⑨ROMSIZE:指定WINCE image的大小。

⑩FSRAMPERCENT:定义了文件系统使用的内存的百分比,默认值为0x80808080。

Byte 0:第一个2MB中,每1MB所包含的4KB的倍数。

Byte 1:第一个2MB中,每1MB所包含的4KB的倍数。

Byte 2:第一个2MB中,每1MB所包含的4KB的倍数。

Byte 3:剩余的内存中,每1MB所包含的4KB的倍数。

Config.bib文件的一部分:

CONFIG

COMPRESSION=ON

KERNELFIXUPS=ON

/**************************************************/

此段代码指定了构建系统压缩WINCE image的可写部分和对WINCE image的可写部分进行重定位。

/***************************************************/*

IF IMGPROFILER

PROFILE=ON

ENDIF

IF IMGPROFILER !

PROFILE=OFF

ENDIF

/*****************************************************/

如果设置了环境变量IMGPROFILER,就启动PROFILE。

/*******************************************************/

IF IMGTRUSTROMONLY

IF IMGNOTALLKMODE

ROMFLAGS=12

/*************************************/

表示禁用Full Kernel(完全内核模式)并且只信赖bib文件中放在MODULES块中的文件。

/***************************************/

ENDIF

IF IMGNOTALLKMODE !

ROMFLAGS=10  //表示只信赖bib文件中放在MODULES块中的文件。

ENDIF

ENDIF

IF IMGTRUSTROMONLY !

IF IMGNOTALLKMODE

ROMFLAGS=2    //表示禁用Full Kernel(完全内核模式)。

ENDIF

IF IMGNOTALLKMODE !

ROMFLAGS=0

ENDIF

ENDIF

ROMSTART=8C200000

ROMWIDTH=32

ROMSIZE=01500000

FSRAMPERCENT=0x08080808

⑶MODULES和FILES

这两项列出了所有被包含到WINCE image中的模块以及文件,以及这些模块和文件以什么方式被加载到内存中,具体格式如下所示:

MODULES

Name       Path       Memory     Type

Name:此文件的名字,比如一个dll或者exe文件的文件名。

Path:是要打包文件的完整路径和名称,一般都是WINCE的工程的release目录。

Memory:指定此文件放在上面提到的MEMORY项的哪一段内存中。

Type:文件的类型,常用的有如下几种:

①S:表示系统文件。

②H: 表示隐藏文件。

③U: 表示不压缩此文件。

④D:表示不能对此文件进行调试。

⑤N:表示此文件不受信任。

⑥M:表示对此文件禁止按需调页。

以下内容是摘之platform.bib文件的部分内容

MODULES

;  Name           Path                 Memory        Type

IF BSP_NODISPLAY !

s3c2440disp.dll      $(_FLATRELEASEDIR)s3c2440disp.dll     NK  SH

ENDIF BSP_NODISPLAY !

/*****************************************************/

如果在XXX:WINCE500PLATFORMSMDK2440目录下的SMDK2440 DOS批处理文件设置了:SET BSP_NODISPLAY =1,那么构建系统将不会打包s3c2440disp.dll到WINCE image(NK.bin)中。

/***********************************************************/

backlite.dll      $(_FLATRELEASEDIR)backlite.dll               NK  SH

camera.dll        $(_FLATRELEASEDIR)camera.dll                 NK  SH

AVOUT.dll         $(_FLATRELEASEDIR)AVOUT.dll                  NK  SH

/**********************************************************/

根据上面的内容,构建系统就把_FLATRELEASEDIR目录下的backlite.dll、camera.dll 和AVOUT.dll打包到WINCE image中,放在NK内存中,并指定它们为系统文件和隐藏文件。

/**********************************************************/

FILES

;   Name                 Path              Memory        Type

events.wav           $(_FLATRELEASEDIR)events.wav          NK  H

LoadGuid.exe         $(_FLATRELEASEDIR)LoadGuid.exe        NK U

PowerApp.exe         $(_FLATRELEASEDIR)PowerApp.exe        NK U

usbcnect.lnk         $(_FLATRELEASEDIR)usbcnect.lnk        NK U

usbcnect.exe         $(_FLATRELEASEDIR)usbcnect.exe        NK U

BIB文件支持“条件编译”,我们可以通过设置环境变量来选择性地将某些模块打包到WINCE image中。一般在BSP中,对于一些驱动模块的环境变量我们通过IF来进行条件判断,而对于WINCE系统模块来说,一般都是SYSGEN变量,应该使用@CESYSGEN IF来判断。

在我们的BSP开发中最常见的主要有stepldr.bib、eboot.bib 、config.bib、platform.bib和project.bib,其中:

project.bib:该文件的配置主要是针对当前的OS Design。

platform.bib:该文件包含了和硬件相关的文件,主要以驱动程序为主。

config.bib:该文件描述了WINCE系统的内存的配置。

eboot.bib:该文件描述了WINCE系统的eboot的内存的配置。

stepldr.bib:该文件描述了WINCE系统的nboot的内存的配置。

WINCE的BIB文件解析相关推荐

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

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

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

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

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

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

  4. wince bib文件合成

    在WINCE中,reg文件和bib文件是两种重要的文件,它影响了整个的CE系统.在解析的过程中,原始的Common.bib, Config.bib, Project.bib, Platform.bib ...

  5. WinCE BSP的BIB文件介绍

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

  6. Json文件解析(下

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...

  7. Json文件解析(上)

    Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...

  8. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  9. OpenCV读写视频文件解析

    OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在OpenCV 中,VideoCapture 类 ...

最新文章

  1. 25行代码实现Promise函数
  2. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(三)
  3. 浮栅场效应管 符号_场效应管主要参数与特点,场效应管与其他管子的对比
  4. 得到当前选中行的第几列的值---dataGridView
  5. 比尔盖茨正式退出微软董事会:将继续担任技术顾问
  6. 解决自己电脑VMware打开虚拟机黑屏问题
  7. 把lighttpd配置为系统服务
  8. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第五章
  9. MATLAB绘图——加强篇
  10. 记一次武汉科技大学ctf新手赛 wuctf2020
  11. [附源码]计算机毕业设计springboot基于Vue的社区拼购商城
  12. linux ping -w 命令,Linux ping 命令
  13. Mac 下生成keystore以及获得数字签名
  14. 2018百度之星程序设计大赛资格赛(4道题的答案)
  15. Java语音技术之FreeTTS
  16. 无聊 用Python 画个小心心 turtle(乌龟模块)
  17. 安装vue cli失败,显示this package has been deprecated in favour的解决办法
  18. 中国信息化发展八大趋势(一)
  19. (附源码)计算机毕业设计ssm二手图书回收销售网站
  20. 微信公众号粉丝快速涨粉的五个方法

热门文章

  1. r语言rank降序_R语言rank函数详细解析
  2. 硬盘计算机类比推理,判断推理类比推理:储存:光盘:硬盘 A:晾晒:绳索:衣架 B.吃...
  3. ffmpeg命令 抓屏_使用FFmpeg从视频中截图的命令 | 学步园
  4. spring容器bean的作用域 spring容器是否是单例的一些问题
  5. 【大数据】获取一篇新闻的全部信息
  6. Java中TreeMap和TreeSet的底层实现
  7. 条件、循环、函数定义 练习
  8. (1-1)文件结构的升级(Area和Filter知识总结) - ASP.NET从MVC5升级到MVC6
  9. 数据访问......单条件查询与多条件查询
  10. IPv6 相关的工作简介