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

当创建了一个使用 BinFS image的时 候, 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的数据区域。

 

2 CONFIG

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

CONFIG

    ITEM=Parameter

 

 

ITEM

描述

AUTOSIZE

允许未被使用的 WinCE image RAM被用作 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复位向量地址的时候。

 

3 MODULES 项和 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只支持 S H N D几个类型,而 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.bib config.bib platform.bib project.bib。下面简单介绍一下:

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

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

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

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

 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值