WINCE600的目录组织及PQOAL

简介: 在介绍S3C2410的WinCE6.0移植之前,我们先熟悉一下WINCE600的目录组织和PQOAL的相关概念。        这里简单说一下WinCE6.0开发环境的搭建。WinCE6.0的开发环境是Platform Builder6.0,但与Platform Builder 5.0不同的是,它作为VS2005的一个插件来用。

     在介绍S3C2410WinCE6.0移植之前,我们先熟悉一下WINCE600的目录组织和PQOAL的相关概念。

       这里简单说一下WinCE6.0开发环境的搭建。WinCE6.0的开发环境是Platform Builder6.0,但与Platform Builder 5.0不同的是,它作为VS2005的一个插件来用。所以,我们需要先安装VS2005,并且安装相应的SP1PB6.0目前应该是不支持VS2008的。然后顺序安装PB6.0PB6.0SP1 R2。虽然微软没有严格说明,但还是建议将这些软件都默认安装到C盘,以免出现意外的情况。当然,这要求C盘足够大,至少得有10G的可用空间,以免安装的过程中出错。

       安装完成后, C盘的根目录下产生一个WINCE600的目录,这里包括WinCE6.0的源代码、BSP和一些编译WinCE时需要用到的工具和库文件。另外还产生一个C:\Program Files\Microsoft Platform Builder\6.00的目录,这里主要包括PB6.0的开发环境工具、帮助文件和其他一些开发时用到的工具。

       下面我们看一下WINCE600的目录组织。      

目录

说明

CRC

存放了一个PB6.0安装时用到的校验文件crc.ini

OSDesigns

用来存放PB的工程,对应PB5.0中的PBWORKSPACES

OTHERS

存放了一些运行库、用于编译操作系统的二进制文件、注册表文件、批处理文件

PLATFORM

存放了和硬件平台相关的BSPMCU相关的代码和其他一些文件

PRIVATE

存放了WinCE6.0开放的源代码

PUBLIC

存放了WinCE6.0的相关组件,这里应该是纯软件的代码和库

SDK

存放了用于编译WinCE6.0的相关工具和DLL文件

更详细的目录组织说明请参看MSDN http://msdn.microsoft.com/en-us/library/aa908702.aspx

一般来说,在移植BSP的过程中,我们只会修改PLATFORM下的相关目录和文件,而其他的除OSDesigns之外的目录,最好都不要修改,以免出错。PLATFORM目录下除了COMMON目录外,其他都是特定硬件平台的BSP,而COMMON目录中则包涵了不同体系结构的相关代码(ARMX86MIPSSHX)、与平台无关的代码(COMMON)SOC的相关代码(SOC),这些代码都不能直接修改,如果需要修改,应该先CLONE出来,再做修改。

PQOAL这个概念在WinCE5.0中就引入了,全称为Production Quality OAL,产品级的OAL。它的基本原则如下:

不同芯片或片上系统的代码必须分离开来;

BSP中的代码应该是组件化的并且有逻辑的组织在一起;

芯片级代码、片上系统的代码和板级支持包(BSP)中的代码都应该是高质量的,以便于代码重用。

PQOAL并不是一个硬性的规定,你可以按照自己的想法来组织BSP的目录及相关文件。但我还是建议尽量按照PQOAL的原则来组织,这会给后期的调试、移植和发布带来很大的便利。这是前人成功的经验,没有理由不用。

下面就从PQOAL的角度分析PLATFORM的目录组织。

PLATFORM\COMMON:这里存放了所有可重用的代码。这一部分代码将在BSP之前编译。

PLATFORM\COMMON\SRC\COMMON:这里存放了被BSP中重用的通用代码,这一部分代码是跟硬件平台无关的。譬如一般的IOCTL处理函数、与内核交互的公共的中断程序等等,另外还包括一下库文件,如OAL_IOCTL.liboal_intr.liboal_log.libkitl_log.lib等等。这一部分代码由微软提供,一般不能修改。

PLATFROM\COMMON\SRC\<CPU>CPU表示MCU的不同体系结构,如ARMMIPSSHX86。这些目录分别存放了各体系结构的MCU的相关代码,如CACHE相关代码、物理地址和虚拟地址转换的代码等等。这部分代码只针对MCU的内核,不涉及具体的芯片。这一部分代码也由微软提供,不建议修改。

PLATFORM\COMMON\SRC\SOC:该目录下存放了不同的MCU对应的代码,跟BSP对应,这里可看做是CSP(CHIPSET SUPPORT PACKAGE)。这一部分的代码一般来说不能直接修改,如果需要移植类似平台的BSP,应该复制一个,重命名后再做修改。这里的目录和其中链接后的库文件的命名也遵循一定的规则(芯片名称_厂商名称_版本号)。这里需要注意的是SOC目录下dirs文件需要包括体系结构的说明,如PLATFORM\COMMON\SRC\SOC\PXA27X_MS_V1中的dirs文件以DIRS_ARM= \打头。这与BSP中的一般的DIRS文件不同。我在移植BSP的时候,并没有在这里做任何修改,只是将其中相关的文件拷贝到我自己的BSP目录下,这样方便BSP的发布。

PLATFORM\BSPName:这里存放了跟开发板对应的相关代码。在编译WinCE操作系统时,它在\PLATFORM\COMMON的目录之后编译。我们在针对一款新的硬件平台移植WinCE6.0时就是在这里做相应的添加和修改。

WinCE6.0BSP的目录组织如下:

目录

说明

CATALOG

存放BSPCATALOG file

CESYSGEN

编译的过程中,bibreg文件将被拷贝到这

FILES

存放BSPbibregdat等配置文件和无须编译的二进制文件

SRC

存放BSP的所有源代码

SRC\BOOTLOADER

存放BOOTLOADER的源代码

SRC\COMMON

存放共享代码,链接后的库可被BOOTLOADEROAL和驱动使用

SRC\DRIVERS

存放设备驱动的代码

SRC\INC

存放相关头文件

SRC\KITL

存放KITL的相关代码

SRC\OAL\OALEXE

链接OAL.lib和其他一些库,生成OAL.exe

SRC\OAL\OALLIB

存放OAL的源代码,编译生成OAL.lib

本文分析了WINCE600的目录组织,并从PQOAL的角度分析了PLATFORM目录。文中如有疏漏,请您指正!谢谢。

目录
相关文章
|
Linux Shell
第六章、Linux文件与目录管理
第六章、Linux文件与目录管理
69 0
|
Linux Shell 开发工具
【Linux系统开发】x210开发板根目录文件系统构建(下)
【Linux系统开发】x210开发板根目录文件系统构建(下)
179 0
|
Linux 编译器 C语言
【Linux系统开发】x210开发板根目录文件系统构建(上)
【Linux系统开发】x210开发板根目录文件系统构建
161 0
|
算法 Java 开发工具
openHarmony系统打包应用程序
经过一段时间的学习,打包应用并安装应该是最激动人心的一环了,所以今天带大家完成openHarmony应用的安装,正文即将开始~~
418 0
openHarmony系统打包应用程序
win7/10环境下VC++开发软件,怎么让exe有权限在c盘写文件
win7/10环境下VC++开发软件,怎么让exe有权限在c盘写文件
423 0
|
Ubuntu Linux Shell
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(2)
本文关键字:从0开始搭建linux rootfs,在tinycolinux上安装openvz,openvz源码编译任意linux
193 0
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(2)
|
安全 前端开发 Unix
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(1)
本文关键字:tinycolinux上装第二套非标准路径下的gcc toolchain
212 0
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(1)
|
网络安全 C语言 数据安全/隐私保护
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(3)
本文关键字:从0开始编译tinycolinux,busybox openssh nss,改变openssh中的passwd文件引用路径
174 0
发布一统tinycolinux,带openvz,带pelinux,带分离目录定制(3)