Platform Builder 配置文件

Unreal Engine 4.25 Visual Studio Code intellisense error 最近在搞Unreal Engine。 UE4.25 配合VSCode有个bug,就是生成的VSCode project文件的C++描述部分有误,导致VSCode的intellisense不能正常工作,表现为找不到如下文件 UBT_COMPILED_PLATFORM/UBT_COMPILED_PLATFORMPlatformCompilerPreSetup.h 并伴随着自动补全和语法高亮出现问题,也无法在输入函数参数时获得函数定义的提示,更无法鼠标悬停获得对象的定义描述。 经过Google后发现,这个bug 阅读详情

这篇文章主要讲解PB的配置文件。从用途方面分析,PB包含两种配置文件。分别是源码配置文件和镜像配置文件。下面分别讲解这两种配置文件。

 

一、源码配置文件

源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码,如驱动程序、系统应用程序等。PB在编译平台时将这些公开的源码即时编译并将编译链接后的文件复制到平台工程子目录里。记得前面讲过PB在开始编译时调用cebuild.bat批处理文件,cebuild.bat执行的一个步骤是针对_DEPTREES变量指定的所有目录执行build.exe和sysgen.bat。build.exe在编译源码文件时会寻找当前目录下存放的源码配置文件,根据配置文件的信息来编译和链接,产生EXE、DLL、LIB文件。CE的源码文件所在的目录中都包含了相应的配置文件,这些配置文件只对当前目录或者子目录的源码有效,具体分为三种:

DIRS文件:文件内容和解释如下:

DIRS:指定哪个子目录的源码要被编译

DIRS_CE:只有为CE编写的源码才被编译

OPTIONAL_DIRS:指定可选的目录(很少使用这个选项),可以只编译指定目录而不是全部编译。

SOURCES文件:通过宏定义来指定编译和链接涉及到的文件,文件内容和解释如下:

TARGETNAME:指定编译链接产生的主文件名

TARGETTYPE:指定编译链接产生的文件的类型(决定了扩展名)。文件共分三种:.lib(LIBRARY)和.dll(DYNLINK)和.exe(PROGRAM)。

TARGETLIBS:定义.lib链接文件,链接时需要这个文件。

SOURCES:源码文件。包含扩展名为*.c或*.h 或*.cpp的文件。

EXEENTRY:.exe文件的执行代码入口点。

sources.cmn文件是通用的SOURCES文件。在这个文件中可以指定作用于所有源码文件的配置选项。

MAKEFILE文件:包含默认的编译和链接选项

整个编译和链接过程:build.exe收集编译和链接需要的数据(源码文件、链接文件、编译和链接选项)产生一系列的内部环境变量,然后调用nmake.exe,nmake.exe根据内部环境变量执行编译、链接,最后产生最终文件(*.lib *.exe *.dll)。

二、镜像配置文件:

镜像配置文件用于在制作CE镜像文件时使用。CE的镜像文件扩展名为.bin。制作镜像工具romimage.exe除了能够产生.bin文件外,还能够产生.abx和.sre文件。整个镜像的制作过程由makeimg.exe控制,它调用cenlscmp.exe、fmerge.exe、res2.exe、txt2ucde.exe、regcomp.exe、romimage.exe等。这些工具大部分在前面已经介绍过了。镜像配置文件类型有.bib、.reg、.db、.dat、.str。如果主文件名为Common,表示是通用的配置文件。如果主文件名为Platform,表示是某一个BSP的配置文件。如果主文件名是Project,表示是定制的一个平台的配置文件。在PB中修改配置文件前如果没有把握最好先做好备份。

.bib(Binary image builder)

定义包含在内核镜像中的文件和模块的名称、加载位置。主要的bib文件有Common.bib,Config.bib, Project.bib, Platform.bib等。.bib文件内部分为几个部分:

【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:不压缩文件(默认是压缩的)

举例:

FILES

initobj.dat %_WINCEROOT%/RELEASE/INITOBJ.DAT NK SH

【.dat File System File】定义目录和指定文件位置。当冷启动CE平台时,filesys.exe用这些数据

创建目录、快捷方式、文件(在RAM文件系统)。

举例:

;;创建根目录下子目录Program Files

root:-Directory("Program Files")

;;创建目录Program Files下一个子目录My Projects

Directory("/Program Files"):-Directory("My Projects")

;;复制文件从/Windows/Myproj.exe到/Program Files/My Projects/My Project.exe

Directory("/Program Files/My Projects"):-File("My Project.exe", "/Windows/Myproj.exe")

;;复制文件从/Windows/control.lnk到/control.lnk

root:-File("/control.lnk", "/Windows/control.lnk")

快捷方式的运用:如果要在CE平台的桌面上显示一个程序的快捷方式,实现步骤为:

创建一个快捷方式。在开发机上用记事本一类的文字编辑软件写入字符格式为:长度#路径。其中长度为路径的字符个数。

例如"16#/windows/abc.lnk",注意路径中空格也算在内。完成后保存为ASCII码的扩展名为.lnk的文件。

将此快捷方式文件*.lnk复制到%_FLATRELEASEDIR%下,也就是PB编译的所有文件存放的目录。

在project.bib中的FILES部分下按FILES的格式键入字符。例如:

FILES

abc.lnk $(_FLATRELEASEDIR)/abc.lnk NK S

在project.dat中指定abc.lnk文件所存放的位置。例如:

root:-Directory("/Windows")

Directory("/Windows"):-Directory("LOC_DESKTOP_DIR")

Directory("/Windows/LOC_DESKTOP_DIR"):-File("abc.lnk","/Windows/abc.lnk")

【.reg Registry file】设置注册表项。关于注册表见我的文章《开发实例二:保存信息》。

数据类型 格式

REG_SZ "my string"

REG_DWORD DWORD: NNNNN (十六进制)

REG_MULTI_SZ multi_sz: "my string"

REG_BINARY hex: xx,xx,xx,xx ...

HEX hex(xxxxxxxx): xx,xx,xx,xx

例如:

[HKEY_LOCAL_MACHINE/init]

"Launch60"="myproc.exe" ///REG_SZ类型

"Depend60"=hex:14,00, 1e,00 ///REG_BINARY类型

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/TRUEFFS_UNAND/FATFS]

"MountFlags"=dword:2 ///REG_DWORD类型

【.db The database files】数据库文件保存在对象存储中。实际应用的不多,在这里不再过多讲解。

【.str string files】类似EVC中的字符串资源。

用于指定ID与字符串的关联。CE支持很多国家语言,所以内核使用的字符串可能采用不同国家的语言。为此,CE将字符串用ID来定义,在.str文件中指定ID对应的字符串。包含.str文件的目录名采用国家码来设置,例如"C:/....../0410/cepc.str"。

Platform Builder配置文件详解——转载 阅读详情

相关推荐

Platform Builder 5.0的Build OS菜单详解

wince 开发工具Platform Builder 5的界面 嵌入式开发人员必备

Platform Builder配置文件

这篇文章主要讲解PB的配置文件。从用途方面分析,PB包含两种配置文件。分别是源码配置文件和镜像配置文件。下面分别讲解这两种配置文件。一、源码配置文件源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码,如驱动程序、系统应用程序等。PB在编译平台时将这些公开的源码即时编译并将编译链接后的文件复制到平台工程子目录里。记得前面讲过PB在开始编译时调用cebuild.b

Larry的专栏 608

PyTorch模型生产部署:ONNX/Triton导出与高可用架构实战

机器学习模型部署本质是训练环境与生产环境之间的运行时契约建立过程,涉及序列化协议、推理引擎兼容性、动态批处理及资源隔离等核心问题。ONNX凭借标准化算子集和跨框架支持,成为平衡兼容性、性能与可维护性的首选导出格式;Triton Inference Server则通过原生多框架支持、动态batching和热加载能力,显著提升GPU利用率与服务SLA保障水平。在金融风控、电商推荐等高要求场景中,基于ONNX+Triton+K8s的分层架构可稳定支撑千级QPS与毫秒级P95延迟,同时满足模型热更新、可观测性与版本

weixin_33857679的博客 448

Platform Builder学习手册(从零开始)

WinCE的开发步骤,PB的帮助上给出了一张图: 有了这张图就可以大致了解开发的流程环节了。本来想自己翻译一下PB的帮助手册,但搜索到了一篇比较好的文章,我就偷一下懒吧o(∩_∩)o...需要说明的是,PB4.2的帮助文档写的有些地方是错误的,估计是以前的版本吧...以下的教程我根据PB4.2的环境修改了下。以下转载自:深林电子-唐静寅的BlogWindowsCE.ne

naiveC的专栏 6816

300m半径无人机单兵侦测设备技术详解

300m半径无人机单兵侦测设备凭借其卓越的侦测性能、高效的识别能力、便捷的告警方式以及广泛的应用场景,成为现代军事、安保及应急救援领域的重要装备。300m半径无人机单兵侦测设备,融合了最新的无人机技术、高精度传感技术与实时数据处理技术,为单兵作战、巡逻及侦察任务提供了前所未有的视野与效率。该设备通过无人机搭载的高性能侦测模块,能够在复杂环境中实现300米范围内的精准侦测,大幅提升单兵的战场感知能力和决策效率。设备为被动式探测设备,确保安静安全运行,不暴露目标 设备耗电功率小,可长时间在野外使用。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1119

从仿真到部署:基于ROS2与Gazebo的UR5e机械臂全流程控制实践

本文详细介绍了基于ROS2与Gazebo的UR5e机械臂全流程控制实践,从环境准备、模型构建到控制器开发和仿真优化,最终实现真实机器人部署。通过实战案例和避坑指南,帮助开发者掌握机器人仿真与控制的关键技术,提升UR5e机械臂在物料分拣等任务中的性能与稳定性。

weixin_29184371的博客 288

Platform Builder和Embedded visual C++简介

1 Platform Builder 介绍 Platform Builder 是微软公司提供给Windows CE 开发人员进行基于Windows CE 平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试 Windows CE 操作系统平台的工具。它运行在桌面Windows 下,开发人员可以通过交互式的环境来设计和定制内...

weixin_34413103的博客 474

基于HetConv与Dual策略的YOLOv8轻量化设计-CSPHet结构的优化与实现

在计算机视觉中,YOLOv8作为目标检测领域的最新版本,通过引入多种改进来提升检测精度和速度。然而,提升精度和保持实时性能往往需要更多参数与计算量。本文提出一种结合Dual思想与HetConv的新型轻量化结构,称为CSPHet。CSPHet能够在保持YOLOv8检测精度的基础上有效减少约70万参数量,实现模型的轻量化和速度的提升。HetConv(Heterogeneous Convolution)是一种混合卷积技术,通过同时使用1x1、3x3等不同大小的卷积核,来捕捉不同尺度的特征。

博客 1324

Platform Builder实践之配置文件

 2004-10-03 15:57 作者: 付林林 这篇文章主要讲解PB的配置文件。从用途方面分析,PB包含两种配置文件。分别是源码配置文件和镜像配置文件。下面分别讲解这两种配置文件。   一、源码配置文件:  源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码,如驱动程序、系统应用程序等。PB在编译平台时将这些公开的源码即时编译并将编译链接后的文件复制到平台工程子目

kevin_83的专栏 1113

半导体晶圆调平系统:基于最小二乘法的实现方案

基于最小二乘法的晶圆调平技术通过数学建模与工程实现的结合,解决了半导体量测中高精度平面对准的核心问题。实际应用中,需根据设备特性优化采样策略、校准传感器误差,并通过实时性优化满足高产能场景需求。该方案的模块化设计(如分离数据采集、拟合计算、补偿输出)也为后续功能扩展(如引入机器学习优化拟合模型)提供了灵活性。

品质生活,极致编程。 1181

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

Platform Builder配置文件详解

Windows CE操作系统是嵌入式系统的开发利器。Windows CE Platform Builder 提供创建、裁剪和配置Windows CE的所有开发和调试工具。深刻理解和灵活运用Platform Builder的配置文件.REG、.BIB、.DAT、.DB是定制适合目标平台的Windows CE操作系统的关键。本文详细分析Platform Builder的配置文件,并以向Windows

wirror800的专栏 1563

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 187

Platform Builder之配置文件

Platform Builder之配置文件  一、源码配置文件:  源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码,如驱动程序、系统应用程序等。PB在编译平台时将这些公开的源码即时编译并将编译链接后的文件复制到平台工程子目录里。记得前面讲过PB在开始编译时调用cebuild.bat批处理文件,cebuild.bat执行的一个步骤是针对_DEPTREES变量指定

阶廷成长日记 693

【Python】解决 ERROR: Exception:Traceback (most recent call last):(亲测有效)

1、遇到问题2、问题解决

Fanjufei的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Platform Builder实践之配置文件 | 软件 | 天极Yesky

导读:从用途方面分析,PB包含两种配置文件。分别是源码配置文件和镜像配置文件    本文转自 file:///F:/data_current/mobile/PB_html/Platform%20Builder实践之配置文件%20%20软件%20%20天极Yesky.htm

热爱嵌入式Linux Wince Android和硬件设计 692

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Platform Builder的映像配置文件

使用Platform Builder构建WinCE操作系统,除了添加/删除Catalog item,还有四种配置文件是用来配置最终生成的系统映像:*.BIB, *.REG, *.DAT, *.DB。四种配置文件都可以使用IF…ENDIF语句和环境变量,配合环境变量,可以使配置文件更加灵活。  BIB文件BIB(binary image builder)文件指示如何构建系统的

prothes 的专栏 576

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: WinCE中Build.exe工具的使用及其参数说明
下一篇: WinCE的Sources文件中TargetLibs和SourcesLibs的作用与区别
随风而去飘飘飘
博客等级 码龄19年 620粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值