WinCE BSP的BIB文件介绍

在WinCE中使用的一个重要的文件就是BIB文件,全称Binary Image Builder File。在WinCE的编译过程中会用到BIB文件,应该是在最后的Makeimg阶段。所有的BIB文件会被合并成CE.bib文件,然后Romimage.exe会根据BIB文件中的描述来决定哪些文件最终被包含到WinCE image中。当然,BIB文件还决定了WinCE设备内存的分配,其中定义了WinCE image占用哪块内存,Framebuffer占用哪块内存等。

在BIB文件中分为4大项:MEMORY项,CONFIG项,MODULES项和FILES项。下面分别作个解释:

MEMORY:定义了内存分配的相关设置,一般在BSP中的config.bib文件中。

CONFIG:在最后的Makeimg阶段,为Romimage.exe提供一些生成WinCE image的配置属性。该项是可选的,一般也在BSP中的config.bib文件中定义。

MODULES:定义了一些会被打包到WinCE image中的模块或者文件,比如dll,exe等。这些文件会被Romimage.exe标记为加载到RAM中或者XIP。我们可以在这里添加自己的WinCE应用程序或者模块,但是不要添加Managed Binaries,一般指.NET的程序。

FILES:定义了一些操作系统会用到的其他的文件,比如字体文件,图片等。这些文件也会在WinCE运行的时候被加载到RAM中。

 

 

下面会详细介绍上面的4大项:

 

1.       MEMORY

一般都在config.bib文件中定义,开头会有MEMORY的字样。这里定义了为WinCE image以及其他模块预留的RAM,同时也定义了WinCE可以使用的RAM。具体格式如下:

MEMORY

    NAME    Start Address        Memory Size        Type

 

NAME:该内存区域的名字,必须是唯一的。

Start Address:该内存区域的起始地址,用十六进制表示。

Memory Size:该内存区域的大小,用十六进制表示。

Type:内存区域的类型。包涵的多种类型如下。

 

类型值

描述

FIXUPVAR

用于在WinCE编译的Makeimg阶段,就初始化一个内核中的全局变量。

NANDIMAGE

当创建了一个使用BinFSimage的时候,NAND设备上的WinCE kernel重定向到RAM中的区域,当系统访问该区域的时候,BinFS会负责访问Nand设备上相应的位置,并返回数据给系统,实际上就是在Nand设备上面实现了XIP的功能。

RAM

定义了被WinCE系统使用的RAM区域,这块内存必须是连续的,这里有一点要注意就是从硬件的角度来说,这块内存不能跨越两片SDRAM,也就是说整个区域空间必须在一片硬件SDRAM上。

RAMIMAGE

定义了一块内存区域用于加载WinCE image,实际上WinCE启动以后,image会被拷贝到这块内存区域上面运行。一个image只能有一个连续的RAMIMAGE区域。

RESERVED

这块内存区域会被预留出来,一般用于Frambuffer或者是DMA Buffer,或者是一块共享内存用于EBOOT传递参数给WinCE系统。

EXTENSION

定义了一块WinCE image中的区域作为ROMHDR extension的数据区域。

 

 

2CONFIG

一般在config.bib文件中定义,定义了一些额外的配置参数,其中一些对于WinCE image来说也很重要。具体格式如下;

CONFIG

    ITEM=Parameter

 

ITEM

描述

AUTOSIZE

允许未被使用的WinCE imageRAM被用作WinCE系统的RAM。默认值为ON

COMPRESSION

允许Romimage.exe压缩WinCE image中的可写入部分。默认值为ON

BOOTJUMP

定义了跳转跳转页在RAMIMAGE空间的地址。而不是默认情况下的RAMIMAGE的首地址。默认值为NONE

FSRAMPERCENT

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

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

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

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

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

KERNELFIXUPS

定义了Romimage.exe是否重新定向内核的可写入区域。默认值为ON,内核的可写入区域被重新定向到RAMIMAGE的起始位置。

OUTPUT

定义了最终生成的image存放的路径。默认为%_FLATRELEASEDIR%

PROFILE

定义了是否在WinCE image中包含profiler的结构和符号。默认值为OFF

RESETVECTOR

重新指定跳转页的位置,一般针对MIPS芯片从0x9FC00000开始引导的问题。

ROMFLAGS

内核标记位,可以进行组合:

0x01表示禁用按需分页。

0x02表示禁用完全内核模式,完全内核模式表示所有的线程都运行在内核模式。

0x10表示只信任ROM MODULES中的模块。

0x20表示停止刷新TLB

0x40表示按照/base链接选项中的地址加载DLL

ROMSTART

WinCE image在内存中的起始地址。

ROMSIZE

WinCE image的大小。

ROMWIDTH

指数据总线的宽度。

ROMOFFSET

指定一个偏移量来修改.bin文件中的每一个记录的地址。一般用于ROM中的.bin文件加载到RAM来运行的情况,主要是表示存储.bin的位置和运行.bin的位置不一样。

SRE

使Romimage.exe产生一个.sre文件。默认值为OFF

X86BOOT

定义是否插入一条跳转指令,在x86复位向量地址的时候。

 

 

3MODULES项和FILES

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

MODULES

    Name    Path            Memory            Type

 

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

Path路径,一般都是WinCE的工程的Release目录。

Memory指定该模块被放在哪个区域,一般都是NK区域。

Type定义了文件的类型。具体如下:

 

类型

描述

S

系统文件。

H

隐藏文件。

R

只压缩模块的资源部分。

C

压缩模块的所有部分。

D

禁止调试。

N

模块是不可信任的。

P

告诉Romimage.exe不需要检查CPU的类型。

K

告诉Romimage.exe必需固定该模块的内核地址。有该标记的模块只能被LoadKernelLibrary函数加载。

X

告诉Romimage.exe对该模块签名。

M

运行时加载整个模块,不要按需分页。

L

告诉Romimage.exe不要分离ROM DLL

 

一般FILES项的Type只支持SHND几个类型,而MODULES项的Type是都支持的。

 

举个例子吧:

    INIT.EXE            %_WINCEROOT%\RELEASE\INIT.EXE            NK    SH

    MYDLL.DLL        %_WINCEROOT%\RELEASE\MYDLL.DLL       NK    SHC

 

 

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

 

 

我们在BSP的开发中最常见的主要就是eboot.bibconfig.bibplatform.bibproject.bib。下面简单介绍一下:

project.bib该文件主要自创建的WinCE工程中所需的一些文件。

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

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

eboot.bib该文件描述了WinCEeboot的内存的配置。

 

还有其他的一些bib文件,在WinCE系统编译后都会背拷贝到工程的release目录下面。比如common.bibie.bib等。这些文件列出了WinCE的组件相关的文件,根据用户订制的系统,会被选择性的打包到WinCE image中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

惊!MySQL官网巨变,下载被取消

随着欧盟的批准,甲骨文宣布收购Sun交易完成,与此同时甲骨文一系列动作也迅速展开。 甲骨文因MySQL被欧盟卡了大半年,在中国,MySQL的用户非常多,MySQL的前途无疑让人牵肠挂肚。并购之前,甲骨文说了很多&…

【转】【C++学习笔记】C++异常处理

转自:【C学习笔记】C异常处理!你绝对不能错过的干货! - 知乎 合理地使用C异常处理,能够使我们写出来的程序更加稳定强健,不易崩溃。那么,应该如何使用C异常处理呢?下面,我们就来向大…

关于WinCE中config.bib的问题

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

【转】源码分析C++的string实现

转自:源码分析C的string实现 - 知乎 我们平时使用C开发过程中或多或少都会使用std::string,但您了解string具体是如何实现的吗,这里程序喵给大家从源码角度分析一下。 读完本文相信您可以回答以下问题: string的常见的实现方式…

wince bib文件合成

在WINCE中,reg文件和bib文件是两种重要的文件,它影响了整个的CE系统。在解析的过程中,原始的Common.bib, Config.bib, Project.bib, Platform.bib等文件会合成为ce.bib,而原始的Common.reg, Project.reg, Platform.reg等文件会合成Reginit.ini文件,并进一…

WINCE的BIB文件解析

BIB的全称为Binary Image Builder,在Wince编译过程中的最后MakeImage阶段会用到BIB文件,BIB文件的作用是指示构建系统如何构建二进制映像。所有的BIB文件会被合并成CE.bib文件,然后打包工具Romimage.exe会根据BIB文件中的描述来决定哪些文件最…

做一个项目,平时都用到哪些工具提高效率(上)

做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工具来提高工作效率,让项目做的更轻松。 1 需要一个代码生成工具,生成实体层,数据访问代…

【转】傅里叶分析之掐死教程(完整版)更新于2014.06.06

转自:傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 作 者:韩 昊 知 乎:Heinrich 微 博:花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳…

wince6.0编译命令分析

下面从CSDN帮助文档简要说明vs2005下面的系统编译命令,这些命令位于Build->Advanced Build Commonds 一共有六条命令,分别是: 1.Sysgen 2.Clean Sysgen 3.Build and Sysgen 4.Rebuild and Clean Sysgen 5.Build Current BSP and Subprojec…

【转】C,C++宏中#与##的讲解

转自:C,C宏中#与##的讲解 - MoreWindows - 博客园 文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的…

wince对中文字体的支持

最近情况真的是很糟,小小年纪,得了好几样小毛病,弄得每天都提不起精神来,恍恍惚惚的,幸好有妻子的支持,她不论自己多忙多累,一看到我情绪不好,就给与很多安慰,百般鼓励&a…

提示信息的窗口效果

代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><title>提示信息的窗口效果<…

【转】C++中如何区分构造函数与重载operator()得到的仿函数?

转自&#xff1a;C中如何区分构造函数与重载operator()得到的仿函数?求大神!_360问答 此外,你觉得仿函数(functor)是否能完全取代function呢? 以下是个人使用C仿函数&#xff0c;function表达式的一些体悟。 首先是定义形式&#xff1a; 构造函数无返回值&#xff0c;而o…

WINCE添加新字体需要注意的一些问题

之前测试使用dgwulm.ttf字体&#xff08;GPS软件WolfNCU中带的&#xff09;&#xff0c;发现了一些添加新字体的时候可能被忽视的问题。 在WINCE系统中&#xff0c;除了将字体文件加入到系统内核NK之外&#xff0c;还可以动态的方式添加新字体&#xff0c;使用函数AddFontReso…

开源CRM Hipergate

Hipergate是一个用java写的开源CRM。有一个在线演示的Demo(http://demo-en.hipergate.org/)&#xff0c;并且支持中文。 该软件运行的屏幕截图请看这里&#xff1a;http://www.hipergate.org/docs/screenshots/ 开发语言&#xff1a; Java 操作系统&#xff1a; 跨平台 软件主…

【转】RAX,eax,ax,ah,al 关系

转自&#xff1a;RAX,eax,ax,ah,al 关系_迪迦 • 奥特曼-CSDN博客_rax和eax |63..32|31..16|15-8|7-0||AH.|AL.||AX.....||EAX............| |RAX...................|一般寄存器:AX、BX、CX、DX AX:累积暂存器&#xff0c;BX:基底暂存器&#xff0c;CX:计数暂存器&#xff0c…

MSDN中关于链接字体的解释(非常有用)

Windows Embedded CE提供了链接字库的能力&#xff0c;它可以将一个或多个字库链接到另一个字库上&#xff0c;前者称为被链接字库&#xff0c;后者称为基本字库。一旦你链接了字库&#xff0c;你就可以使用被链接的字库显示在基本字库中不存在的码字。比如&#xff0c;将日文字…

sharepoint站点移植方案

1、备份网站和内容数据库 "%systemdrive%\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o backup -url http://172.18.33.238:8000 -filename "E:\backup\%date:~0,10%.data" –overwrite 2、备份文件系统…

【转】ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

转自&#xff1a;ARM 之七 主流编译器&#xff08;armcc、iar、gcc for arm、LLVM(clang)&#xff09;详细介绍_itexp-CSDN博客_armcc 必备 在讲解各编译器之前&#xff0c;必须先了解一下以下文件。这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到。此外&a…

WinCE内核裁减(中文字体)及字库和内核的分离

每次定制中文系统时&#xff0c;NK总是比英文大10M左右&#xff0c;启动时在bootloader中将内核Copy到内存时也花时间&#xff0c;同时也占用了很多内存&#xff0c;留给系统和应用的内存就少了10M左右&#xff0c;真是浪费呀&#xff0c;看到都心痛&#xff01;本人研究了一下…