wince 配置文件点滴

BIB文件和REG文件:
 
【MEMORY】用于定义有效的物理内存块,在此将整个RAM分为几个部分。
格式:    名称 首地址 大小 内存类型
名称:    内存区域的唯一名称(RESERVE是预定义名称,可以用多次,表示此区域保留)
首地址:  内存区域的首地址(十六进制表示)
大小:    内存区域的大小(十六进制表示)
内存类型:分为三种。
          RAM:     运行所有进程的内存区域(整个区域必须是连续的,且不能含空洞)
          RAMIMAGE:专用于保存镜像的内存区域。(每个.bin中只能指定一个RAMIMAGE)
          RESERVED:保留内存区域(这样的区域一般用于驱动程序使用,如显卡缓冲区、DMA缓冲区)

举例:
     ;名称 首地址 大小 内存类型
       IF IMGRAM64
       NK 80220000 009E0000 RAMIMAGE
       RAM 80C00000 03000000 RAM
       UMABUF 83C00000 00400000 RESERVED
       ENDIF

注:整个内核的地址都是从0x8000 0000开始的。如果是x86系列的CPU,那么物理内存地址与虚拟地址映射关系在oeminit.asm中指定。
【CONFIG】类似环境变量,PB预设置了一些配置变量。常用的配置及说明如下:
AUTOSIZE:
格式:AUTOSIZE = OFF | ON

默认值为OFF。在config.bib中的MEMORY部分定义了有效的内存区域,其中两部分RAM、RAMIMAGE分别用于进程使用区域和保存镜像区域。如果为ON,romimage.exe在创建nk.bin时将RAM和RAMIMAGE两部分合并成一个部分,然后从最低地址开始保留RAMIMAGE大小的内存,其余都作为RAM使用。

BOOTJUMP:
格式:BOOTJUMP = address | NONE

默认值为NONE。每次重新启动CE内核,默认执行的代码从RAMIMAGE的首地址开始。如果在BOOTJUMP指定一个地址(必须在RAMIMAGE范围内),那么将从指定的地址开始执行。

COMPRESSION:
格式:COMPRESSION = OFF | ON

默认值为ON。romimage.exe在创建内核时默认压缩所有可写部分。对于文件,默认全部压缩。对于模块(.exe、.dll),默认压缩可写部分。模块的可写部分包括数据段,也就是在模块运行时一定加载到内存中的部分。如果模块在.bib中定义时具有C属性(表明压缩模块所有部分),那么当前这个选项就忽略了。

FSRAMPERCENT:
格式:FSRAMPERCENT = number

默认值为0x80808080。指定为文件系统分配的内存的百分比。number分为四个字节,由十六进制表示。

byte0的值(单位为4KB)表示在第一个2MB中,其中每1MB包含的4KB的整数倍。
byte1的值(单位为4KB)表示在第二个2MB中,其中每1MB包含的4KB的整数倍。
byte2的值(单位为4KB)表示在第三个2MB中,其中每1MB包含的4KB的整数倍。
byte3的值(单位为4KB)表示在剩下的内存中,每1MB包含的4KB的整数倍。

计算一下默认值0x80808080表示的百分比:0x80*4K/1M = 0.5,因为每个字节都等于0.5,所以整个占用的百分比是50%。
KERNELFIXUPS:
格式:KERNELFIXUPS = OFF | ON

默认值为ON。如果为ON,romimage.exe创建内核前重定位内核到RAM的开始位置。

OUTPUT:
格式:OUTPUT = path
指定romimaeg.exe将创建完成的内核文件nk.bin放置到的路径。一般放置到%_FLATRELEASEDIR%下。
ROMFLAGS
格式:ROMFLAGS = Flags
设置内核选项的位掩码,多个位掩码可以组合使用。
  • 0x0001 禁止按需分页:EXE和DLL默认是按需分页的。
  • 0x0002 禁止全内核模式:进程运行在两种模式下,用户模式和内核模式。全内核模式下所有线程运行在内核模式。全内核模式能够提高执行效率,但会增加系统的不稳定性。如果允许执行用户程序,那么不适合采用全内核模式。
  • 0x00000010 只信任来自ROM的模块(DLL、EXE)。默认ROM中的模块和所有文件系统的模块都是内核信任的。OEM能够在OAL层实现对所有运行模块的检查,这个标志将忽略对来自ROM保存的模块的检查。
  • 0x00000020 停止刷新TLB。这个标志仅用于运行在x86CPU上的内核。TLB(Translation Look-aside Buffer),有人翻译成变换索引缓冲区,它的作用是在虚拟地址和物理地址之间转换。对于具有实时性的内核,这个标志应该设置。
  • 0x00000040 按照/base链接选项中的地址加载DLL。这样内核将不采用重定位加载DLL。不建议采用。
    ROMSIZE
    格式:ROMSIZE = size

    指定内核镜像的大小
    ROMSTART
    格式:ROMSTART = address
    指定内核镜像的首地址
    ROMWIDTH
    格式:ROMWIDTH = width
    定数据宽度,一般为32位
    ROMOFFSET
    格式:ROMOFFSET = address
    指定偏移地址。
    SRE
    格式:SRE = OFF | ON
    指定romimage.exe是否产生.src文件,一般烧录ROM的程序能够识别此文件。

    注:config中绝大多数【CONFIG】选项不需要修改。凡是配置文件都可以使用IF/ENDIF 条件语句。
    【MODULES】定义镜像要包含的模块并指定模块(DLL、EXE)如何被加载到内存表中。
    格式:模块名称 路径 内存块 类型
    模块名称一般为模块的真实名称;路径为当前文件所处的位置(路径中指定的文件名和前面模块名称最好一致);内存块是指这个模块将被存放到哪个内存块中,内存块的定义见前面MEMORY部分;类型指定这个模块将被存放的属性,具体类型如下:
    • S:系统文件
    • H:隐藏文件
    • R:只压缩模块的资源部分(默认模块是不压缩的)
    • C:压缩模块所有部分
    • D:禁止调试
    • N:标志模块是非信任的
    • P:忽略CPU类型
    • K:指定romimage.exe修正模块(仅用于调试或者内核跟踪)
    • X:指定romimage.exe对此模块验证签名
    • M:运行时加载整个模块,而不是按需分页
    • L:不分离DLL在进程地址空间和Slot 1
      举例:
            MODULES
            init.exe %_WINCEROOT%\RELEASE\INIT.EXE NK SH
            nk.exe $(_FLATRELEASEDIR)\kitlnokd.exe NK SHD
            nk.exe $(_FLATRELEASEDIR)\kitlnokd.exe NK SHN

      【FILES】定义镜像要包含的文件并指定文件如何被加载到内存表中。
      格式:模块名称 路径 内存块 类型
      具体类型如下:
      • S:系统文件
      • H:隐藏文件
      • U:不压缩文件(默认是压缩的)
       
      在reg和bib文件中可以使用下面的指令来控制fmerge.exe
      #define
      #undef
      #include
      #error    : �出message�K且停止�绦�
      #message  : �出message
      在�@些instruction 中可以使用:
      &&
      ||
      ==
      !=
      变�档牟糠�(用#define 定义的),可以用$( )�泶�表。
       
      SOURCE文件:
       
      在makefile中使用�h境��档姆绞胶驮�command shell中不一�印�
      makefile中用 $( )��h境��倒纹�恚�command shell中用 % % 刮起�怼�

      build process依照�缀踅y一的makefile,同�rfollow dirs, sources�@���file的�热�� build。
      在dirs, sources中可以定�xmacro,改�make的行�椤�macro的定�x方式是:
      Macroname= value
      和Linux的Makefile一�樱�Marconame和"="之�g不可以有space。
      一�樱�用"\"代表�到下一行。
      Macroname 不分大小��。

      Build.exe和Nmake.exe都����macro展�_。

      你可能感兴趣的:(职场,配置,WinCE,休闲)