WinCE目录结构定制流程及系统构建.ppt
《WinCE目录结构定制流程及系统构建.ppt》由会员分享,可在线阅读,更多相关《WinCE目录结构定制流程及系统构建.ppt(38页珍藏版)》请在冰豆网上搜索。
定制、编译WinCE系统基本方法,本节课程主要知识点,一、定制WinCE系统的一般流程二、WinCE目录结构三、WinCE构建过程四、定制中文模拟器五、Eboot烧写及配置,重点和难点,重点WinCE目录结构WinCE编译阶段Eboot烧写难点定制中文模拟器,上节课回顾,PB开发环境:
功能区分布、平台向导、SDK向导、平台配置、编译方法)平台向导:
学会定制模拟器、配置模拟器、下载运行、远程文件同步、IP地址配置方法。
SDK向导:
定义、配置、编译、安装。
平台改造:
删除、添加组件,重新buildSDK,远程文件同步,一、定制WinCE操作系统的一般流程,1.1概述,定制WinCE一般需要经过:
创建构建运行调试发布,1.2得到并安装BSP
(1),得到BSP的途径:
PlatformBuilder自带(CEPC、Emulator、AMDgeodeX86、SMDK2410、IntelPXA27X)硬件OEM厂商提供(ut2410classic)自主研发(后续课程详细阐述),安装BSP方法
(1)源码形式-手工安装将BSP源码拷贝到WinCEPlatform目录File-ManageCatalogItems打开ManageCatalogItems对话框最后单击Import.按钮,浏览并打开cec文件,思考:
Cec文件被安装在什么位置了?
CEC文件的格式?
安装BSP方法
(2)Msi格式的BSP包-直接安装双击F:
BP-24102410dvpWinCE5.0BSP目录下的ut2410classic.msi文件注意选择WinCE的安装目录,F盘,相对路径不变。
Ut2410classicBSP及ActiveSync服务安装,1.3定制操作系统,根据具体的应用需要,选择合适的OS组件,并构建运行时的镜像Nk.bin,通过eboot下载,winCE内核镜像Nk.nb0,WinCE内核,可直接烧在flash中运行Eboot.bin按section组织的2进制bootloaderEboot.nb0,bootloader映像,可直接烧在flash中Flash种类?
NorFlash及NandFlashNorFlash:
可本地执行,节省内存,但启动慢NandFlash:
需拷贝到内存运行,支持大容量,耗内存,下载到目标板上调试运行得到并安装Bootloader,eboot配置串口,建立超级终端配置eboot网络相关参数配置PB中的target-conectivityoptionsTarget-attachdevice烧写内核章节详细阐述,1.4发布操作系统,通过Eboot中的设置,可在下载nk.bin完成时,直接烧写到Flash中,完成系统发布,定制特定硬件上的WinCE步骤
(1),针对特定的硬件设备创建板级支持包(BoardSupportPackage缩写为BSP),BSP必须包括BOOTLOADER、OEM适配层(OEMAdaptationLayer缩写为OAL)和一些必要的驱动。
利用创建的BSP,定制一个系统设计(OSDesign)。
即通过VS2005创建一个PlatformBuilder的工程。
该工程可编译产生最终的运行时映像文件(Rum-timeImage)。
针对板上的外围设备创建相关驱动,并添加到BSP中。
定制特定硬件上的WinCE步骤
(2),通过创建子工程和CatalogItems的方式,修改OSDesign。
编译OSDesign,下载编译得到的运行时映像文件到目标设备。
此时,可通过远程调试工具进行调试。
在完成所有的调试工作之后,导出该运行时映像对应的SDK(SoftwareDevelopmentKit),应用程序的开发人员可基于此SDK编写该设备的应用程序。
二、WinCE的目录结构,WinCE5.0目录结构,构建WinCE系统取决于你对WinCE目录结构的了解程度根目录=WinCE+版本号(WinCE500)%_WINCEROOT%Set_WINCEROOT显示_WINCEROOT=D:
WINCE500,PBWorkspace,PB定制的平台工程目录,一个工程一个目录,在工程目录RelDir目录下产生内核镜像文件。
F:
WINCE500PBWorkspacesmy2410RelDirut2410classic_ARMV4I_ReleaseNk.bineboot.bin*.reg*.bib*.dll,Platform,其中PLATFORM文件夹下存放的是与具体平台相关的程序,所有的BSP,当你修改某一平台的内核时就要到具体的平台所在的文件夹下去修改,比如EMULATOR平台即模拟器的KERNEL部分,那就要到EMULATOR的文件夹下改其KERNEL子文件夹下的源程序。
Ut2410classic平台对应的目录Drivers:
与平台相关的驱动Kernel:
Eboot:
2410平台下的eboot启动代码Nboot:
2410平台下的nboot启动代码,Public,PUBLIC目录包含构建系统所需要的工具、部分组件的源码、驱动程序、链接库等其中大部分都是系统组件的源程序比如IE、SHELL,如果我们想要修改某个组件的行为就可以到相应的文件夹下去找用得最多的是其中的COMMON文件夹,在该文件夹下的SDK文件夹下的SAMPLES子文件夹中有一些示范样例程序,比如大键盘的输入法的源程序等,我们可以更改这些源程序。
在该文件夹下的OAK文件夹中的CSP文件夹为CPU支持组件,里面的各子文件夹都是针对特定的CPU的内容,比如针对ARM、I486、SA11X1等,如果我们需要处理和特定CPU相关的部分就可以到此文件夹下来操作。
在该文件夹下的DRIVERS文件夹为微软做好的各种典型设备的驱动程序的源程序,比如1394的驱动、网卡的驱动、串口的驱动等,如果我们想要修改驱动或重新驱动,都可以以这个文件夹下的源程序做参考。
Public几个特别的目录,CommonOAKCatalog目录CEC文件CommonOAKDriver目录微软提供的外设驱动程序代码CommonOAKMisc目录构建系统是用到的批处理文件及其他工具CommonOAKCSP目录CPUsupportPackage,CPU相关代码,Private,PRIVATE目录存放WinCE私有的源代码。
WinCE5.0只开放大约56%的核心源码,Others,WinCE一些模块的二进制库文件和代码,SDK,SDK文件夹包含了PB在编译时用到的如LINK.exe等程序,如果我们需要手工编译些什么东西那么可以到这个文件夹下来找相应的工具程序,Dirs文件和Sources文件,DIRS文件是位于需要编译的文件夹中的一个特殊的文本文件,它指出了要编译的源程序所在的文件夹名SOURCES文件是位于源程序文件夹中的一个特殊的文本文件,它包含了一些宏定义,编译程序就是利用这些宏定义作为选项来决定如何编译和链接这些源程序的WinCE详细的目录结构,三、WinCE构建过程,3.1构建概述,Compile:
C/CPP/H到OBJLink:
OBJ/LIB到EXE/DLLBuild:
生成操作系统的过程,包括编译、连接、映像打包,概念最大。
3.2环境变量,显示:
命令行中输入set查看分类:
指定重要的目录_WINCEROOT=D:
WINCE500指定OS包含的组件SYSGEN_SHELL=1构建时的配置信息IMGEBOOT=1IMGSTRICTLOC=0,3.3WinCE系统构建过程,基于WindowsCE5.0的操作系统镜像的生成过程主要分为4个阶段:
Sysgen-系统生成阶段Build-编译连接ReleaseCopy-Release文件夹复制Makeimg-镜像生成打包阶段,3.4WinCE系统构建命令,OpenreleaseDirectoryBlddemoclean:
先清空cesysgen目录然后构建Blddemoq:
快速构建,不编译共享源代码Blddemoqrel:
sysgen+build+copyBlddemoqrelmakeimg:
sysgen+build+copy+makeimg,3.5Sysgen阶段,在Public文件夹下是CE为我们提供的可用组件,我们定制自己的平台是通过PlatformBuilder做的选择就是从这里面选择了一部分需要的组件。
在这些文件夹中,包含了所有可用的库文件,头文件,DEF文件,当然也包括了所有可导出的函数说明。
在Sysgen阶段要做的就是从中选择我们自己的平台需要的头文件,库文件和导出函数以创建我们自己平台需要的组件。
它所完成的头文件会以C+注释的方式加以标记,这样它就可以选择需要的部分来导出,最后把所有需要的库进行链接就得到了我们自己平台所需要的东西了,它就放在Wince500pbworkspaces%ProjectName%WINCE500%CPU_TYPE%_x86cesysgen文件夹下。
对应的BuildOS菜单sysgen,对此命令的特殊说明:
在上一次调用Sysgen之后,如果你已经增加或移除文件以及相关的Catalog,强烈建议选中“CleanBeforeBuilding”,然后再开始新的一次Sysgen。
因为这样会最大程度上减少出错的机会。
该命令也会编译包含于系统设计工作区(Workspace)的工程(Project)没有任何文件拷贝到目标(Release)文件夹。
3.6Build阶段,Build阶段将编译和链接图形、窗口和事件子系统(GWES)、内核、OEM适配层(OAL)、设备驱动及应用程序等。
该阶段使用了一组特殊的文件DIRS和SOURCES文件,这些文件确定了Build过程需要编译和链接什么文件。
DIRS、SOURCES和Build.exe,Build.exe查当前目录下的DIRS,递归Build.exe找到SOURCES则调用nmake.exe-makefile=makefile.def+SOURCE完成编译、链接过程,3.7Copy阶段,Copy阶段将从多个位置把Sysgen和Build阶段生成的文件拷贝到Make镜像阶段的发布目录中D:
WINCE500PBWorkspacesmy2410RelDirut2410classic_ARMV4I_Release主要工作就是拷贝文件,对应的菜单buildOS-CopyFiletoreleasedirectory,此菜单是个命令菜单,可在Sysgen及build之后单独执行,也可以把BuildOS菜单下的属性标签选中(CopyFiletoreleaseDirectoryafterbuild),3.8Makeimg阶段,为平台生成最终的ROM映像NK.bin。
合并所有平台配置文件(包括BIB、DB、REG和DAT文件)。
它将按照配置文件对发布目录中的所有文件进行处理,它将所有内容组合到一个二进制映像文件NK.bin中,以便下载到目标设备上运行。
Makeimg对应的菜单BuildOS-Makerun-timeimage,此菜单是命令菜单,可在Copy之后单独执行,也可以把属性标签选中(makerun-timeimageafterbuild)在Build阶段后自动执行。
PB中对应的菜单-buildandsysgen,其实这是两个命令的组合,先是编译(Build),然后再调用Sysgen。
该命令不仅编译公开(Public)代码,甚至连私有(Private)代码也不放过,所以耗费的时间会非常久。
只有当你更改了OS的源文件,才建议选择该命令该命令和之前的Sysgen相同,也会编译包含于系统设计工作区(Workspace)的工程(Project)以及不将文件拷贝到目标(Release)文件夹。
3.9解决构建时的错误,查看输出信息:
output查看日志文件build.logBuild.wrnBuild.err,