Session 2: Testing Windows CE .NET 嵌入式软件开发导论 5. 操作系统开发 同济大学软件学院 2006 Alan Page, Microsoft
目录 介绍 Platform Builder 平台创建流程 Build系统 定制目录Catalog 用户界面UI 目录(Catalog) and 特性(Feature) 配置平台 平台创建流程 Build系统 定制目录Catalog
目录 介绍 Platform Builder 平台创建流程 Build系统 定制目录Catalog 用户界面UI 目录(Catalog) and 特性(Feature) 配置平台 平台创建流程 Build系统 定制目录Catalog
介绍 Platform Builder 一个定制基于Windows CE的平台定制集成开发环境(IDE) 该集成开发环境提供统一的与平台和项目相关的工作空间
PB能做什么? (1) 平台向导帮助你创建一个新的平台(platform) BSP向导帮助你创建新的板级支持包(BSP) 目录(Catalog)显示用户定制的平台OS属性列表 依赖性自动监测(Automated dependency checking)可以确保与平台相关的所有属性都会被包含在OS镜像中 导出向导可以导出目录中的属性给其它PB使用者 基本配置(Base configurations)是创建用户特定定制OS的起点
PB能做什么?(2) Windows CE测试套件(Test Kit)提供了整套驱动测试工具 内核调试器可以调试定制的OS镜像,同时提供给用户镜像运行状况的信息 应用调试器可以调试在特定OS上运行的应用程序 远程工具可以调试基于Windows CE的目标机上运行任务,并获取相关信息 模拟器通过模拟硬件可以加快和简化开发过程,使用户可以在宿主机上完成平台和应用程序的初步开发 SDK导出向导可以为用户导出一个特定的软件支持包(software development kit — SDK).
平台向导(Platform Wizard) 平台向导帮助你一步步的创建一个基于Windows CE的平台
使用平台向导的4 步 选择一个安装的BSP 为你的设备选择一个基本平台配置 为你的设备选择配置变量 为你的平台选择其它的属性
Platform Builder 用户界面 Multiple views of the workspace Text Editor Search Text Text Editor Build Configuration Connectivity Device Name Workspace Window Multiple views of the workspace Debug tool status indicators Output Windows
目录(Catalog) 包含BSPs,驱动,OS内核配置和平台管理器等,在目录中出现的所有项目包含了你所设计的CE平台所使用到的属性
目录(Catalog)项 BSP:Board Support Packages Core OS: includes headless devices and display-based devices: Applications and Services Development Applications - End User Communication Services and Networking Core OS Services File Systems and Data Store Fonts International Internet Client Services Multimedia Technologies Security Shell and User Interface Device Drivers Platform Manager
属性组(Feature Group)和属性(Feature) 属性组定义了通用的属性而没有定义具体的实现。属性组在你选择一个实现的时候才被解析,这个实现决定了它的具体功能。 一个属性是OS组件的任何一个逻辑群
Feature 图标 图标 描述 BSP Core OS design Catalog item group. Required Catalog item. Optional Catalog item. Catalog item, type, or implementation excluded from the current OS design. Folder Catalog item that has one or more special notifications. Catalog properties for a specific implementation of a Catalog item. Implementation
Feature 图标(2) 图标 描述 User-specified Catalog item. Catalog item (optional). Catalog item that can be built but is excluded from the run-time image. Catalog item excluded from the build and the run-time image. Source code file.
Feature 选项 显示备选feature信息.
Feature依赖关系 显示备选feature的依赖关系
挑战 了解尽可能多的features
挑战 丰富的经验和知识 没有这些不能设计合理的平台 关于属性的功能可参照 : Windows CE上可以使用简体中文? Windows CE支不支持VBScript? 关于属性的功能可参照 : 有关Windows CE.NET -> Catalog Features
Platform Setting 使你可以浏览和修改关于整个平台的每个属性的选项 菜单: Platform -> Settings…
Build Options (1) Enable CE Target Control Support 选择该选项可以在启动时使能目标控制功能(target control support). 选择这一项同时也打开了内核无关传输层(Kernel Independent Transport Layer — KITL). Enable Eboot Space in Memory 选择该选项可以在Config.bib文件中预留内存空间,允许在启动过程中操作系统可以读取boot loader存储的数据. Enable Event Tracking during Boot 选择该选项可以开启事件跟踪子系统(event-tracking subsystem). Enable Full Kernel Mode 选择该选项可使线程运行在内核模式,选择该模式会使系统较脆弱,但是性能会有所提高. Enable Image for Flash 选择该选项可以使编译好的镜像下载后被烧写的到Flash中
Build Options (2) Enable Kernel Debugger Enable KITL Enable Profiling 允许调试器建立宿主机和目标机间的链接和传送调试信息 Enable KITL 要建立宿主机和目标机间的通讯就必须选择该选项,取消该项也会同时取消被选定的“Enable CE Target Control Support ”选项 Enable Profiling 选择该选项可以将Windows CE的有关内核的信息以日志的形式装入平台镜像中 Enable Ship Build 这是一个有条件编译的标志,设置它表示OS会提供详细的调试信息来帮助调试. Flush Events to Release Directory 选择该选项将事件放入release目录,同时开启事件跟踪
平台配置文件 Platform Builder 使用两类配置文件: 原码配置文件 镜像配置文件 Build工具使用原码配置文件去build模块、属性,同时为你的OS镜像build原码 镜像配置文件 Make Binary Image工具调用相应的工具,这些工具使用镜像配置文件来产生OS镜像
原码配置文件 文件类型 描述 Dirs File 描述包含源代码的子目录 Sources File 包含要编译的代码及宏 Makefile File Make file
镜像配置文件 参数视图
配置文件: .BIB 文件 表明应该被包含在镜像中的模块和组件 包含4个部分的文本文件: 文件部分: 为静态数据文件预留的内存 模块部分:指定被装载到内存中的目标模块 ;Name Path Memory Type ----------------------------------------------------- Tahoma.ttf $(_FLATRELEASEDIR)\Tahoma.ttf NK SHU Taskman.exe $(_FLATRELEASEDIR)\Taskman.exe NK
配置文件: .BIB 文件 内存部分 配置部分 定义平台的内存信息 划分物理内存的数据存储和程序存储部分 不是必须的 用来设置属性等 Name Start address Size(bytes) Type ----------------------------------------------- NK 8C800000 00800000 RAMIMAGE RAM 8C050000 007AFFFF RAM
配置文件: .REG文件 定义默认的注册设置 COMMON.REG, IE.REG, WCEAPPS.REG, WCESHELL.REG: 为Windows CE模块定义注册设置 PLATFORM.REG:与平台相关的注册设置,如驱动入口等 PROJECT.REG:定义与你的工程相关的注册设置 [HKEY_LOCAL_MACHINE\init] “Launch10”=“shell.exe” “Launch20”=“device.exe”
配置文件: .DAT文件 定义镜像的文件夹结构 例子: COMMON.DAT, IE.DAT, WCEAPPS.DAT, WCESHELL.DAT PLATFORM.DAT PROJECT.DAT 例子: Root:-Directory(“Program Files”) Directory(“\Program Files”):-Directory(“My Projects”) Root:-Directory(“My Documents”) Directory(“\My Documents”):-File(“MyFile.doc”,“\ Windows\Myfile.doc”)
配置文件 : .DB 文件 定义默认的镜像数据库 COMMON.DB, WCEAPPS.DB, WCESHELL.DB 这些 .DB文件是与Common, Wceapps, and Wceshell模块相关的数据库 PLATFORM.DB 该文件包含特定平台的默认数据库 PROJECT.DB 该文件特定工程的默认数据库
产生镜像 整合release文件夹中的文件来生成Windows CE镜像 过程 整合配置文件: 所有的 .bib 文件到CE.BIB 所有的 .reg 文件到REGINIT.INI 所有的 .dat 文件到INITOBJ.DAT 所有的 .db 文件到INITDB.INI 压缩reginit.ini 到二进制注册文件(DEFAULT.FDF) 由于语言的适配,替换 .exe and .dll中的资源 for language adaptation 生成Windows CE镜像 (NK.BIN)
Build的几个阶段 Sysgen 阶段 Feature Build 阶段 Release Copy阶段 Make Image阶段 当你在IDE的Biuld菜单下选择 Build Platform 命令时,系统创建平台依次经历了以下4个过程: Sysgen 阶段 Feature Build 阶段 Release Copy阶段 Make Image阶段
Sysgen 阶段任务 链接相应的静态库到模块 Make SDK 构建板级支持包 (BSP) 过滤系统头文件,产生只包含为声明被平台导出的函数的头文件. 为系统模块产生输入库 构建板级支持包 (BSP)
System Generation SYSGEN.BAT Complete header and source code files System-specific header files SYSGEN.BAT Complete system libraries Linked libraries Module definitions (.def) Specific .def files Cesysgen.bat
Feature Build 阶段任务 所有的用户属性,包括PB工程文件(.pbp) ,dirs文件,源文件, makefiles (.mak) 被编译和创建
Release Copy 阶段任务 拷贝所有用户生成OS镜像所需的文件到release目录下,在Sysgen阶段生成的模块和文件首先被拷贝,接着是Feature Build阶段生成的模块和文件.
Make Image 阶段任务 Rrelease目录中的文件被整合的二进制镜像文件 Nk.bin中. 这一阶段对应Build菜单下的 Make Image 命令
Step 1. System Generation Build 过程 COMMON DATASYNC DCOM DIRECTX IE RDP SCRIPT SERVERS WCEAPPSFE WCESHELLFE … ..\cesysgen\ddk ..\cesysgen\oak ..\cesysgen\sdk \target, \files Step 1. System Generation Step 2. Build ..\platform\.. \target, \files Step 3. Building the Release Directory %_FLATRELEASEDIR% Step 4. Making an Image NK.BIN
Build 结果 nk.bin : nk.nb0 : Windows CE 二进制镜像数据格式 运行时必须首先装载到内存中. 由数据段和代码段组成 nk.nb0 : 二进制数据文件格式 能够被转载到Flash中 可以以 XIP模式运行
XIP介绍 Execute In Place的简称 程序的执行可以直接在ROM中,而不是必须得先装载到RAM中 被NOR flash类型的闪存支持
如何解决 Build 中的错误 查看 Output 窗口 检查WINCE420 根目录下的 Build.log & Build.err 文件 No enough hard disk space Compile & link error 检查WINCE420 根目录下的 Build.log & Build.err 文件 详细的输出信息 Windows编程经验和知识是你解决问题的关键
解释Build Errors Sysgen阶段的错误 Module build阶段的错误 Caused by missing files, missing configuration of the operating system features, and applications built during the Sysgen phase Module build阶段的错误 Compilation errors or unresolved link errors Building the release directory阶段的错误File copy errors Making an image阶段的错误 Romimage.exe failed in CE.BIB Romimage.exe failed in reginit.ini Warning: Image exceeds
作业 阅读 在线文档“CEPC How-to Topics”和 “Tutorial: Using Platform Builder with a CEPC” ,x86硬件平台上下载、运行自己的一个Windows CE 提示 : 制作wince的启动盘和配置IP地址 用cepc BSP 创建你的WinCE 用你的启动盘启动系统 通过TCP/IP链接、下载
目录 介绍 Platform Builder 平台创建流程 Build系统 定制目录Catalog 用户界面UI 目录(Catalog) and 特性(Feature) 配置平台 平台创建流程 Build系统 定制目录Catalog
应用程序开发回顾 Get platform & SDK from OEMs Export your SDK Coding & Testing Release to Manufacture Export your SDK
平台创建流程 得到特定软件开发板(specified Software Development Board —SDB)的BSP 用Platform Builder定制平台 通过SDB下载、调试和运行平台 为你的平台构建发布版系统
第一步 : 获得 BSP 从哪获得BSP? Microsoft 第三方 OEMs 生成自己的 BSP CEPC Motorola Dragon ball Advantech 7230… 生成自己的 BSP 后面讨论…
安装和使用 BSP 如果BSP是以MSI文件提供,象其它的软件那样安装它 如果BSP是以源文件的形式提供,在PB中添加相应的 .CEC 文件 注意: 你必须首先在PB中安装了相应CPU的支持
演示: 安装和使用 Motorola Dragon Ball MXL BSP
第二步: 定制平台 在Microsoft提供的模板中选择一个,在它的基础上进行修改 从头定制
HLBase and IABase HL 意思headless, 表示该OS没有图形用户界面GUI 如果选择 IABase, OS 包含 GUI
第三步: 通过SDB下载、调试和运行平台 常规步骤: 获得 Eboot or Sboot 配置网络 配置串行调试接口(可选) 配置Platform Builder链接 下载 OS镜像到板子
获得Eboot or Sboot Bootloader通常做为BSP的一部分由 OEMs提供. boot loader的目的是装载OS镜像到内存中,然后跳到OS启动程序 Eboot : Ethernet Bootloader Sboot : Serial Bootloader 通常在release版中被除去
各种Bootloader Flash into flash Rom Use boot floppy disk Use CF card … 唯一的目的: 下载OS镜像
为串口配置网络 只插串口链接线 缺点 : 太慢
为以太网配置网络 用Hub
为以太网配置网络 使用独立的网络链接
配置串行调试接口 插RS232串口适配器到ADS板和你主机上默认的COM口. 选择 Start Menu → Programs→ Accessories → Hyperterminal → Hyperterminal去激活一个Hyperterm窗口
超级终端
配置 PB链接 从Target -> Configure Remote Connection
配置 PB 链接 Eboot会向LAN发送广播包,PB接收和显示设备ID
下载 OS 镜像到板子 在PB中点击Target → Download/Initialize.
在设备的屏幕上你会看到
我们到哪了? Get hardware & BSP from OEMs Need platform customization? Customize your Win CE platform Get platform & SDK from OEMs Export your SDK Coding & Testing Release to Manufacture
目录 介绍 Platform Builder 平台创建流程 Build系统 定制目录Catalog 用户界面UI 目录(Catalog) and 特性(Feature) 配置平台 平台创建流程 Build系统 定制目录Catalog
PB 目录结构 Directory Description Others Run-time files, binary files for building OS image files, registry files, and batch files that are used to add files to an OS image. Platform BSP and Device-specific files and directories. Private Source code for the Windows CE OS. Public Directories for the Windows CE OS configurations. SDK Tools and libraries in the Windows CE SDK that support Platform Builder.
环境变量 %_WINCEROOT% - Windows CE 安装的根目录 通常 为C:\WINCE500 %_PUBLICROOT% - %_WINCEROOT%\PUBLIC %_PLATROOT% - %_WINCEROOT%\Platform 其它 在build窗口的命令提示符中使用‘set’ 可以查看当前的环境变量
Platform目录 包含与特定硬件平台相关的BSP文件 定位在以下目录 %_WINCEROOT%\Platform 包含以下子目录 每一个目录用于描述某一特定Windows CE 平台的应用 每一目录包含一个dirs文件和至少 一个特定BSP的批处理文件 将你与该特定硬件平台相关的文件放入对应目录
Public目录 包含与平台无关的组件和配置设置 定位在以下目录%_WINCEROOT%\Public 包含以下子目录: 模块、组件子目录 Common, Wceshellfe, Wceappsfe, IE, Servers 相关配置子目录 - CEBASE
SDK 目录 定位在以下目录 %_WINCEROOT%\SDK 包含支持Platform Builder的工具 Processor compilers Development tools Miscellaneous utilities
Others 目录 定位在以下目录 %_WINCEROOT%\OTHERS 包括以下子目录: ATL: 包含调试用的 ATL 头文件,库和原码等 DOTNET:包含 .NET 可用的各处理器的二进制文件和portable .NET Compact Framework 文件 MFC: 包含调试用的MFC 头 文件,库和原码等 SAMPLES: 包含 MFC和ATL应用例程 WCETK: 包含 Windows CE Test Kit (CETK) 相关二进制文件
Private 目录 定位在以下目录 %_WINCEROOT%\PRIVATE 在安装的时候必须检查选项,与 Shared Source License 项保持一致 你可以装载你的产品的最新版私人代码 Premium (“Almost everything”) Source 都是可用的 包括的: Kernel GWES components Filesys components
回顾Build的4个步骤 SYSGEN Build BUILDREL Make Image 根据OS设计配置过滤模块和组件 2 1 3 4 SYSGEN 根据OS设计配置过滤模块和组件 Build 使用 DIRS, SOURCES 和 OS 设计工作空间为BSP和应用build原码 BUILDREL 拷贝文件到release目录下 Make Image 用release目录里的文件身成OS实时镜像 1 2 3 4
Build System概述 IDE作为客户端,通过命令行创建 build system. 命令行工具存放在 : %_PUBLICROOT%\COMMON\OAK\MISC
环境变量 重要目录 可选的OS属性 Platform->Setting options %_WINCEROOT% %_PublicRoot% 可选的OS属性 SYSGEN_AYGSHELL SYSGEN_BATTERY SYSGEN_STANDARDSHELL Platform->Setting options IMGAUTOFLUSH WINCESHIP IMGRAM64
原码结构 DIRS SOURCES MakeFile makefile.def
DIRS 文件 DIRS 类似工作空间“Workspace”中包含的工程“projects”列表 文本文件列出了包含其它DIRS or SOURCES文件的目录列表 BUILD.EXE 通过读DIRS文件确定build的内容 例如: DIRS=\ Eboot \ Drivers
SOURCES SOURCES TARGETNAME TARGETTYPE 工程的源文件列表 输出目标名 (非扩展) PROGRAM – (.EXE) Application DYNLINK – (.DLL) Dynamic Link Library LIBRARY – (.LIB) Static library
文件结构 文本文件被包含在makefile.def ,提供给目标机关于build的相关信息 %_MAKEENVROOT% MAKEFILE.INC SOURCES MAKEFILE.DEF Local project folder %_MAKEENVROOT%
有用的命令行工具 Wince.bat Blddemo.bat Cebuild.bat Build.exe Sysgen.bat Buildrel.bat Makeimg.exe
Wince.bat 通过3个输入参数为宿主机准备开发环境 例: wince x86 MYPROJ CEPC %_TGTCPU% %_TGTPROJ% %_TGTPLAT% 例: wince x86 MYPROJ CEPC
BldDemo.bat 用来build 和生成 OS 镜像. 它调用3个工具: Cebuild.bat: Build平台的模块、属性和原码 Buildrel.bat: 为平台拷贝文件到release目录下,它是生成二进制镜像的工具 Makeimg.exe:产生OS镜像
Build.exe 用来构建、创建各种项目 自动监测源文件和头文件的依赖关系 Windows CE Build过程的核心 DIRS文件定义目录结构 自动监测源文件和头文件的依赖关系 Windows CE Build过程的核心 调用NMAKE.EXE 做真正的build DIRS和SOURCES 决定build的内容
如何通过设置命令行来Build环境 设置环境变量 Build OS镜像
示例 set _WINCEROOT=E:\WINCE420 set _PROJECTROOT=E:\GOOD\WINCE420\Emulator set _FLATRELEASEDIR=E:\GOOD\RelDir\EMULATOR_X86Release set _PROJPUBLICROOT=E:\GOOD\WINCE420\public cd %_WINCEROOT%\public\common\oak\misc call wince.bat X86 GOOD EMULATOR set SYSGEN_CURSOR=1 set SYSGEN_CONNMC=1 set SYSGEN_MENU_OVERLAP=1 set SYSGEN_MSIM=1 blddemo –q
目录 介绍 Platform Builder 平台创建流程 Build系统 定制目录Catalog 用户界面UI 目录(Catalog) and 特性(Feature) 配置平台 平台创建流程 Build系统 定制目录Catalog
Windows CE目录 CE目录项的数据库 在树型Catalog view中显示目录项列表 可通过用户或第三方扩展目录 每项都是你所选的实时镜像中模块的组件或子模块 在树型Catalog view中显示目录项列表 允许使用拖拉和删除的方式选择目录中的项用于定制 可通过用户或第三方扩展目录 通过导入 CEC文件向目录中添加项目
CEC 文件 CECInfo 块 ComponentType 块 Implementation 块 BuildMethod 块 Top-level 结构描述. 例, ‘Audio Driver’ 可能就是一个 ComponentType (类似面向对象编程中的一个类) Implementation 块 描述ComponentType的具体实现 (类似面向对象编程中的目标实体) BuildMethod 块 描述项目定位的原码位置
CEC编辑器介绍 CEC编辑器它是Tools菜单下的一个工具项,通过它你可以生成、编辑.cec文件。
定制 CEC文件步骤: 生成目录属性文件 添加一个执行(Implementation) 添加一个Build方法(Method) 添加一个二进制信息(BIB Information) 为目录添加属性
作业 要求:按照学号尾号为索引,使用Windows CE构建下列平台: 0:智能手机 1:数码相机/数码摄像机 2:家用音响 3:手持游戏机(类似于GBA) 4:网络视频电话终端 5:超市付款结算终端 6:ATM自动取款机 7:IPOD MP3 8:空调 9:“小霸王”学习机 提交文档:projectname.pbw, projectname.wce, projectname_setenv.bat与Word文档报告 报告内容:平台名称:选择的组件列表,选择这些组件的功能,选择这些组件的原因。