基于EP9315处理器的嵌入式Windows+CE移植研究_图文

发布于:2021-05-14 23:37:54

西安电子科技大学 硕士学位论文 基于EP9315处理器的嵌入式Windows CE移植研究 姓名:穆东栋 申请学位级别:硕士 专业:通信与信息系统 指导教师:傅丰林 20090101





随着电子信息技术和互联网技术的高速发展,嵌入式系统已经成为当今IT 通信行业的焦点,越来越多的嵌入式系统体现出了网络化、智能化和实时性的特
点,这无疑对嵌入式操作系统提出了更高的要求。Windows CE的出现可以很好

的满足现代化嵌入式系统的这种需要,它具有模块化的设计、优秀的可移植性、
良好的通信能力以及改进的实时性等特点。 本文正是以EP9315处理器为硬件*台,研究Windows CE嵌入式操作系统 的移植开发技术。首先引入了嵌入式系统的一般概念,介绍了嵌入式操作系统的 定义、特点以及它的发展历史。然后描述了Windows CE嵌入式操作系统的核心 特性、-丌发流程和开发工具等内容。接着介绍了EP9315硬件*台的构架,并在 此基础上着重叙述如何将公板参考BSP移植到EP9315硬件*台上,包括Boot Loader的移植、OAL的移植、驱动的丌发以及配置文件的移植等工作。最后介绍 了Windows CE*台的系统定制、内核裁剪以及编译调试等技术。

关键词:EP9315嵌入式Windows CE移植BSP

Abstract
With
the

high-speed

development of the electronic information

technology

and

Intemet technology,the embedded system has already become the focus of
communication industry,and more and more intelligence and
to the

current IT

embedded
has

devices reflect the network, put forward higher CE
cap,

real.time

features,this operating

undoubtedly

requirement

embedded

system.The

appearance of

Windows


meet this kind of the modernized embedded devices’needs well,it has

modular

real?time design,excellent portability,good communication capability and improved
feature. This paper exactly research
on on

porting of

embedded

Windows

CE system based system,including introduced in this

EP93 1 5 processor.First,the general concepts of the

embedded
CE
are

definition,characteristic and developing history of

Windows

paper.Then
tools
are

the key features of Windows CE,development procedure and development this thesis introduces the EP93 I 5 hardware platform

described.Later

architecture,how to port the reference BSP to EP93 1 5 hardware

platform,including

the Boot Loader,OAL,development of drivers and profiles.Finally,the details of how
to

create,customize,build,download,and debug



Windows

CE image to the EP93 1 5

hardware

platform

are

discussed.

Keywords:EP9315

Embedded

Windows

CE

Porting

BSP

创新性声明
本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究
成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。

申请学位论文与资料若有不实之处,本人承担一切相关责任。

本人签名:

同期:丝三艺:三』兰

关于论文使用授权的说明
本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期问论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。(保密的论文 在解密后遵守此规定) 本学位论文属于保密在 年解密后适用本授权书。

导师虢盟
本人签名:

闩飙丝:三艺:三:丝

同期:弓陋

第一章绪论

第一章绪论

1.1嵌入式系统的概述
目前对于嵌入式系统并没有一个统一的概念,根据国际电气和电子工程师协 会(IEEE)的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行 的装置(An
Embedded system is the devices used to control,monitor,or assist the
or

operation ofequipment,machinery

plants)”。通常来说,嵌入式系统是以应用

为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可
靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理 器、外围硬件设备、嵌入式操作系统以及用户应用程序等四个部分组成,用于实 现对其它设备的控制、监视或管理等功能。

由定义中的三个基本要素可以衍生出嵌入式系统的三个基本特点来lJ】:
1.与“嵌入性”的相关特点,由于是嵌入到对象系统中,必须满足对象系统 的环境要求,如物理环境、电气环境和成本要求等。 2.与“专用性”的相关特点,软硬件具有可裁剪性,满足对象系统要求的最 基本软硬件配置等。 3.与“计算机系统”的相关特点,嵌入式系统必须是能满足对象系统控制要 求的计算机系统,且必须配置有与对象系统相适应的接口电路。

1.2嵌入式系统的发展
嵌入式系统诞生于微型机时代,经历了漫长的发展道路,大致可以分为四个 发展阶段f2】: 1.无操作系统时代 嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现, 具有检测、伺服及设备指示等功能。通常用于工控和制导等系统中,一般没有操 作系统,只能通过汇编语言对其进行编程控制,这些装置已初步具备了嵌入式系 统的应用特点。 这些嵌入式系统具有系统功能单一、处理效率较低、存储容量小、用户接口



基y-EP9315处理器的嵌入式Windows CE移植研究

少等特点,但是使用简便、价格低廉,曾在工控领域得到广泛应用。
2.简单操作系统时代 20世纪80年代,随着微电子工艺水*的提高,IC制造商开始把嵌入式应用 中所需要的微处理器、I/O接口、串并口以及存储器等部件统一集成到一个VLSI 中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中的新秀,于 此同时,程序员也开始转向基于一些简单的操作系统来开发嵌入式程序,大大提 高了丌发效率。 这个阶段出现了大量高效可靠、低功耗的嵌入式CPU,各种简单的嵌入式操 作系统也丌始出现并迅速发展,且具备了一定的兼容性和可扩展性。 3.实时操作系统时代 20世纪90年代,在分布式系统、数字化通信和信息家电等巨大需求的引导 下,嵌入式系统进一步飞速发展,嵌入式系统的软件规模也不断扩大,逐渐形成 了实时多任务操作系统,并开始成为嵌入式系统的主流。 嵌入式操作系统的实时性得到改善,能够运行在各种不同类型的处理器上, 具有高度的模块化和扩展性。具备了文件管理、设备管理、多任务以及图形用户 界面等功能,并提供大量的API函数,使软件开发变得简单起来。 4.互联网时代 进入2l世纪后,随着Intemet的发展以及Intemet与信息家电、工控技术的 同益结合,将嵌入式系统应用到各种网络环境中的需求变得越来越多,与Intemet 的结合将嵌入式技术推向一个新的时代。 在现在同益信息化的社会中,各种各样的新型嵌入式系统设备『F在逐渐改变 着人们的生活方式和生产模式。伴随着硬件技术的不断革新,新硬件*台处理能 力的不断增强,硬件成本的不断下降,嵌入式软件技术也逐渐成为产品数字化改 造、智能化增值的关键性所在。

1.3几科,常见的嵌入式操作系统
嵌入式操作系统(Embedded
Operating

System)是嵌入式系统中极为重要的

一部分,通常包括与硬件相关的底层驱动、系统内核、设备驱动接口、通信协议、

图形界面等,是实现系统功能的关键所在。嵌入式操作系统负责嵌入式设备的全
部软硬件资源的分配和调度工作,能够通过装卸某些模块来达到系统所要求的功 能。与通用的操作系统相比,嵌入式操作系统在实时性、硬件的相关性以及应用 的专业性等方面具有较为突出的特点。

第一章绪论



早在上个世纪八十年代起,国际上就有一些11r组织、公司开始进行嵌入式操
作系统的研发,其中涌现出了不少著名的嵌入式系统【3】: 1.Windows
CE

Windows CE是微软公司嵌入式移动计算*台的基础,是一个开放的、可升 级的32位嵌入式操作系统。Windows CE的图形用户界面相当出色,具有可靠性 好、实时性高、内核体积小的特点,被广泛的应用于工业控制、信息家电、移动 通信和汽车电子等各种嵌入式智能设备。 2.VxWorks

VxWorks是WindRiver公司开发的面向嵌入式应用领域的实时多任务操作系
统,它采用微内核结构,具有支持多种处理器、丰富的网络协议以及良好的裁剪 性等特点,但其价格不菲。
3.Palm OS

3Com公司的Palm OS在PDA市场上占有很大的市场份额,它有丌放的操作 系统应用程序接口(API),丌发商可以根据需要自行丌发所需要的应用程序。
4.Embedded Linux

通常我们称应用于嵌入式系统的Linux为Embedded Linux,虽然以往大多数 Linux系统运行在PC*台上,但因其源码开放免费,且具有良好的可扩充性和可 裁剪性,再加上模块与结构化的设计理念,故*年来也渐渐成为可靠的主力嵌入 式操作系统。目前,Linux已被移植到大多数的微处理器硬件*台上,丌发者通 常只需丌发相应的驱动程序和应用程序即可。
5.gC/OS-II

IaC/OS.1l是专为嵌入式'发计的著名丌源实时内核,捌有着高度的可移植性,

可基于不同的硬件架构使用不同的Port,而操作系统本身完全不需要作任何程序
代码的更动,网络上有众多的Port可供免费下载。
6.Symbian

Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资 组建的一个合资公司,专门研发手机操作系统,在智能移动终端上拥有强大的应 用程序以及通信能力。Symbian是一个实时性、多任务的纯32位操作系统,具有 功耗低、内存占用少等特点,可以支持GPRS、蓝牙、SyncML以及3G技术,非 常适合手机等移动设备使用。



基T EP9315处理器的嵌入式Windows CE移植研究

1.4本课题的研究背景和意义
综上所述可以看出,嵌入式技术已经渗透到工业控制、科学研究、军事技术 及消费电子等各个领域,从而对嵌入式操作系统的研究便成为了重中之重。在保 证系统的功能和稳定性的前提下,如何克服硬件的差异来提高操作系统的可移植 性仍然是人们不断探索的目标。本课题币是以上海某厂的“基于EP9315处理器 的Windows CE系统移植和程序开发”项目为研究背景,探索如何在EP9315处理 器(ARM9)上构建和移植Windows CE嵌入式操作系统。本课题的意义在于重 点阐述了Windows CE嵌入式操作系统移植的核心原理,剖析了BSP的代码结构, 指出了Windows CE移植的关键部分以及针对EP9315处理器*台如何具体进行移 植。

1.5本论文主要研究内容
本课题的最终目标是要在基于EP93 1 5处理器的硬件板上完成Windows
CE

嵌入式操作系统的移植丌发,使Windows CE操作系统能够正确的运行起来,方 便以后进一步的程序丌发工作。本论文的具体研究内容如下: 1.嵌入式系统的概念、特性以及发展历史; 2.Windows CE嵌入式操作系统的核心特性和构架: 3.基于EP9315处理器的目标硬件*台介绍; 4.BSP代码移植,包括Boot Loader的移植、OAL的移植、驱动的丌发以及 配置文件的移植; 5.Windows CE内核定制、编译和运行调试。

第二章嵌入式Windows CE操作系统



第二章嵌入式Windows CE操作系统

2.1

Windows CE简介

Windows CE是一个抢占式多任务并具有强大通信能力的32位嵌入式操作系 统,是微软专门为信息设备、移动应用、消费类电子产品以及其它嵌入式应用等 非PC领域而重新设计的操作系统。 同常生活中,人们开始普遍使用手机、PDA和掌上电脑等信息电器来处理各 种重要信息,这一切都似乎是在预示着一场新的革命。个人计算机在占领桌面之 后,继续其小型化和分散化的趋势,使其更广泛地进入人们工作、生活和娱乐的 各个方面。这场革命又被*年来Intemet的迅猛普及所推动,一个网上世界已经 出现,人们想随时随地获取所需信息并保持与他人接触的需求愈发强烈。 早在微软创办之初,比尔?盖茨就曾梦想“每人桌上一台PC,每台PC中运 行微软的软件”,这就是后来著名的“信息随手可得”的梦想。这个梦想在今天己 经变成了现实,微软为PC提供了出色的操作系统*台(如Windows XP)、高效率 的软件丌发工具和功能强大而易用的通用软件,使许多人的工作和生活从计算机 技术中受益无穷。 但是PC的价格、体积以及使用的复杂性使得PC难以被应用到更广泛的领域

中,而早期的手持便携式计算机又缺少合适的操作系统,要么采用经过裁减的PC
机操作系统,这样导致软硬件成本大大上升,要么采用自己研制的操作系统,但 是增加了软件丌发的难度,使得系统的研*饶岩允视κ谐〉谋浠R虼宋⑷ 在向个人桌面和企业管理领域提供了方便易用且功能强大的操作系统之后,又重 新设计了Windows CE,以面向更广大的移动计算、信息家电和手持系统等“非 PC”应用领域。微软希望在这一新的应用领域仍然能够扮演操作系统*台、开发 工具和通用软件供应商的传统角色。 Windows CE从发布到现在己经有多个版本,目前Windows CE应用最广泛的 版本是Windows
CE.NET 6.O。 CE.NET

4.2和Windows CE.NET.5.0版,最新版是Windows



基于EP9315处理器的嵌入式Windows CE移植研究

2.2

Windows CE特点

作为一款优秀的嵌入式操作系统,Windows CE有自己独有的特点【4】。 1.精简的模块化设计 Windows CE是高度模块化的嵌入式操作系统,用户可以使用Platform
Builder CE

工具方便的对内核进行定制裁剪。另外由于内核良好的可裁剪性,Windows 体积也非常小,这样可以充分适应一些硬件资源不足的嵌入式设备。 2.优秀的可移植性

Windows CE支持在不同的CPU硬件*台上运行,包括x86、ARM、MIPS 以及SuperH等主流的CPU构架。Windows CE除了提供对不同处理器的支持外, 还通过OAL移植来实现对不同硬件设备的兼容,丌发者可以针对具体的硬件设 备修改OAL代码,实现Windows CE对目标硬件*台的支持。 3.良好的通信能力 Windows CE的网络模块提供了高效的网络应用*台,不但支持传统的有线 网络连接,还支持各种无线网络标准,包括蓝牙、红外以及802.11等。通过Windows CE系统提供的API函数接口,用户可以方便的进行各种网络应用程序的丌发。 4.改进的实时性能 实时性是指能够在限定的时间内完成规定的任务,并对外部的异步事件作出 反应的能力。Windows CE增强了系统的实时性能,提供了更完善的中断处理机

制和线程优先级机制,例如允许中断嵌套,允许更高优先级别的中断首先得到响
应等等,这些都使得Windows CE适合于对系统实时性能要求较高的场合。 5.强大的丌发工具

微软公司提供了Platform Builder集成开发环境用来定制丌发Windows CE操
作系统,它运行在桌面Windows环境下。开发者可以通过PlatfoITll Builder方便 的实现Windows CE系统移植、功能模块裁减和驱动程序丌发等工作。另外用户 也可以使用eMbedded
Visual

C++和Visual Studio.NET工具来为Windows CE*台

丌发基于Win32 API、MFC或.NET Compact Framework的应用程序,这都使得熟 悉桌面Windows应用程序的丌发人员可以较快的进入开发状念。

第二章嵌入式Windows CE操作系统



2.3

Windows CE核心特性

2.3.1

系统构架 Windows CE操作系统是一款典型的微内核操作系统,在内核中仅仅实现进

程、线程、调度及内存管理等最基本的功能,而把图形系统、文件系统及设备驱

动程序等都作为单独的用户进程来实现,这样增加了系统的稳定性和灵活性。
Windows CE被设计成一种分层结构,大致可以分为四个层次,如图2.1所示。 自下而上依次是:硬件层、OEM层、操作系统层和应用程序层。每一层分别由不 同的模块组成,每个模块又由不同的组件构成。这种层次性的结构将硬件*台、

操作系统以及应用程序分隔开,以便于实现Windows CE操作系统的移植,同时
也有利于开发人员的分工合作。
第三方应用程序 Internet客户端
Windows

用户界面 CE应用程序

应用和服务
Core DLL

对象存储I


多媒体I 内核

Gre.s

f设备管弹器f f网络

oEM抽蒙层

髓整鍪羰;骂辫雾篓篓篓嚣!辇g羹羹墓冀.嬲l雾塑霪露露躺糍嚣㈣≈鬻罐搿雾弱
图2.1 Windows CE体系结构

f弓I导程序I

|配置文件l



驱动程序



1.硬件层 硬件层是运行Windows CE操作系统必不可少的物理载体,它通常包括处理 器、存储器、I/O端口以及其它扩展外设等。 2.OEM层 OEM层是一套硬件相关的代码,逻辑上位于硬件层和Windows CE操作系统 之间,但物理上属于内核代码的~部分。OEM层的主要作用是把具体的硬件抽象 出一个统一的接口,然后向Windows CE操作系统内核提供这些接口的调用。OEM 层是Windows CE移植的关键所在,它逻辑上主要由下列模块组成:
(1)

OEM抽象层(OEM Abstraction Layer,OAL)

基‘y-EP9315处理器的嵌入式Windows CE移植研究

OEM抽象层是整个OEM层的主体,包含了高度硬件相关的代码,主要负责
Windows CE内核与硬件的通信,例如硬件*台的初始化和处理中断等。
(2)

引导程序(Boot

Loader)

引导程序是硬件*台最初执行的一段代码,其主要任务是初始化硬件,然后
将Windows CE操作系统内核映像加载到内存并执行。Windows CE下自带的一个 引导程序是Eboot。
(3)

配置文件

配置文件本质上是一些包含配置信息的特殊格式的文本文件,用于Windows CE操作系统的编译构建等。这些配置文件根据具体功能可分为源码配置文件和
二进制映像配置文件。
(4)

驱动程序

驱动程序是对硬件或虚拟设备的一个软件抽象,是应用程序和操作系统对外 部设备或虚拟设备通信的桥梁。常见的物理设备有网卡、计时器、串并口等,而 文件系统则属于虚拟设备。Windows CE下的设备驱动既要实现规定的驱动接口,

将设备的功能呈现给应用程序或操作系统,也要利用操作系统提供的服务,完成
自身的加载、调度和卸载工作。值得注意的是Windows CE下的驱动程序通常被 设计运行在用户模式而非内核模式,且驱动程序模型也相对简单。 OEM层的代码物理上主要由CSP(Chip
Support Support

Package)和BSP(Board

Package)组成,其中CSP支持不同的CPU体系结构,而BSP支持不同

的板级结构。BSP又称为板级支持包,由引导程序、OAL和驱动程序代码组成, Windows CE的移植几乎都是针对BSP的移植。 3.操作系统层 操作系统层主要实现了进程和线程管理、调度、内存管理、文件系统及设备 管理等功能,同时为OEM层和上层的应用程序提供接口与服务。由于Windows 是一个微内核操作系统,所以它的基本功能被放在多个独立的进程罩面实现。 4.应用程序层 应用程序层位于Windows CE层次结构的最顶层,它由操作系统提供的Win32 API构建的应用程序组成,这些应用程序为基于Windows CE的设备提供增值服 务和功能。应用程序主要包括两部分:一部分是Windows CE本身提供的应用程 序,另一部分是由用户根据自身设备需要丌发的应用程序。
CE

2.3.2

内存管理 Windows CE是一个保护模式的32位操作系统,支持一个32位线性访问的

地址空间。虽然基于Windows CE设备的可用内存通常都很小,但是Windows CE

第二章嵌入式Windows CE操作系统



得内存管理却十分完善,它几乎实现了Windows XP等桌面操作系统下所有可用
的Win32内存管理API。 Windows CE采用层次化的结构进行内存管理,如图2.2所示。
应用程序

一飞厂一一1
l i
c/c++运行时库

鬟冀鼍?登鬈薯譬1

翼?零鬻鼍 霹j l




醚麓季誉孽魄蠢潮辫蓬嚣囊;。描

麟◇旋黪繇戮渤辫黝≮黪缀鬻懑篓鬈燃,路囊
虚拟内存

逻辑内存(堆、栈……)




鬻霾辫薅黪麓氛掰臻瓣滕辫灞溺鬻簌瓣麓麓麓黼鬻鬻辫戮激籀磊i
弋。7



物理内存

图2.2

Windows CE内存管理层次结构图

自下而上可分为物理内存、虚拟内存、逻辑内存和C/C++运行时库。内存管 理的每一层都会向外提供一些编程接口函数,这些编程接口可以被上一层使用, 也可直接被应用程序使用【51。 1.物理内存 在Windows CE中,RAM、ROM和Flash Memory都被看成物理内存,而不 是传统意义上的只有RAM才被认为是物理内存。RAM为操作系统和应用程序提 供运行的缓存空间,类似传统意义的物理内存。ROM通常用来存储程序,可以 实现断电永久保存,功能类似一个只读的小硬盘。目fj{『已经很少使用ROM了, 一般用Flash Memory来代替ROM,它最大的优点就是可方便的擦写。值得注意 的是Windows CE目前最大只支持512 MB的物理内存,但这对于绝大部分嵌入 式设备来说足够了。 2。虚拟内存 Windows CE是一个保护模式的操作系统,因此程序的访问只能使用虚拟内 存空间。Windows CE的虚拟寻址能力可达4GB,所有的进程共享一个4GB的地 址空间。管理虚拟内存的硬件是内存管理单元(Memory Management Unit,MMU), 它负责虚拟地址空间到物理地址空间之间的映射,并提供一定的内存保护。 Windows CE的4GB虚拟地址空间又被分为两个区域,低地址2GB区域是用 户空间,供应用程序使用;高地址2GB区域属于内核空间,供Windows CE操作

lo

基于EP9315处理器的嵌入式Windows CE移植研究

系统内核本身使用,如图2.3所示。
内核空阃
?.4
‘●,

用户空闻 GB虚拟地址空问

内核使用的数据结构
Slot 33~63

2GB

对象彳『储 内存映射文件

内核 空问
NK.EXE

Slot2~23进程 静态映射 (七缓冲)
2GB

JlJ户 空问 SIotl:XIP

DLL代码

静态映射 (缓冲)

Slot0:当前进程

幽2.3

Windows CE虚拟地址分布

2.3.3

存储管理和文件系统 Windows CE存储管理和文件系统都是在Filesys.exe进程中实现的,通常将

它称为文件管理器。文件管理器实现了对象存储和存储管理,并将所有的文件系
统归到一个根目录“\"下。Windows CE文件系统结构如图2.4所示。

图2.4

Windows CE文什系统结构

对象存储是一个被Filesys.exe维护的内存堆,如果有后备电源,它可以为应
用程序提供永久存储。一个或多个RAM存储器芯片构成了物理的对象存储。从

逻辑上讲,对象存储分为RAM文件系统、注册表和CE数据库三部分,但它们

第二_:章嵌入式Windows CE操作系统 物理上却并不必须存在于对象存储中。 Windows CE操作系统使用对象存储完成如下任务: ?管理内存堆栈;

i1

?按要求压缩或解压文件:
●无缝地集成基于ROM和RAM的数据。 在Windows CE.NET 5.0中,对象存储的大小被限制为256M字节,单个对象 存储的文件大小限制为32M字节。用户可以调用SetSystemMemoryDivision函数 来设置对象存储的大小,或者也可以在Windows CE的控制面板中修改对象存储 和应用程序内存的分配比例。 Windows CE提供以下三种类型的文件系统: ●RAM文件系统; ●ROM文件系统; ?可安装的文件系统。 Windows CE中使用的文件系统类似Linux中的根文件系统,它的根目录为 “\",其它所有的文件系统和目录都被挂载到根目录下,此外Windows CE没有 当前目录的概念,所有的对象都必须使用绝对路径来访问。 RAM文件系统通常直接被挂载到根目录下,ROM文件系统通常被挂载到 “\windows”目录。另外,Windows CE还支持一个可安装文件系统(如FAT文

件系统),它可以提供对如PC卡等外部存储设备的访问。不论采用什么类型的文
件系统,都可以功过Windows CE提供的API函数对其进行访问。 存储管理器的主要功能是管理所有的外部存储设备,如CF卡、硬盘以及 CD.ROM等。逻辑上它包含块设备驱动管理器、分区管理器和文件系统驱动管理 器,所有的文件、数据和卷标的操作都由存储管理器负责,因此存储管理器对外 部存储设备的读写访问起到至关重要的作用。

2.3.4

系统调度 Windows CE是一个基于优先级的抢占式多任务操作系统。在Windows CE操

作系统中,每一个运行着的应用程序都是一个进程,而每一个进程中又包含一个 或多个线程。 在Windows CE中,进程本身不参加系统的调度,也没有优先级和上下文。 真正参加系统调度的是线程,每个线程在创建的时候都会创建一个主线程作为该 进程默认的执行体,进程只是线程的容器。Windows CE最多只支持32个进程同 时运行,所以在编写应用程序的时候,如果要同时处理多个任务,最好尽量选择 多线程而不是多进程。Windows CE中每个线程都有一个优先级,调度系统根据

12

基y-EP9315处理器的嵌入式Windows CE移植研究

线程的优先级来进行。Windows CE的优先级映射如表2.1所示。
表2.1 优先级
O~19
20 99

Windows CE的优先级映射 组件

高实时性组件 图形苦 电源管理恢复线程
USB OHCI

100~108 109~129
130 13l 132 145 148 150 248 249 250 25l 252,~255

UHCI串口

IrDA、NDIS、触摸屏
KITL

VMini
CxPort

PS2键盘
1RComm TAPI

电源管理 卢音、鼠标、PnP、Power

肠veAPI
一般frill: 廊川样序

Windows CE调度系统的特点如下:


具有高优先级的线程如果处于就绪状态,则总是会被调度系统选中运行:

?如果系统中存在多个优先级相同的就绪线程,这些线程以时间片轮转算 法调度;


如果线程的时间片大小被设置为0,那么它会一直占有处理器运行,直到

线程结束或者进入阻塞、挂起以及睡眠状态;


调度系统不对线程饥饿进行自动检测。

Windows CE允许线程运行在核心念或用户念下,所谓核心态即线程可以访 问高2GB地址空间而不会导致访问异常。通常操作系统线程和ISR运行在核心念, 应用程序和设备驱动程序的IST运行在用户态。

第二章嵌入式Windows CE操作系统

13

2.4

Windows CE的开发

2.4.1

Windows CE开发步骤 与通常的PC机软件丌发有所不同,基于Windows CE操作系统的嵌入式开

发一般要同时兼顾软件和硬件两方面的内容,下面是Windows CE嵌入式丌发的 ~般步骤: 1.设计目标板硬件并调试通过; 2.为目标板建立BSP; 3.在此BSP包的基础上构建一个基本的Windows CE操作系统映像,使其 能够下载到目标板运行起来; 4.为目标板开发驱动程序并添加到BSP; 5.进一步裁剪定制Windows CE操作系统映像; 6.将Windows CE映像下载到目标板,并使用Platform Builder的IDE环境 调试映像直NI NON通过; 7.导出定制好的Windows CE映像的SDK供开发应用程序使用。

2.4.2

Windows CE开发工具介绍 在Windows CE的丌发过程中,有两个重要的方面,一是操作系统的定制,

二是应用程序的丌发。微软分别提供了Platfo舯Builder和eMbedded
的指导。
Platfornl

Visual C++

等工具来完成这两项工作,而且其强大的帮助系统MSDN也为丌发者提供了有力

Builder(一般简称PB)是微软为创建Windows CE嵌入式操作系统

所设计的一个集成丌发环境,它集成了设计、产生、构建和调试Windows CE操 作系统设计所需要的所有丌发工具,Platform Builder主要包括以下内容: 1.创建*台向导:用于创建一个新的*台; 2.创建BSP向导:用于创建一个新的BSP(板级支持包); 3.导出SDK向导:用于导出一个定制的软件丌发工具包(SDK); 4.Catalog窗口:列出了可以用来定制一个*台的操作系统特性;

5.内核调试器:用于调试一个定制的操作系统镜像; 6.应用程序调试器:用于在一个定制的操作系统上调试应用程序;
7.模拟器工具:允许用户在丌发工作区上测试*台或应用程序; 8.远程调试工具:用于在一个目标设备上调试:

14

基t-EP9315处理器的嵌入式Windows CE移植研究

9.Windows

CE Test

Kit:用于驱动程序的测试。

本论文所介绍Windows CE操作系统的移植开发就是使用Platform Builder工 具来进行的。

第三章EP9315嵌入式硬件*台

15

第三章EP9315嵌入式硬件*台

3.1

ARM处理器

ARM(Advanced RISC Machines)既可以认为是一个公司的名字,也可以认

为是一类微处理器的通称,还可以认为是一种技术的名字。 ‘目前采用ARM技术知识产权(IP)的微处理器,即我们通常所说的ARM微 处理器,已遍及工业控制、消费类电子产品和通信网络系统等各个领域。据了解, 目Ij{『ARM占据着移动装置处理器市场98%的市场份额,ARM技术『F在逐步渗入 到人们生活的各个方面。

3.1.1

ARM处理器特点 采用RISC架构的ARM微处理器一般具有如下特点: ●体积小、低功耗、低成本、高性能; ●支持Thumb/ARM双指令集,能很好的兼容8/16位器件: ?大量使用寄存器,指令执行速度更快; ?大部分数据操作都在寄存器中完成;
?

寻址方式灵活简单,执行效率高;

?指令长度固定。

3.1.2

ARM处理器寄存器结构

ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括
3 1个通用寄存器和6个状念寄存器。这些32位的寄存器用以标识CPU的工作状

态及程序的运行状态。 ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组 相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15 个通用寄存器(R0"--R14)、一到两个状态寄存器和程序计数器。在所有的寄存器 中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些则是在不同的

处理器模式下有不同的物理寄存器。

16

基丁.EP9315处理器的嵌入式Windows CE移植研究

3.1.3

ARM微处理器指令结构 ARM微处理器在较新的体系结构中支持两种指令集,即ARM和Thumb指

令集。其中,ARM指令长度为32位,Thumb指令长度为16位。Thumb指令集
为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%"-40%

以上的存储空问,且同时具备32位代码的所有优点。

3.1.4

ARM 9微处理器系列

ARM 9微处理器系列在高性能和低功耗特性方面提供良好的性能,具有以下

特点:

?5级整数流水线,指令执行效率更高;
?提供1.1MIPS/MHz的哈佛结构; ●支持32位ARM指令集和16位Thumb指令集; ?支持32位的高速AMBA总线接口; ?全性能的MMU,支持Windows CE、Linux等多种主流嵌入式操作系统; ?MPU支持实时操作系统; ?支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
ARM 9微处理器系列包含ARM920T、ARM922T和ARM940T等类型,分别

适用于不同的应用场合。

3.1.5

ARM处理器应用领域 ●工业控制领域; ●无线通讯领域; ?网络应用: ?消费类电子产品; ?信息安全产品。

3.2

EP9315处理器

EP9315是Cirrus Logic公司在2005年推出的一款基于ARM920T内核的旗舰 产品,是目前集成度最高的ARM处理器之一。

第三章EP9315嵌入式硬件*台

17

3.2.1

EP9315处理器主要特性
EP93 1 5的主要特性概述如下16】:

?200MHz的ARM920T内核,100MHz的系统总线频率,16KB数据和指令 Cache,内嵌MMU,支持Linux、Windows CE等嵌入式操作系统; ?自带MaverickCrunch"rM数学引擎,支持浮点、整型和信号处理指令,并针 对数字音频的压缩与解压算法进行了优化; ?自带MaverickKeyxM硬件编程ID,可用于数字版权管理(DRM)和设计 知识产权的保护; ?丰富的集成外围接口和片内功能,如多达4组的32位SDRAM接口,32/16/8 位SRAM/FLAsH/ROM接口,3路USB2.0全速(12Mbps)接121等。

3.2.2

EP9315处理器内部结构 EP9315的内部结构如图3.1所示。

图3.1

EP9315的内部结构

3.2.3

EP93

15处理器应用领域

作为一款高集成度和片内资源丰富的ARM9嵌入式微处理器,EP9315适用 于如下领域: ◆商用与家用的瘦客户端计算机; ●网络收音机; ?网络访问设备;

?工业计算机;

18

基-r EP9315处理器的嵌入式Windows CE移植研究

POS终端; 专业智能终端; 测试与测量设备; 工业手持设备; 医疗设备; 其它嵌入式应用领域。

3.3

EP9315硬件*台介绍

3.3.1

硬件系统结构 本课题在设计硬件系统的时候,根据合同指标要求和使用要求,考虑到便于

设计调试、生产与维修,提高设备的可靠性和可扩充性,采用模块化设计。硬件 系统的逻辑结构如图3.2所示。

图3.2

EP9315硬什系统结构

硬件核心系统由EP9315处理器、两片64M的SDRAM和一片64M的Nor Flash组成,可外接USB输入设备和LCD显示器。系统的主要功能由8255、82C54、 ADC以及DAC等设备实现,还支持IIC、以太网以及RS一232通信协议接口。

3.3.2

硬件资源分配 设备的物理地址是嵌入式操作系统移植和丌发中的一个重要的参考资料,操

作系统的移植必须进行的一步工作就是修改设备的物理地址定义:本项目在设计 EP9315目标板时,设置ASD0 PIN=I,因此系统硬件资源内存地址分配如表3.1

第三章EP9315嵌入式硬件*台

19

所示。
表3.1
Address Range 0xF000 0000————0xFFFF FFFF OxE000 0000————巾xEFFF FFFF 0xD000 0000——_0xDFFF FFFF OxC000 nCSO nSDCE2 nSDCEl nSDCEO NotUsed APB Reserved AHB

目标板内存地址分配
Sync Memory Boot

000仔一0xCFFF

FFFF

0x9000 0000——田xBFFF FFFF 0x8080 000仔——_ox8FFF FFFF Ox80 l 0 000兮——田x807F FFFF 0x8000 000p——勺x800F FFFF Ox7000 0000——-0x7FFF FFFF Ox6000 0000——由x6FFF FFFF Ox5000

Reserved(nCS7)
FLASH(nCS6) PCMClA(Slot 1) PCMCIA(Slot 2) PIO/AD/DA/8255/8254(nCS3)

0000—一Ox5FFF FFFF

0x4000 000仔———0x4FFF FFFF Ox3000 000◇——叼x3FFF FFFF Ox2000 0000————Ox2FFF FFFF 0x 1 000 000◇——_ox l FFF FFFF 0x000 l 000伊——巾x0FFF FFFF

Reserved(nCS2)
Reserved(nCS 1)

SDRAM(nSDCE3)

第四章Windows CE嵌入式操作系统移植

2I

第四章Windows CE嵌入式操作系统移植

4.1

Windows CE移植的核心原理

Windows CE的移植过程主要就是针对不同的CPU构架和不同的目标板硬件 环境建立相应的BSP的过程,本节主要介绍的就是Windows CE操作系统中BSP 的概念、结构以及移植开发流程。

4.1.1

BSP的概念
BSP(board support

package)即板级支持包,是介于主板硬件和驱动程序之

间的一层代码,也可以认为它是操作系统的一部分。其主要功能是为上层的操作 系统内核以及驱动程序提供访问硬件设备的函数接口,使之能够更好的运行在硬 件环境上。 为什么要有BSP?因为我们知道,嵌入式操作系统通常要支持多种CPU体系 结构,而不同CPU体系结构硬件*台之间的差异通常较大,把操作系统与硬件交 互的接口抽象出来,作为单独的一层函数,就可以屏蔽底层硬件的差异,操作系 统访问硬件时只需访问这一层抽象函数接口就可以了。如果要移植到不同的硬件 *台工作,只需重写这部分抽象接口函数,这样可以简化嵌入式操作系统的移植 工作。 对于BSP有如下两个特点: 1.BSP与特定的操作系统相关 不同的操作系统对应于不同定义形式的BSP,例如VxWorks操作系统的BSP 和Windows CE的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和 接口定义是完全不同的,所以编写BSP一定要按照该系统BSP的定义形式来写。 2.BSP与特定的硬件环境相关 顾名思义,BSP提供的是板级的支持,对应的是某块具体的丌发板,而不是 某款CPU或者是某类体系构架。BSP不仅包括了硬件抽象层,还包括了这个丌发 板所有的驱动程序,因此不同的丌发板一般是不能共用同一个BSP的。

基y-EP9315处理器的嵌入式Windows CE移植研究

4.1.2

BSP的结构

Windows CE操作系统的BSP主要由4部分构成:引导程序、oEM抽象层、 配置文件和设备驱动程序。 引导程序是在硬件丌发板上最初执行的一段代码,它的主要功能是初始化硬 件,加载操作系统映像到内存,然后跳转到操作系统内核代码去执行。引导程序 可以通过不同的方法获得操作系统映像,既可以从串口、USB以及以太网等外部 接口下载,也可以从本地存储设备如Flash中读取。可以根据具体要求灵活设置, 一般来说调试阶段选择从外部接口下载映像,最终发布时选择将映像烧写到本地 Flash中来启动。Windows CE自带了一个引导程序框架是Eboot(Ethemet Boot), 而且通常也是只在系统丌发调试时使用,最终产品中一般不包含Eboot。 OEM抽象层(OAL)也是操作系统内核抽象出来的与硬件交互的接口,其

实现代码通常是与硬件高度相关的。OAL主要负责Windows CE内核与硬件的通
信。当引导程序引导内核映像结束后,由OAL负责硬件*台初始化、中断服务

启动、实时钟配置以及内核性能检测等工作。OAL代码在物理上属于BSP,但经
过编译链接后,将成为Windows CE内核的一部分。

配置文件是一些包含配置信息的特定格式的文本文件,这些配置信息通常与
操作系统映像或源码有关,告诉Platform Builder编译系统如何配置最终的操作系 统映像文件,或如何编译某些源码。BSP中的配置文件包括二进制映像构建器文 件(BIB)、注册表文件(REG)、文件系统文件(DAT)和数据库文件(DB),

这些配置文件告诉Platfo舯Builder中的Make Image工具如何生成操作系统映像;
配置文件还包括Sources和DIRS文件,它们告诉构建系统如何编译链接源代码; 最后,还有CEC配置文件,它负责BSP与Platfonn Builder之间的集成。 设备驱动程序是BSP相对独立的一个重点,对于一个特定的BSP,其中应该 包含所对应的丌发板的所有外设驱动程序,这些驱动程序通常要根据具体的硬件 手册由开发者自行编写。 BSP代码包一般位于Windows CE根目录的Platform文件央下,Platfo锄文 件央中除了Common文件央外的每个文件央都是一个板级支持包。Windows
CE

自带了CEPC、Emulator和SMDK2410等BSP,其中每个BSP文件夹的主要内容 见.表4.1。

第四章Windows CE嵌入式操作系统移植 表4.1 文件夹 BSP目录结构 说明 CESYSGEN文件夹只由一个makefile文件组成,该makefile文件用来包 含所有*台共享的CESYSGEN文件夹
FlLES

CESYSGEN

BSP的配置文件
COMMoN
Bootloader Drivers

放置Boot loader和OAL共川的源文件 放置引导程序 特定硬什*台所有的驱动程序代码 放置*台相关的头文件,如CPU寄存器地址和所有外没 的地址等

SRC

INC

Kernel

放置实现OAL所有功能的代码

4。1.3

BSP的移植丌发流程 编写BSP是一项复杂的工作,要涉及很多系统底层的编程技巧,同时会消耗

较多的人月数。通常我们会选择一个与目标板环境相似的BSP来移植而不是重新 丌发BSP,本课题采用Cirrus Logic公司提供的EP9315公板的BSP为参考BSP。 此外Platform Builder集成丌发环境自带了一些BSP供参考,如CEPC、GEODE

和SMDK2410等等,在Platform目录下可以找到它们,Platform Builder工具的帮
助文档中也对这些BSP做了详细的介绍。 开发BSP的一般流程如图4.1所示。

J歼发弓t导程序

图4.I

BSP开发流程

硬件设计部分不是本论文的重点将不在本文介绍,接下来逐一介绍的是BSP 移植丌发的核心部分,即Bootloader、OAL、驱动程序以及配置文件的移植丌发。

基于EP9315处理器的嵌入式Windows CE移植研究

4.2 Boot

Loader移植

Boot

Loader的移植丌发是BSP移植的重要环节之一,本节主要介绍Boot

Loader概念、构架以及配置等,并在此基础上介绍针对EP9315目标板做了哪些 具体移植工作。

4.2.1

Boot

Loader简介

对于大部分嵌入式系统来说,Boot Loader是在操作系统内核运行前所执行的

第一段代码。通过这段小程序,可以初始化硬件设备、建立嵌入式系统的内存空
间映射,从而将系统的软硬件环境带入到一个合适的状念,以便操作系统内核『F 确的运行。由于这个功能,Boot Loader通常位于目标板的非易失存储设备上,例 如Flash等,并且在系统加电后就自动运行。通常使用仿真器通过JTAG接口把
Boot

Loader烧写到目标板上。
Boot

Loader是管理目标板启动过程的程序,因此大多数的Boot Loader都具

有以下两种不同的操作模式。 1.启动加载模式 这种模式是Boot Loader的正常工作模式,Boot Loader从存储介质中将操作 系统映像加载到RAM罩,并从RAM启动操作系统映像。 2.下载模式
Boot

Loader从丌发主机下载操作系统映像到目标板的RAM,然后再将内核

映像写入目标设备的Flash等存储设备中,或者直接在RAM启动内核映像。为了

实现下载模式,目标板要与丌发主机之fnJ建立某种连接,如串口、USB或以太网
等,Windows CE自带的Eboot就是通过以太网下载操作系统映像并执行启动的。
Boot

Loader除了上诉的功能外,丌发者还可以添加更多的功能,比如Flash

的分区管理、多系统的启动管理等。需要说明的是Boot Loader通常只在系统调 试阶段使用,正式发布时可以去掉Boot Loader以节约存储空间。

4.2.2

Boot

Loader源码构架

一个典型的Windows CE操作系统Boot Loader是由Blcommon、OEM代码、 Eboot和网络驱动程序组成,如图4.2所示。

第四章Windows CE嵌入式操作系统移植

图4.2

Boot

Loader源码构架

上面的几部分中,除了OEM代码需要用户自己编写外,其他几部分代码都 是由Windows CE本身提供的,Windows CE提供了这几部分代码的源码以及二进 制lib库文件。 Blcommon库实现了通用的Boot Loader框架。其主要功能有重定位Boot Loader在RAM中的位置、解码bin文件的内容、检验校正以及跟踪加载过程等。 Bleommon代码库一般放在“%WINCEROOT%lWublic\Common\OAK\Drivers\ EthdbgkBlcommon”目录下。 OEM代码是与设备初始化及硬件扩展有关的代码,需要丌发者根据自己的目 标硬件来编写或修改,其中设备初始化代码可以由Boot Loader与OAL共享。在 Windows CE中,Boot Loader的OEM代码在“%WINCEROOT%kPlatform\
<Hardware Platform

Name>\SrckBootLoader\Eboot”目录下。

Eboot库实现了以太网操作的相关函数,提供了DHCP、TFTP和UDP网络 服务。其中DHCP用于动态配置目标硬件的IP地址,TFTP用于从丌发主机的
Platform

Builder下载Windows CE操作系统映像,UDP用于从目标硬件到丌发

主机的网络通信。Eboot代码库一般被放在“%w烈CERoOT%\Public\Common\
OAK\【)rivers\Ethdbg\Eboot”目录下。 存储管理辅助Boot Loader进行存储设备的分区、读写等工作。Bootpart代 码与底层的Flash存储器访问代码一起工作,用于在同一个Flash存储器上创建 BinFS、Boot以及其它文件系统的分区。其中BinFS分区用于存储bin映像文件, Boot分区用于存储引导参数。存储管理代码库位于“%WINCEROOT%\Public\ Common\OAK\Drivers\Ethdbg\Bootpart”目录下。 EDBG驱动封装了许多常见的以太网卡的驱动程序代码,并为Boot 和操作系统访问提供了通用接口。Boot 操作系统映像的下载,Windows
Loader CE

Loader利用这些接口实现Windows

CE操作系统则利用这些接口实现了与Platform

Builder的KITL连接。EDBG代码库位于“%wINcERooT%\Public\Common\

基于EP9315处理器的嵌入式Windows CE移植研究

OAK、LDriverskEthdbg"目录下。 以上需要注意的一点是Boot Loader中使用的以太网和Flash设备驱动与在 Windows CE操作系统中使用的驱动接口是不同的,所以不能够通用。

4.2.3

EP9315处理器Boot ROM介绍 EP93XX系列嵌入式微处理器都设计了片内的Boot ROM,Boot ROM是一个

挂接在AHB上的16KB掩膜ROM,该ROM包括三个代码区,其中低8KB为系 统的启动代码,随后4KB为第一安全代码块,最后4KB为第二安全代码块。如 果系统以非安全模式启动,则仅访问低8KB代码,当系统以安全模式启动时,需 要访问其中一个安全代码块【7】。 当系统复位时,ARM920T从O地址丌始执行代码,EP93XX系列微处理器可 以通过硬件选择,将不同的启动设备映射到O地址。当选择从内部启动时,Boot ROM被映射到0地址,处理器就开始执行Boot ROM中固化的代码,代码执行完 毕以后,则将系统的片外存储器映射到0地址。 EP93XX系列的Boot ROM地址固定为0x8009 0000,当选择系统从内部启动 时,Boot ROM同时被映射到O地址。 EP93XX系列微处理器Boot ROM的启动流程如图4.3所示。

第四章Windows CE嵌入式操作系统移植

图4.3

Boot

ROM启动流程

4.2.4

Boot

Loader配置

因为Romlmage.exe工具在打包Boot Loader时会根据配置文件Eboot.bib来 对映像做一些特殊处理,因此还需要根据EP9315目标板移植Eboot.bib配置文件。 下面是针对本目标板所修改后的配置文件。
MEMORY




Name

Start

Size

Type

………

………一

………

~……一

;Driver global


area

must be the same address

as

config.bib

DRV—GLB


00008000

0000 1 000

RESERVED

;C¥8950 Frame buffers.

28

基T-EP9315处理器的嵌入式Windows CE移植研究



C¥8950


000 1 0000

00030000

l也SERVED

;Use the Ethernet Debug buffers for the RAMIMAGE and RAM.


EBOOT

00040000 00080000

00040000 00040000

RAMIMAGE RAM

RAM


;Reserved for future


use

of



startup

screen.

FRAMEBUF 000COooO

00 l 40000

RESERVED

CONFIG

COMPRESSIoN=OFF
PROFILE=OFF KERNELFlXUPS=OFF

ROMSTART=00040000 ROMWIDTH--32 ROMSlZE=20000

MUDULES
;Name Path

Memory Type
EBOOT

nk.exe¥(JARGETPLATROOT)\target\¥(_TGTCPU)\¥(WINCEDEBUG)\eboot.exe

其中MEMORY段定义了目标设备上的内存使用情况,每行的4个数据项分 别表示名称、起始地址、长度和类型。本目标板的SDRAM在物理地址0x0000 0000 处,其中地址0x0004
0000"--0x0008

0000范幽配置为Eboot的RAMIMAGE区域,

Eboot映像被加载到此区域,地址0x0008 0000~0x000C 0000范围为Eboot可以 使用的RAM区域。 CONFIG段主要告知打包工具一些ROM信息和配置信息,用于打包工具对 可执行代码段进行重定位等处理,使它可以正确的在ROM上运行。 MODULES段指明了要打包哪些文件到映像中。对于Eboot而言,只有 Eboot.exe一项,且它在映像中的名字一定要命名为nk.exe,否则Romlmage.exe 无法识别此项。

第四章Windows CE嵌入式操作系统移植

4.3

OAL移植

4.3.1

OAL功能框架 OAL逻辑上位于Windows CE操作系统内核和硬件*台之间,但从物理上讲

OAL的代码属于Windows CE操作系统内核的一部分。在构建过程中,OAL代码 被构建系统编译成lib库文件,然后与其它的一些库进行统一的链接,最终形成 了Windows CE操作系统内核二进制可执行文件nk.exc。 在Windows
CE.NET

5.0中引入一个产品质量级的OEM适配层(The

Production.Quality OEM Adaptation Layer,PQOAL)概念,它通过使用支持代码

重用的代码库和目录结构、中心化的配置文件和对于整个CPU家族一致的架构和
硬件*台,进一步加强了OAL的组件化,从而进一步简化和缩短了OAL的丌发 过程。 微软将PQOAL模块化的代码库分成如下几种类型:
?

通用代码(Common):这部分代码与硬件无关,在任何硬件环境下都可使

用;
?

CPU家族代码(CPU Family):这部分代码只使用于某一部分特定CPU家

族的代码,如ARM和MIPS等; ?特定芯片的代码(chip—specific)?这部分代码只使用于特定的处理器或者 SOC的代码,如Aul200和ARM920T等:
?

*台相关代码(Platform):这部分代码是仅适用于特定硬件*台的代码。

PQOAL的功能构架如图4.4所示。
Windows CE内核
J l J ~ J l J

Jr


1 r






OAL ∽
1t

o ∽





; 王 荔 餐
JL












墨 基





--1

-k-5
r一

—1 r_

r一—]

【_一]



J r一—]

。一~1…一—一l

—上









硬件*台



—j,_



—jL



—jr_
∽ ∞ D



*





图4.4

OAL功能构架

基丁.EP9315处理器的嵌入式Windows CE移植研究

4.3.2

OAL移植关键部分

在OAL的丌发过程中,并不是所有的OAL模块库都需要实现,开发者仍然 可以根据自己的需求来定制,但下列功能必须要实现,这些功能也是OAL移植
的关键所在。
1.

Startup函数

Startup函数是内核启动期间调用的第一个函数,它负责将CPU初始化到一 个已知的状态,OAL可以共享Boot Loader的Startup函数;
2.

串口调试支持

用于对OAL进行调试以便随时掌握系统的运行情况; 3.OEMInit函数 由内核初始化函数调用,它的最小任务是设置在Startup函数中没有进行初始 化的其余硬件并注册中断,开发者可以添加附加的代码来初始化可选的函数指针 和变量,从而增强系统的功能; 4.系统计时器 以每毫秒一个Tick的固定速率产生System tick,这个速率是计时器中断产生

的速率,实现系统定时器函数是OAL丌发的重要任务之一;
5.

中断处理

为内核提供打开、服务和完成中断的处理。当一个设备驱动程序调用 Interruptlnitialize、InterruptDisable和InterruptDone函数时,将触发内核分别调用 OEMInterruptEnable、OEMInterruptDisable和OEMInterruptDone函数; 6.内核的I/o 通常指实现OEMIoControl函数,它负责相应设备驱动程序或应用程序与内 核模式的OAL代码进行通信;
7.KITL(Kernel Independent Transport Layer)

通过通信服务协议与内核通信,使丌发者可以使用不同类型的硬件传输端口 与Platform Builder进行通信来更容易的支持调试服务。

4.3.3

基于EP9315目标板的具体移植 本节以Cirrus Logic公司提供的EP9315公板BSP为参考,着重介绍针对本

EP9315硬件板的OAL代码具体移植。 1.修改存储设备地址映射 首先修改inc目录下的memorymap.h文件,添加如下宏定义:
#define

PHYSICAL—ADDR—SDRAM—MAIN

HYSICAL-ADDR—SYNC—CS3

第四章Windows CE嵌入式操作系统移植

3l

#define #define #define #define

PHYSICAL—ADDIULASH—INTEL
SIZE——SDRAM——MAIN

PHYSICAL.-ADDR-AsvNc
0x08000000 Ox04000000 0x80000000 0x88000000

cs6

SIZE且氏SH—INTEL
SDRAM)IRTUAL—MEMORY
FLASH—.VIRTUAL——MEMORY

#define

上面的宏定义表明分将SDRAM和Flash接在EP9315的bank3和bank6区 域,且SDRAM的大小为128M,虚拟地址映射为0x80000000;Flash的大小为 64M,虚拟地址映射为0x88000000。 然后修改kernel/hal目录下的mmumap.inc文件,此文件定义的是MMU静态 地址映射表。将文件修改为如下内容:
EXPORT

OEMAddressTable[DATA】.

OEMAddressTable

;;;……一…………………~………………………。
;;;Virt Addr
’''

Phys Addr

MB

……一…………………~…………一…………-
;1 28 MB SDRAM ;64 Mb of Intel J3 Flash

DCD 0x80000000,0x00000000,l 28 DCD 0x88000000,0x60000000,64 END

上面文件中将SDRAM的物理地址0x00000000映射到虚拟地址Ox80000000 处,将Flash的物理地址0x60000000映射到0x88000000处。 最后修改kernel/hal目录下的mmumap.c文件,添加如下数据结构:
typedef unsigned int ULONG; typedef struct


ULoNG ULONG ULONG ulVirtualAddress; ulPhysicalAddress;

ulSizelnMegs;

)AddressTableStruct;
//Converts size in bytes to size in Megabytes rounded up. #define

MEG(A)

(((A?1)>>20)+1) OEMAddressTable[】_

const AddressTableStruct


∥SDRAM memory.



32

基于EP9315处理器的嵌入式Windows CE移植研究

SDRAM—.VIRTUAL MEMORY,
PHYSICAL—ADDR—SDRAM—MAIN, MEG(SDRAM_MAIN_BLOCK SIZE)

),
//Intel Fl ash Memory.

{ FLASH—VIRTUAL--MEMORY, PHYSICAL--ADDR_FLASH—INTEL, MEG(FLASH—SIZE) ),
//End ofTable


0, 0, 0

) );

自此OAL中存储设备的地址映射移植完成,其它外设的地址映射移植类似
于此。由于存储设备和CPU构成硬件板的最小核心系统,因此OAL移植中这一 步是必不可少的。 2.修改时钟频率 EP93XX系列微处理器可以外接两个晶振,频率分别为32.768KHz和 14.7456MHz,其中,32.768KHz的晶振主要用于RTC的时钟源,14.7456MHz的 品振为系统的主时钟,为产生系统所需要的高频时钟信号,处理器内部采用了两 个锁相环电路(PLLI和PLL2)对14.7456MHz的频率进行倍乘,达到较高的频 率,然后再对这个高频时钟进行分频,产生部件工作所需频率的时钟信号171。 锁相坏电路PLLl的结构如图4.5所示,PLL2的结构与之类似。
I一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一1
14.7456、|1|1z




一 —








、:i_、=_\. ]儿II.1一X211m I输入分频器『 v≥/广

v7
、:I__:_、\、
反i债倍锄器

f:的I,I^u,。次l 办分频器

I I I I


L——…——……………——…………——…——一
图4. 的结构图

I反,贺f}=}频器『 hlI xlIf{IJ

㈨I.i



两个

均可由软件编程,其输出频率

可由式(4.)求得。

第四章Windows CE嵌入式操作系统移植

33

‰t圳用56MHz

x些婪(PL署L



X业2IP器D等2筹咝
+11×rLu一”

㈤?,

式(4.1)中的PLLl

X1FBD、PLLl X2FBD、PLLl

X2IPD和PLLl PS可

从系统的时钟速度控制寄存器(ClkSetl,0x8093 0020)中获取。 图4.5中PLLl各部分的输入输出频率范围如下:
?PLLl ●PLLl ?PLLI ?PLLI

Xl要求的输入频率范围为:11.058MHz~166MHz; X1的输出频率范围为:294MHz~368MHz; X2(输入分频器之后)要求的输入频率范围为:12.9MHz'--"166MHz; X2(2的PPLl PS次方分频器之前)的输出频率范围为:290MHz'~

528MHz;

PLL2各部分的输入输出频率的范围与PLLl相同。 EP93XX系列微处理器的各个功能部件工作所需时钟信号的产生如图4.6所 示。
I一一一一一一一一一一一一一一一一一一一一一_l

端一
FCLK HCLK PCLK IJSB IJSB Host Host 48MHz 12MHz FIR CLK

VCLK

SCLK LRCLK MCLK

MIR CLK

哪一删岫u
图4.6总线与外嗣部什的时钟信号

K¨K水

基丁EP9315处理器的嵌入式Windows CE移植研究

关于OAL时钟频率的设置主要集中在inc目录下的docks.h和hwdefs.h文件。 修改时钟频率很重要,因为频率不J下确,即使是使用了同一CPU构架的BSP也 有可能导致系统无法启动。 3.修改调试串口 参考BSP使用了COM2作为调试串口,而本EP9315目标板采用的是COMl, 修改kemelkhal目录下的debug.C文件中的DEBUG 为COMl。 4.修改逻辑中断 在inc目录下的oalintr.h文件中定义了类似SYSINTR XXX的逻辑中断号, 用于唯一标识发生中断的硬件。Windows CE在Nkintr.h文件中预定义了一些
UART

PORT宏定义使其标识

SYSINTR宏,开发者可以在oalintr.h文件中添加自定义的SYSINTR逻辑中断,
但要注意整数ID不能超过SYSINTR FIRMWARE+23的大小。下面是针对EP93 1 5 硬件板移植的oalintr.h主要内容:
#define #define #define #define SYSINTR—GPIO SYS

(SYSINTR_FIRMWARE+0)

INTlUOUCH

(SYSINTR_FIRMWARE+1)
(SYSINTR_FlRMWARE+2) (SYSINTR_FIRMWARE+3)

SYSINTR—KEYBOARD SYSINTR—GPl00

#define #define

SYSINTR—GPl06 SYSINTR—GPl07 service routine)

(SYSINTR_FlRMWARE+20) (SYSINTR_FIRMWARE+2 1)

5.修改ISR(Interrupt

ISR是运行在内核中的一段代码,它检查中断并决定如何处理该中断。如果

中断需要被内核和IST进一步处理,那么ISR会返回一个类似SYSINTR XXX的
逻辑中断号,否则返回一个SYSINTR NOP给内核。ISR与IST之问使用标准的

Win32同步对象事件进行通信。在hal目录下的interrupt.C文件中包含了负责处理
上述工作的代码。

4.4驱动程序开发

4。4。1

Windows CE驱动程序简介 驱动程序是一个用来抽象物理设备或者虚拟设备的功能软件,它管理这些设

备的操作并将设备的功能导出给操作系统和应用程序,使硬件对于上层应用来说

第四章Windows CE嵌入式操作系统移植

35

是透明的。

Windows CE驱动程序是一个用户态下的DLL文件。像所有Windows
一样,Windows
CE

DLL

DLL驱动程序是无法单独被加载和运行的,必须被~些进程

动态的加载到地址空间,这些进程也称为驱动程序的宿主。 在Windows CE中,有3个系统的进程会加载和执行驱动程序的DLL,它们 是Device.exe、GWES.exe和Filesys.exe。 Device.exe在Windows CE中又被称为设备管理器。它负责加载和管理 Windows CE下绝大多数的设备驱动程序,包括网卡驱动、电池驱动、声卡驱动、 串口驱动以及USB驱动等等。 GWES.exe通常负责加载一些与图形界面有关的I/O设备驱动,例如鼠标驱 动、键盘驱动、触摸屏驱动以及显示驱动等等。由于这些驱动程序的功能通常与

图形界面的功能紧密耦合,因此被GWES.exe加载和使用可以提高驱动程序的效
率。 Filesys.exe在系统中负责管理Windows CE的对象存储和文件系统。因此, Filesys.exe须加载所有的文件系统驱动程序,例如FAT文件系统驱动等等。

4.4.2

Windows CE驱动模型 从源码结构来说,Windows CE驱动可以分为单体驱动与分层驱动,如图4.7

所示。

图4.7

Windows CE单体驱动和分层驱动模型

基-p EP9315处理器的嵌入式Windows CE移植研究

1.单体驱动程序

就是所有的驱动程序代码——包括中断处理、I/O操作及硬件控制等放在一
起。单体驱动直接与硬件交互,因此它包含与特定硬件的相关联代码。通常单体 驱动程序会暴露DDI(Device
Driver

Interface)接口给操作系统,DDI函数是操

作系统与驱动程序交互的接口协议。 单体驱动程序对驱动程序的代码不做分层,因此代码相对紧凑,对于一些效 率要求较高的场合,选用单体驱动程序可能会提高驱动的性能。同时对于一些简 单的硬件设备,使用单体驱动程序模型可能会更加清晰明了。 2.分层驱动程序 在驱动源代码层面上逻辑的分为两层:上面一层叫模型设备驱动(Model
Device

Driver,MDD),包含某一类型的驱动程序所通用的代码;下面一层叫*
Dependence

台相关驱动(Platform 的代码。

Driver,PDD),包含了特定的硬件或*台专用

MDD和PDD之间使用了一个DDSI(Device

Driver Service provider Interface)

接口协议来通信。当操作系统要访问硬件时,首先通过DDI函数与MDD交互,
然后再驱动内部使用DDSI接口与PDD进行交互,最终通过PDD完成真正的硬 件访问。
Platfornl

Builder中自带了很多类型驱动的MDD代码,这些MDD代码基本

上是无需很大的更改的,只需添加或移植PDD层的代码就可以得到相应的驱动。 可见分层驱动模型大大增加了Windows CE驱动程序的可移植性。 通常,MDD和PDD会被编译成独立的静念Lib库,然后进行链接形成可执 行的DLL驱动程序。 根据驱动程序导出接口的不同,windows CE中驱动可以分为本机设备驱动程 序(native device driver)矛ll流式接口驱动程序(streams device driver)。 1.本机设备驱动程序。 通常适用于集成到基于Windows CE*台的设备。这些设备驱动程序是一些 硬件所必需的,是由原始设备制造商创建的,用来驱动如键盘、LED、触摸屏等 设备。本机驱动在编译时被静态链接到GWES,系统运行时由GWES加载。 2.流式接口驱动程序 通常也称为“可安装驱动程序”,是由设备管理器动态加载的用户模式的DLL 程序。对流式接口驱动程序来说,不管需要控制的设备是什么类型,所有驱动都 使用相同的接口并导出一组相同的流式接口函数。流式驱动适用于任何可以被抽 象为是一个数据源或者数据存储的I/O设备。这些接口函数如表4.2所示。

第四章Windows CE嵌入式操作系统移植
表4.2 函数名称
XXX——Close

37

流式驱动接口函数 描述

在驱动程序关闭的时候应用程序通过CloseHandle函数调用这个函 数

XXX XXX XXX

Deinit Init lOControl

当设备管理器卸载一个驱动程序的时候调用这个函数 当设备管理器初始化一个具体的设备的时候调川这个函数 上层的软件通过DeviceloControl函数可以调JHj这个函数 在打开一个设备驱动程序时应用程序通过CreateFile函数调刖此函 数

XXX_Oven

XXX

PowerDown

在系统挂起前凋用这个函数 在系统从新启动前调用这个函数 在一个设备驱动程序处于打开状态时由鹿川程序通过ReadFile调Hj 此函数

XXX_PowerUp
XXX Read

XXX——Seek

对设备的数据指针进行操作,由应用程序通过SetFilePointer函数调 用这个函数

XXX——Write

在一个设备驱动程序处于打开状态时由应心程序通过WriteFile调 川此函数

上述接口中的XXX三个字母代表设备驱动的设备文件名前缀。例如一个流 接口驱动程序的设备文件名前缀为“CAN”,那么它相应要实现的DLL接口就为
CAN Close、CAN Deinit、CAN

Init和CAN IOControl等。

4.4.3

Windows CE驱动的中断处理 当windows CE产生一个中断时,OAL把物理中断信号映射成OEM定义的

逻辑中断供操作系统和驱动程序调用。为了满足实时性要求,系统将中断处理过 程分为两个阶段,即处于内核模式的中断服务例程(Interrupt
Service Routine,ISR)

和处于用户模式的中断服务线程(Interrupt Service Thread,IST)。ISR主要负责将 物理中断映射为逻辑中断,然后由操作系统根据逻辑中断触发所关联事件对象, 使等待该事件对象的线程IST丌始执行中断处理程序。 中断发生后,信号发往异常处理器,然后处理器调用OAL函数 OEMInterruptDisable关闭来自该硬件的中断。ISR被内核调用并返回结果,且通 过内核设置Event事件来触发IST。IST被唤醒后调用各种底层I/o函数完成中断 处理并返回InterruptDone通知内核。内核调用OEMInterruptDone通知硬件重新 开启中断。具体中断处理流程如图4.8所示。

基于EP9315处理器的嵌入式Windows CE移植研究

图4.8

Windows CE驱动中断处理流程

4.5移植内核映像配置文件
Makeimg.exe工具使用BSP中的内核映像配置文件来产生最终的Windows CE二进制映像文件nk.bin,这些配置文件包括二进制映像构建器文件(BIB)、注 册表文件(REG)、文件系统文件(DAT)和数据库文件(DB),本节将逐一介绍

这些配置文件的修改【81。

4.5.1

BIB文件 Builder)文件是一个特殊格式的文本文件,它用来定义操

BIB(Binary Image

作系统运行时映像中包含哪些模块和文件,同时Makeimg.eke使用BIB文件来决 定如何将这些模块和文件加载到目标设备的存储器中。一个BIB文件包含4个区 域:FILES、MODULES、MEMORY和CONFlG。 1.FILES区域 FILES区域定义了包含在映像中的其它文件,例如字体文件(TTF)、文本文 件(TXT)、位图文件(BMP)和声音文件等。例如:
;Name Path

Memory

Type

:……………………………………………一………………………‘。
Test.txt¥(_FLATRELEASEDIR)\Test.txt
NK SHU

Name表示在Windows CE系统中的文件名,Path表示文件在丌发主机中的位 置,Memory表示文件所属的内存区类型,Type表示文件属性。 上例说明NK内存区包含丌发主机%FLATRELEASEDIR%目录下的Test.txt

第四章Windows CE嵌入式操作系统移植

39

文件,且该文件具有SHU的属性。 FILES区域可用的文件属性类型如下: ●S:系统文件: ?H:隐藏文件; ?U:非压缩文件; ●D:运行时不可调式; ?N:将模块标记为不可信任。 Windows CE操作系统中的文件可以同时具有以上几种属性,如SHU代表此 Test.txt文件是非压缩的系统隐藏文件。 2.MODULES区域 MODULES区域列出加载到内存中的对象模块,这些模块是可被就地执行 (XIP)的未压缩的EXE文件或DLL文件。例如:
;Name Path

Memory

Type

:…………………………………………………………………………
Taskman.exe¥CFLATRELEASEDIR)\Taskman.exe
NK SH

这个例子表示Taskman.exe(任务管理器)模块将被加载到标记为NK的存储 区域,且Taskman.exe模块具有系统隐臧属性。MODULES区域的语法格式与 FILES区域的语法格式相类似。 3.MEMEORY区域 MEMEORY区域将物理内存划分成两部分:
● ?

数据存储区:ROM或RAM存储区; 程序存储区:为内存应用保留的RAM区域。

下面是根据EP9315目标板修改的部分配置:
;Name Start address

size(bytes)Type

NK

802C0000 822C0000

02000000 05A00000

RAMIMAGE RAM

RAM

上例说明NK的起始地址是0x802C0000,它占有32MB大小的内存空间,作 为ROM用于数据存储区。RAM在地址0x822C0000丌始,占有90MB大小的内 存空间,用于程序运行缓存。。 在Windows CE系统中,内存空问可以分成如下几种类型: ?RAM:定义内核分配给运行进程和基于RAM的Windows CE文件系统的 虚拟地址范围,这段范围必须是连续的。 ?RAMIMG:定义这段区域应被当作ROM来对待,这类存储类型一般用于 在丌发过程中将运行时映像加载到RAM或将运行时映像烧写到存储芯片。

基-I"EP9315处理器的嵌入式Windows CE移植研究

?RESERVED:定义被保留的区域,这类存储区域通常被用来做视频缓冲
区或DMA缓冲区。 ?FIXUPVAR:定义Makeimg过程中要初始化的全局内核变量、内核模块 变量的值。 ?NANDIMAGE:当创建一个使用BinFS的运行时映像,定义不应该分配

给RAM的地址空间,这将使一个可执行文件在NAND设备上就地执行,从而为
系统节约更多的RAM。 4.CONFIG区域 CONFIG区域通常是可选的,它用于定义一些配置选项,常用的配置选项解 释如下: ?COMPRESSION:定义ROMIMAGE是否压缩内核运行时映像的写入部 分,通常情况下这个选项为ON; ◆PROFILE:定义ROMIMAGE是否在运行时映像中包含profile结构和符 号,这些结构和符号用于eVC++应用程序丌发,这里选择OFF; ●ROMSTART;定义了ROM映像的起始地址,即nk.nb0在内存中的起始 地址: ?ROMSIZE:定义ROM的大小; ●ROMWIDTH:定义ROM的数据位宽,可以为8位、16位或32位: ●ROMOFFSET:定义一个与RAMIMAGE中定义的固定地址的偏移量,这 个偏移量用来修改bin文件中的每个记录的地址,这通常用于将ROM中的bin加

载到RAM来运行的场合;
●ROMFLAGS:为内核操作标志定义位掩码; ●KERNELFIXUPS:定义ROMIMAGE是否重定位内核的可写区域,这罩

设置为ON,内核的可写区域被重新定位到RAM的丌始;
?AUTOSIZE:允许所有未使用的运行时映像RAM被用做系统RAM和对 象存储RAM,或者使更多的RAM区域的内存能被RAMIMAGE区域使用,这里 设置为oN。 以下是根据本EP9315硬件板移植的config.bib文件部分内容。
:木牛宰幸奉奉木木木木牛+幸宰木木+木幸母木枣木宰}率宰木幸枣木枣木+幸}}幸宰木木}宰宰宰拳术宰+木术+幸牛木幸木木宰奎木木木枣

IF IMGFLASH! IF BSP—EP93 1 X—COPY—FLASH—TO—RAM!
;宰枣幸枣木木幸宰幸枣木木毒木搴,I搴宰枣宰幸枣木睾宰幸奉幸宰奉宰枣木木幸宰宰奉幸牛幸幸宰枣木幸奉木枣幸丰幸枣木奉奉宰奉宰搴幸枣木卑;

;Boot from

RAM

;宰宰牛,|}宰幸幸乖木幸木奉母搴士奉木幸幸木木木木宰幸拳宰枣木木|‘木+木木幸宰}jI枣+幸,|幸幸宰串木牛幸宰宰宰宰宰宰唪幸}}宰宰宰

MEMoRY

第四章Windows CE嵌入式操作系统移植

4I

RESERVED DRV GLB C¥8950 EDBG

80000000 80008000 800l 0000 80040000 800C0000

00008000 00001 000 00030000 00080000 00200000

RESERVED RESERVED RESERVED RESERVED RESERVED

FRAMEBUF

IF IMGRAMl6 1 IF IMGRAM32 1 IF IMGRAM64 1 NK 802C0000 822C0000 87FF0000 02000000 05D3 0000 0001 0000

RAMIMAGE RAM
RESERVED

RAM
RESERVED ENDIF ENDlF ENDIF

CoNFIG

COMPRESSION=ON
PRoFILE=OFF

ROMSTART=802C0000 ROMSIZE=01 D40000

ROMWIDTH=3 2
:NKStart

+ROMOFFSET=Physical Memory Location.

:0x802C0000+0x80000000=0x002C0000

ROMoFFSET=Ox80000000 ROMFLAGS=0
KERNELFIXUPS=ON AUTOSlZE=ON ENDIF ENDIF

4.5.2

REG文件 Windows CE操作系统的REG注册表文件类似其它桌面Windows版本的注册

表文件,主要是除去了文件顶部的REG版本标记。注册表本质上是一系列数据的

42

基丁.EP9315处理器的嵌入式Windows CE移植研究

集合,它存储了大量的配置信息,包括应用程序信息、设备驱动程序配置信息、
系统配置信息、用户参数以及其它相关数据。 BSP中的Platform.reg配置文件提供了*台相关的注册表信息,如设备驱动 程序入口或目标板的一些特定的信息等。下面是本EP9315目标板注册表文件的 一个实例: 【HKEY_LOCAL_MACHINE\Drivers\Builtln\CNT】
”Index”=dword:1 ’’Prefix”=”CNT" ”D11”=¨CNT.dll” ”Order”=dword:0

上述注册表是82C54设备流式驱动的配置信息,配置为在系统启动时自动加 载82C54驱动。

4.5.3

DB文件 数据库文件DB是Windows CE提供的内置轻量级数据库管理系统。Windows

CE的属性数据库由一张包含记录的表组成,每个记录包含许多不同的属性,每

个属性有3种信息:标志属性的lD号、类型和值。例如:
.Record: Field:40200 1 f:”{0002 1 4A0—0000—0000一C000-000000000046}” Field:42020003:l 5 Field:42030003:2 End

属性数据库是一种*面结构,不能定义属性数据库之问的关系。使用
Microsoft ActiveX Data Object for Windows

CE(ADOCE)技术可以容易地访问属性

数据库,甚至可以使用SQL语句查询信息。

4.5.4

DAT文件 DAT文件定义Windows CE映像nk.bin默认的目录和文件结构。注意Windows

CE不支持像桌面Windows XP一样的盘符驱动器,也没有当前目录概念。下面是

一个DAT文件片段:
root:?Directory(”Program Files”) Directory(”Program Files”):Directory(”My Work”) root:-Directory(”My Documents”)

第四章Windows CE嵌入式操作系统移植

43

Directory(”My Documents”):-File(”MyFile.doc”)

上述例子生成2个根目录Program Files和My Documents。Program Files有一 个子目录My Work。文件MyFile.doc位于My Document目录中。另外注意 MyFile.doc必须出现在某一个BIB文件中,这样映像文件才会有MyFile.doc。

第五章Windows CE撵作系统定制与调试

第五章Windows CE操作系统定制与调试
这一章主要介绍如何使用移植好的BSP来定制和编译Windows CE操作系统 内核映像㈣。

5l安装BSP
定制Wlndow¥CE操作系统的第一步是安装与丌发板相应的BSP。 首先将移植好的BSP包命名为ep93lx并复制到WindowscE安装目录的

Platfom子目录下。
然后,运行PlatformBuilder,在[File]T拉菜单下选择[ManageCatalog Featuresl,弹出如图5 l所示对话框。此对话框中显示了所有Platform Builder已

安装的组件,必须把BSP的CEC文件导入到Platform Builder中。

幽5



Catalog特性管理

最后单i刍-[1mport]按钮,导入所安装ep93lx目录早的ep931x cec文件,再点 击【OK]按钮完成操作。

5.2定制操作系统
1打丌Platform Builder,选择[File]下拉菜单T酐J[New Platform]l自J导,点击

[Next】出现如图5 2所示对话框.选择*台为[clRRus EP93Ix:ARMV41],即上 一步导入的BSP包,然后再点[Next];

基丁EP9315处理器的嵌入式Windows CE移植研究
EE20墨口lE■■■■■■■■■■■■■■_旺黔二
_f

“’::;鼍::祟:嚣笛{、…。……。。,。删。。

毋l

船…O 到
图5.2

n—ly嚣;=:删妒…“J

t坚[j歪]业-一】竺“!I
新建WinCE*台

2在随后的available configurations栏中选择[Industrial Contmller],并输入新 建的*台名称,如图5.3所示。此选项是根据目标*台具体要实现什么功能而选 定的,本项目使用[IndustrialController],然后再点[Next];

幽5.3定制向导

3照向导选择需要的功能模块,如选择网络和通汛功能等; 4点[Finish]结束*台定制向导: 5进一步添加和裁剪功能模块。在Platform Builder主菜单中选择 [View\Catalog]命令,弹出[Catalog]选择框,在其中可以选择提供的各种驱动模块, 如音频驱动、USBOHCI驱动,PCMClA驱动USB鼠标和键盘驱动等等,添加过 程为选中相应的模块点右键选择『add
to

platform]。

第五章Windows CE操作系统定制与调试

5.3编译内核映像
在构建生成操作系统映像之前,可对操作系统映像根据特定的要求进行配置。
*台的配置是通过Platform Settings对话框进行的。 其中Build Options选项卡是一些构建时比较常用的设置,下面将逐一介绍每 一项的含义。
1.Enable CE Target Control Support

选择此项可在Windows CE启动时,启动Target Contr01支持,另外KITL服 务也会被同时打开。
2.Enable Eboot Space in Memory

选择此项会在内存中为Eboot保留出Config.bib文件中指定的内存空间,这

样Eboot就可把部分信息写入此空间,操作系统可读取Eboot留下的信息。
3.Enable Event Tracking during Boot

选择此项可打开Windows CE的事件跟踪服务。
4.Enable Full Kernel Mode

选择此项,Windows CE中所有的线程都会运行在核心念,这样可能会使整 个系统相对不稳定,但也可以提高系统的运行效率。
5.Enable Image for Flash

选择此项,Windows CE内核在被Eboot下载到板子时会自动烧写到Flash中 去。
6.Enable Images Large than 32 MB

选择此项,可以生成大于32MB的内核映像。
7.Enable Kernel Debugger

选择此项可以启用内核调试器,这样就可以对Windows CE设备进行内核调
试。
8. Enable KITL

选择此项可以打丌KITL服务。
9.Enable Profiling

选择此项可以打丌Windows CE

Kernel

Profile服务,这样可以对内核的运行

性能指标进行剖析,以便对系统进行优化。
1 0.Enable Ship Build

此项只会在Release配置中出现,取消此项选择,Windows CE会输出很多调 试信息。
11.Flush Events to Release Directory

基丁EP9315处理器的嵌八式WindowsCE移植研究

选择此项可把事件跟踪的结果发到Release日录中,电会同时打丌事件跟踪
服务。 本*台配黄的选项如图5.4所示。

幽5.4*台配置选项

完成L述操作后就可以编障内核了.编泽完后就可生成NK
eboot

bin、NK nbO

bin和eboo!nb0等文件。

5.4调试内核映像
l烧写ehoot nb0到Flash中。
(1)

将EP9315目标板设置为串口启动模式.然后使J=}j交叉串口线将目标

板和丌发主机连接。
(2)

将编译后生成的文件eboot nb0和Flash烧写工具download exe放到

同个月录中,然后在命令控制台*氪四柯迹淙胍韵旅睿
download eboot nb0
(3)

将目标板电源丌关打=J1=,叩会启动串口下载并执行分段烧写.烧写成

功后如图5 5所示。

第五章Windows CE操作系统定制与调试

幽5.5烧._弓成功显示

2.断丌电源,设置EP9315目标板跳线为从FLASH启动。然后打开超级终 端,设置参数为图5.6所示。点击工具条上的[呼叫]按钮或通过丰菜译中的Ⅱfltl选
项建立连接。

蚓5.6

超级终端蹬置


3完成上述步骤后,打丌电源即从超级终端中显不eboot提示信息,如罔5 所示。

幽5



成功建立连控

基丁EP93I 5处理器的嵌入式Windows CE移植研究

4通过以太网下载镜像文件。
(1) (2) (3)

使用交叉网线连接目标板和开发主机。
在,f发主机启动DHCP服务器.为日标板分配一个IP地址。 在Platform Builder的["large]菜单下点击[Configure
Remote

Conneclion],然后在弹出的对话框中配置网络,选择参数如图5 8所示。

型5 (4)



网络配胃

选择[Targel]菜币L}】的【Download/Injtja】lze】,即丌始通过网络下载操作

系统镜像文件到EBD9315板上的RAM巾。完成上述操作后系统将自动启动,进
入WindowscE操作界ifij,这样就可以使用Platform Builder白带的Debug工具进 行调试了。

第六章总结和展望

5l

第六章总结和展望
本论文对Windows CE操作系统进行了较为深入的研究,重点讨论了嵌入式 Windows CE的移植原理和实现过程,同时也对EP9315硬件*台的特性和结构做 了细致的介绍,最后叙述了如何根据EP9315目标硬件*台定制、编译和运行 Windows CE操作系统。

现将Windows CE移植要点总结如下:
1.Windows CE的移植通常就是指BSP的移植,因此弄清楚BSP的工作原 理和组织方式是移植的首要任务。
2.Boot

Loader并不是所有的嵌入式系统必须的,但它能给系统调试带来很

大方便。在Boot Loader移植过程中,首先必须考虑处理器自身的启动原理,例
如EP9315处理器使用了内部Boot ROM;其次要根据调试环境来修改功能,例如 本论文Eboot使用以太网下载内核而没使用USB端口;最后还要根据实际硬件环 境修改Boot Loader的二进制映像配置文件。

3.OAL的移植是BSP移植中最复杂的一步,这旱面涉及到地址映射、时钟
频率、中断处理、内核通信以及调试服务等诸多方面,需要丌发人员同时对 Windows CE的核心特性和目标硬件系统有较深的理解,使用Windows CE提供的 PQOAL可以大大提高OAL移植丌发的效率。 4.驱动丌发属于BSP移植中相对独立的一部分工作,大部分外设的驱动可 以单独放在最后完成。


5.BSP中的配置文件移植是Windows CE移植的最后一个重要环节,这里最 重要的地方就是二进制映像配置文件中内存地址的分配。 本论文只是对Windows CE嵌入式操作系统移植做了初步的探讨,并将其成 功的移植到EP9315处理器*台上,但是还有很多方面值得完善。本人希望今后 能对Windows CE在EP9315*台的RTC问题、Flash文件系统断电存储问题以及 更高要求的实时性问题等做进一步的深入研究。

致谢





首先,我要感谢我的导师傅丰林教授。傅老师学识渊博、治学严谨,他在科 研教学工作中的创新意识和能力以及自身的人格力量对我产生了深远的影响,使 我受益终身。借此机会向傅老师表示最诚挚的谢意! 其次,我还要感谢原志强老师,本项目的进行受到了原老师的细心指导,不 仅教会了我许多嵌入式专业领域的知识,更是教会了我如何去做科研工作,他兢 兢业业的工作态度以及丰富的项目经验给我留下了非常深刻的印象。 我还要感谢陈健教授、阔永红教授,以及实验室的王*博士,他们对我两年 半的研究生学*生活提供了很多帮助。 感谢刘彦明、傅少锋老师帮助我克服了项目中的诸多技术难题。 感谢我的舍友张鑫、王庆和邓利斌,以及实验室的郭俊生、宋志远、周园和 古娜等全体同学,感谢他们在学*和生活上给予的帮助和关怀,我将永远珍惜这 段难得的友谊。 感谢我的父母,你们是我的精神支柱,教会了我如何为人、如何生活,特别 是在我最忙碌的同子罩,给予了我最大的理解和关心。 最后,再次感谢所有给予我帮助、鼓励和关心的人,谢谢你们!

参考文献

55

参考文献
【1】何立民.嵌入式系统的定义与发展.单片机与嵌入式系统应用,2004.1 [2】何宗键.Windows CE嵌入式系统.北京:北京航空航天大学出版社,2006.9 【3】车鸣.基于ARM9的嵌入式Linux应用与移植性研究.西安电子科技大学,
2007.1

【4】李存良.基于Xscale的车载系统的WinCE移植和驱动开发.大连海事大学,
2007.3

【5]张冬泉,谭南林,王雪梅等.Windows CE实用丌发技术.北京:电子工业出 版社,2006.9 [6】Cirrus
Logic.EP93 1 5 User Manual.http://www.cirrus.corn,2004

[7]李驹光,郑耿,江泽明.嵌入式Linux系统开发详解——基于 EP93XX系列
ARM.北京:清华大学出版社,2006 [8]赵彦斌.基于IntelXscale构架的Windows CE操作系统的移植. 西安电子科技 大学,2006.1 【9】汪洋.多媒体终端的WinCE BSP软件设计.浙江大学,2007.5

【10】张自明.基于WinCE的嵌入式*台的研究与实现.电子科技大学,2007.5
[1 1]Douglas
2003 Boling.Programming Microsoft

Windows CE.NET.Microsoft

Press,

[12】周毓林,宁杨等.Windows CE.NET内核定制与丌发.北京:电子l,lk出版社,
2005

【13】付林林.OAL点点滴滴.http://dev.yesky.com/SoftChannel/72342371878043648
/200501 14/1901426.shtml

【1 4]Developing



Board

Support Package.http://msdn.microsoft.com/en—us/library

/aa447040.aspx

【1 5]Platform

Builder Directory

Structure.http://msdn.microsoft.corn/en—us/library/

ms93379 1.aspx

【1 6]How to

Create,Customize,and Debug

an

Image for the

Windows

CE 5.0

Emulator.http://msdn.microsoft.com/en-us/library/aa4469 1 0.aspx

【17】姜波.Windows CE.Net程序设计.北京:机械工业出版社,2007 【18]Steve Furbur著,田泽等译.ARM SoC体系结构.北京:北京航空航天大学出 版社,2002

基丁.EP93 1 5处理器的嵌入式Windows CE移植研究

[1 9]Li H.H.,Wang

Y.R.,Chin V.Porting window CE operating system to broadband

enabled STB devices.IECON Annual Conference

02[Industrial

Electronics Society,IEEE 2002 28th 3.PP.253 1-2537

ofthe],5-8 Nov.2002,Vol

[20]Ji Wankang,Yang
Vehicle

Jia,Hong Yongqiang.BSP Development of Based on¥3C2440.Electronic

WinCE

System for and

Navigation Device

Measurement

Instruments,2007.ICEMI’07.8th Intemational Conference onAug.PP。2-389?
2—391

[2 1]David [22]Dan

Hayden.Teach

YourselfWindows

CE in 24 Hours.USA:SAM,2003

Henriksson.Resource-----Constrained

embedded

Control and Computing

Systems[D】,2006

基于EP9315处理器的嵌入式Windows CE移植研究
作者: 学位授予单位: 穆东栋 西安电子科技大学

相似文献(10条) 1.学位论文 忻凌 针对嵌入式系统的Java虚拟机的硬件实现 2004
随着集成电路技术的发展,嵌入式系统正在被越来越广泛地使用.从网络、系统控制等高性能设备到个人数字助手(PDA)和手机,都可以见到它的身影 .而随着互联网应用市场的高速发展,人们对Java的使用投入了极大的兴趣.仅管Java语言最初因网络发展的需要而产生,但其指令短小、安全、*台无关 的特点使得它开始在嵌入式系统中被大量使用,特别是对于那些便携式设备,Java的那些特点似乎生来就是为它们而准备的.嵌入式系统中的关键部分是微 处理器,它基本决定了整个嵌入式系统的性能.我们工作的目标是设计一个针对嵌入式系统的微处理器,它执行Java语言有较好性能,并且兼容一种RISC指 令集(选用ARM或者MIPS指令集).在20世纪80年代提出的RISC结构的处理器相当适合嵌入式系统的使用.由高级RISC机器公司提供的ARMR处理器和由MIPS技 术公司提供的MIPSR处理器是现在世界上最著名和使用最广泛的嵌入式通用微处理器.文中我们将讨论基于嵌入式系统RISC微处理器的Java*台,它的几种 实现方式的特点和异同,并提出能以低成本实现基于RISC设计的硬件直接执行Java的字节码.该文中,我们需要设计两个32位嵌入式RISC处理器分别兼容 ARM7和MIPS2000.它们是一种新的32位微处理器结构和有一种附加加速JCVM的硬件.在这两个处理器中,不仅能执行本地指令集而且支持Java卡虚拟机指令 集.这些处理器的特点是有两个程序执行状态:Java状态和本地状态.我们在两个处理器中分别采用了不同的硬件加速技术来提高Java的执行效率.这些技 术包括堆栈寄存器堆、快速本地变量、指令折叠、堆栈指示等.它们能在两个状态间无缝切换,这使得用户能方便地使用Java应用程序和原始的RISC程序 而不需要增加额外的处理器.而提高Java执行能力仅仅需要在原初的RISC芯片中增加很小的面积.最后,我们使用TSMC的0.18umCMOS工艺库,完成这些芯片 的设计,并使用Xilinx的FPGA板作为我们的硬件验证*台,它能为其它类似的嵌入式微处理器和Java硬件IP的设计提供一个系统环境.

2.会议论文 柏桂枝 基于国产处理器CCM3118DQ的嵌入式系统开发*台 2006
针对国产处理器所面临的应用开发问题,介绍了支持国产处理器CCM3118DQ的嵌入式系统开发*台JARI-ESDP;重点描述了该*台的组成、功能和技术 特性;通过简单介绍C*CORE多功能教学实验系统,阐述推广应用JARI-ESDP的深远意义.

3.学位论文 叶敏娇 Manticore体系结构设计——面向嵌入式系统的异构多核处理器体系结构 2006
随着超大规模集成电路的复杂性按照摩尔定律飞速提高,单个处理器的性能提高已经到达极限,因此无论是性能提升还是节能计算,都离不开对多 核体系结构的考虑,多核处理器已经成为计算机处理器体系结构发展的必然方向。 多核体系结构分为同构多核和异构多核。考虑到嵌入式系统中低功耗计算的目标和现代处理器设计中兼顾性能与效率的原则,我们选择以性能效率 ,即“性能/逻辑门数量”这一指标作为衡量处理器优劣的标准。我们详细考察了当前高性能处理器设计和多核处理器设计的各种技术各自的利弊,反思 了各种复杂的虚拟内存和cache体系、超标量体系、乱序执行体系、硬件转移预测、超级流水等技术的缺陷和它们在多核时代将面临的困难,认为异构多 核是发展的必然趋势,因此我们面向嵌入式系统提出了一个取名为Manticore的可扩展和可配置的异构多核处理器体系。 我们在FPGA开发板上实现了Manticore处理器,并提出了一种针对异构多核处理器的编译时任务调度导航策略以配合Manticore的结构特性。 Manticore处理器充分说明以性能效率最优化为设计目标的异构多核处理器在嵌入式领域一定大有作为。

4.期刊论文 程修远.张跃.Cheng Xiuyuan.Zhang Yue 基于双处理器的清华嵌入式系统的设计与实现 -计算机应用 与软件2005,22(7)
本文提出了基于双处理器的清华嵌入式系统,通过两块处理器来分别实现多媒体和网络交互两个方面的功能.在此基础上,设计了一整套软件应用解决 方案,以满足网络和多媒体应用对嵌入式系统提出的更高要求.

5.学位论文 马敖翔 基于ARM内核的嵌入式系统的开发和应用 2002
该文建立了一个以目标开发板为硬件*台,ARM SDT 2.51为开发手段的实验开发环境,并在此基础上开发了应用系统.第一章从总体角度讲述了嵌入式 系统的含义、组成、特征,第二章介绍了ARM系列处理器的情况.第三章全面讲述了作者建立的32位ARM嵌入式系统实验开发环境.第四章讲解了以EP7209为 处理器的音频播放器和指纹图象采集处理器的系统结构和功能.

6.学位论文 李楠 基于Intel386EX处理器的高可靠航天嵌入式系统的设计与研制 2006
随着航天技术日新月异的发展,人类的活动领域已经扩展到太空。人类认识太空和利用外层空间的能力也发生了质的飞跃,例如可以利用外太空的 微重力环境来研究和改进半导体材料、金属合金材料的生产工艺。这些探索、研究和利用需要功能强大,性能优良,高可靠的系统和设备的支持,例如 ,数据采集、处理、传输、控制*台等,这些系统一般都为嵌入式系统。 航天嵌入式系统和一般嵌入式系统相比,主要具有以下特点:高实时性,工作环境恶劣,高精度,长寿命。 针对航天嵌入式系统的特点,结合某返回式卫星搭载任务空间科学试验服务系统的需求,借鉴已有研究成果,本文完成了基于Intel386EX处理器的 空间试验控制器嵌入式系统的设计与研制。具体研究内容如下: 本人与项目组成员一同完成了硬件设计,特别是对嵌入式系统中的关键器件选择、以提高可靠性为主的系统硬件架构等进行了分析和设计。并运用 了冗余设计、系统门禁架构等理论与方法。 在进行了软件需求分析和总体设计的基础上,本人应用宏汇编语言进行了Intel386EX处理器实模式状态下的软件系统开发,并且运用TRACE32工具进 行软、硬件调试。软件设计中对系统多级中断的调度策略进行设计,建立了系统运行日志并将其与程控/遥控指令判读处理有机结合,有效地提高了整个 系统的可靠性。 本嵌入式系统已经通过了地面软件/硬件测试、各种环境模拟试验、模拟飞行试验,工作正常,性能良好,功能可靠,满足任务要求。其中的有关理 论和方法也可以推广应用到其它类似的系统。

7.期刊论文 王芳.黄雷鸣.佘学兵.Wang Fang.Huang Leiming.She Xuebing 基于Xscale处理器的嵌入式系统开发* 台的设计与实现 -科技广场2009(5)
本文从宿主机与目标机的角度出发,首先建立宿主机开发及编译环境,并搭建了合理的软件*台.然后介绍Xscale PXA255开发板作为目标机硬件*台 的特性,并选择嵌入式Linux操作系统2.6.10内核版本进行移植.最后实现了基于Xscale处理器及linux的嵌入式系统开发*台的搭建.

8.学位论文 席康 双处理器架构嵌入式系统的研究及在RFID中的应用 2008
射频识别(Radio Frequency Identification,RFID)技术是基于雷达原理利用射频信号通过电感耦合或是电磁反向散射耦合技术实现无接触信息传递 ,通过所传递的信息达到识别目的的自动识别技术。RFID阅读器(RFID Reader)是整个RFID系统的核心设备,它能够无接触识别电子标签(Tag)中的电子数 据,对识别获取的信息的进行本地数据库管理,提供良好的用户界面进行显示,并支持数据信息的网络传输。 本文采用双处理器嵌入式系统架构,设计实现915MHz UHF频段RFID Reader中的主控和基带*台。该*台以ARM微处理器和DSP数字信号处理器为核心 ,DSP实现射频识别中编解码调*獾鞯群诵乃惴ǎ籄RM微处理器运行嵌入式操作系统,对已获取的标签数据进行管理,并提供良好的用户界面和网络传输。 本文首先研究分析了RFID Reader的功能特性,提出了双处理器嵌入式系统的设计思想。然后系统的研究并实现了RFID Reader的主控和基带*台的硬 件设计。硬件设计包括ARM主控子系统和DSP基带子系统的设计以及双处理器的通信接口设计。之后针对现代高速PCB设计中所面临的挑战,运用高速PCB仿 真技术对关键网络进行硬件仿真。针对不同的信号完整性问题,本文提出了具体的解决方法,修改后的电路确保了硬件*台运行的稳定性与准确性。最后 ,在软件设计方面,根据主机接口(HPI)的硬件电路设计,开发了HPI接口的Linux驱动程序,实现了两个处理器之间高速、大吞吐量的数据通信,为后续的高

层应用软件的业务处理奠定了基础。 目前,RFID Reader的开发已全部完成,通过了广东省科技厅重点工业攻关项目组专家的鉴定验收。经实测,该RFID Reader支持EPC GLOBAL UHF(GEN2)和ISO18000-6两种协议,电子标签的最快读取速率达到82个每秒。综上所述,本文采用双处理器嵌入式系统架构,实现RFID Reader的主控和基带 处理*台,融合了两类不同嵌入式处理器的特性,在915MHz UHF频段RFID Reader实际项目中应用效果良好,具有很大的实用价值。

9.期刊论文 黄永葵.赵云忠.毕国楦.李京生.HUANG Yong-kui.ZHAO Yun-zhong.BI Guo-xuan.LI Jing-sheng 实时 嵌入式系统MIPS R3000和Intel 80960处理器的适用性评估 -航空计算技术2001,31(3)
MIPSR3000和Intel80960是实时嵌入式系统的两种候选处理器.本文描述了MIPSR3000和Intel80960的结构特征.通过对流水线互锁、上下文转换、进 程间通讯、同步及多进程支持、过程调用、容错和例外处理、中断处理、超越/特殊功能、数据类型和调试支持等的分析,做出了两种结构的适用性评估.

10.学位论文 李垣陵 基于68K处理器的嵌入式系统设计与应用 2002
嵌入式系统作为实现设备小型化、智能化和自主知识创新的一个重要元素,目前已广泛应用于国防、工业、交通、能源、信息以及日常生活等各个领 域,发挥着极其重要的作用.该文首先应用Motorola公司的龙珠处理器建立了自己的硬件*台,第二章对硬件*台建立过程中的关键技术进行了探讨.第三 章深入分析了具体硬件*台的启动流程,对具体嵌入式系统软件开发*台的实现技术进行了探讨并具体实现了该*台.第四章分析了嵌入式操作系统的一 般问题,并针对本硬件*台,对一种得到广泛应用的Linux嵌入式系统版本——uClinux进行深入的分析和移植.

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1485538.aspx 授权使用:吕先竟(wfxhdx),授权号:0f67b517-f7d1-48aa-b0fa-9e7200a15b6c 下载时间:2011年1月21日


相关推荐

最新更新

猜你喜欢