Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487364
  • 博文数量: 76
  • 博客积分: 5196
  • 博客等级: 大校
  • 技术积分: 1414
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-10 18:43
个人简介

转了个圈,又回来了

文章分类

全部博文(76)

文章存档

2013年(1)

2011年(8)

2010年(9)

2009年(22)

2008年(36)

我的朋友

分类: WINDOWS

2008-09-03 12:24:33

   摘要:Windows CE操作系统是嵌入式系统的开发利器。Windows CE Platform Builder 3.0提供创建、裁剪和配置Windows CE的所有开发和调试工具。深刻理解和灵活运用Platform Builder的配置文件.REG、.BIB、.DAT、.DB是定制适合目标平台的Windows CE操作系统的关键。本文详细分析Platform Builder的配置文件,并以向Windows CE添加RTL8139网卡驱动程序为例,说明如何通过修改配置文件添加目标平台的设备驱动程序。

    关键词:嵌入式系统 Platform Builder Windows CE 驱动程序

引言

嵌入式系统是指操作系统的和功能软件集成于计算机硬件系统之中,简单地说就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式。具有软件代码小、高度自动化、响应速度快等特点。Windows CE是一个功能强大的开放的32位实时嵌入式操作系统,适用于快速构建新一代内存少、体积小的智能设备,例如工业控制器、手持式设备、智能电话、机顶盒和零售点设备等。不仅如此,Windows CE也为开发智能移动设备提供了新一代可剪裁的嵌入式系统平台。Windows CE支持各种处理器产品家庭,包括x86、Xscale、ARM、MIPS和SH等系列,因此它允许开发人员选择最理想的硬件。微软Windows CE Platform Builder 3.0用于创建、裁剪、定制Windows CE操作系统。Platform Builder为创建Windows CE提供许多配置文件和开发调试工具。由于Windows CE适合于要求实时的和具有特定用途的多任务体系,通常需要为目标平台开发专用的硬件设备的设备驱动程序。只有向Winodws CE添加适当的设备驱动程序之后外围设备才可以正常工作。以RTL8139网卡驱动程序为例,说明如何通过修改配置文件添加Windows CE的设备驱动程序。

1 建立配置Windows CE的软硬件环境

配置和调试Windows CE需要1台高性能开发工作站和1台目标调试设备。Platform Builder 3.0运行在Windows 2000或者以上版本的高性能开发工作站上。Platform Builder提供了创建和调试Windows CE映射NK.BIN的集成开发环境,如向导和工具栏,支持活动模板库(ATL)、微软基本类库(MFC)和Visual Basic,为支持的处理器家庭提供编译器、内核调试器以及各种远程调试工具。目标调试平台可以是经过适当配置以后的普通PC机,也可以是嵌入式微处理器模块。开发工作站通过以太网或者串、并行口与目标平台连接,并将Windows CE操作系统映像文件NK.BIN下载到目标平台。下载完成之后,Windows CE在目标平台启动。在开发工作站上,可以使用Platform Builder提供的调试工具查看Windows CE的运行情况。以太网和串、并行口这两种连接类型的差别如表1所列。

表1 以太网和串、并行口连接之间的差别

以太网连接 串、并行口连接
下载速度较快 下载速度较慢 
开发工作站需要以太网网卡,目标平台需要NE2000兼容的调试以太网网卡 串行口、并行口
映像文件和调试工具都使用以太网 映像文件使用并行口下载,目标平台的调试信息使用串行口传送

2 Platform Builder 3.0提供的配置文件

配置文件包括4种文件类型:二进制映像生成文件.BIB、注册表文件.REG、目录和文件分配表文件.DAT、数据库文件.DB。通过修改这些配置文件可以裁剪优化Windows CE。用户根据需要可以创建自己的配置文件,PB提供的主要配置文件如表2所列。

表2 配置文件列表 

.BIB文件 .REG文件 .DAT文件 .DB文件
Common.bib Common.reg Common.dat Common.db
Dcom.bib Dcom.reg Servers.dat  
Msmq.bib Msmq.reg    
Platform.bib Platform.reg Platform.dat Platform.db
Project.bib Project.reg Project.dat  
Wceshellfe.bib Wceshellfe.reg Wceshellfe.dat Wceshellfe.db
Wceappsfe.bib Wceappsfe.reg Wceappsfe.dat Wceappsfe.db
Config.bib Script reg    

2.1 二进制映像生成文件.BIB

.BIB文件是文本文件,标识包含在Windows CE映像中的目标模块、组件和文件。一个.BIB文件包含4个部分:FILES、MODULES、MEMORY和CONFIG。

(1)FILES部分

FILES分配一部分内存空间给静态数据文件。这部分主要包括字体文件(.TTF)、文本文件(.TXT)、位图文件(.BMP)和声音文件(.WAV)等。例如:

;Name Path Memory Type

;------ --------------------------------------- ----------- -----

Tahoma.ttf $(_FLATRELEASEDIR).ttf NK SHU

Name:在Windows CE系统中的文件名。

Path:文件在开发工作站中的位置。

Memory:文件所属的内存区。

Type:定义文件属性。Windows CE中的文件有以下文件属性:S为系统文件、H为隐含文件、U为非压缩文件、R为压缩资源文件、C为压缩文件。1个文件可以同时具有几种属性。

上例说明NK内存区包含开发工作站的$(_FLATRELEASEDIR).ttf文件。在Windows CE系统中,tahoma.ttf的文件属性是系统隐含的非压缩文件。

(2)MODULES部分

列出加载在内存中的目标模块和组件,包括所有的可执行文件.EXE和动态链接库.DLL。例如:

;Name Path Memory Type

;------- --------------------------------------- --------- ------

device.exe $(_FLATRELEASEDIR).exe NK SH

device模块加载到内存区。Windows CE系统中device.exe具有系统和隐含属性。

(3)MEMEORY部分

把物理内存分成2个部分:数据存储区和程序存储区。例如

;Name Start address size(bytes) Type

;------- -------------- ------------ --------------

NK 80200000 00600000 RAMIMAGE

RAM 80800000 00800000 RAM

在Windows CE系统中,内存分成3种类型:RAM、RAMIMG和RESERVED。RAM规定内存大小;RAMIMG规定ROM空间;RESERVED为保留的内存空间,内核不能使用这部分内存,但是应用程序可以访问。上例说明NK的起始地址是80200000,它占有6MB内存空间,作为ROM用于数据存储区。RAM在80800000开始,占有8MB的内存空间,用于程序存储区。

(4)CONFIG部分

这部分不是必不可必的。在这部分进行一些属性设置,如是否压缩和ROM大小等。

2.2 注册表文件.REG

注册表文件建立操作系统映像的注册表入口。注册表是一个数据,存储了大量的配置信息,包括应用程序信息、设备驱动程序的配置、系统配置信息、用户参数和其它相关数据。当目标平台冷启动时,Makeimg.exe使用.REG文件创建默认注册表。Platform.REG配置与平台有关的注册表信息,如设备驱动程序入口。Project.REG设置与工程有关的注册表格。注册表文件的格式:

[HKEY_LOCAL_MACHINE]

“Launch10” = "shell.exe"

"Launch20" = "device.exe"

"Launch30" = "gwes.exe"

"Depend30" = "hex:14,00"

上述注册表入口设置规定内核在启动时必须自动运行shell.EXE和device.exe模块,gwes.EXE模块必须在device.EXE正常启动以后才能运行。

2.3 数据库文件.DB

Windows CE提供内置的轻量级数据库管理系统。Windows CE的属性数据库由1张包含记录的表组成,每个记录包含许多不同的属性,每个属性有3种信息:标志属性的ID号、类型和值。例如:

.Record:

Field:402001f:“{000214A0-0000-0000-C000-000000000046}”

Field:42020003:15

Field:42030003:2

End

属性数据库是一种平面结构,不能定义属性数据库之间的关系。使用Microsoft ActiveX Data Object for Windows CE(ADOCE)技术可以容量地访问属性数据库,甚至可以使用SQL语句查询信息。

2.4 目录分配表文件.DAT

.DAT文件定义Windows CE映像NK.NIB黑认的目录和文件结构。注意,Winodws CE不支持像Windows 9x/2000一样的盘符驱动器,而且没有当前目录的概念。例如:

root:-Directory("Program Files")

Directory("Program Files"):Directory("MY Work")

root:-Directory("My Documents")

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

生成2个根目录:Program Files和MyDocuments。Program Files有1个子目录:My Work。文件MyFile.DOC位于My Document目录中。注意MyFile.DOC必须出现在一个.BIB文件中,这样,映像文件中会有MyFile.DOC。

3 设置环境变量、生成映像文件NK.BIN

3.1 设置环境变量

在所有配置文件中,都存在条件语句IF Enviroment Value……END IF。当条件成立时,IF和END IF之间的信息包含在映像文件NK.BIN中;条件不成立时,则不包含相关模块和文件。通过设置环境变量可以添加或者删除NK.BIN中的模块和组件。以.BIB文件为例:

;Name Path Memory Type

;-------- ------------------------------------ ---------- ------

IFIMGUSB

IF CEPC_UHCI

uhci.dll $(_FLATRELEASEDIR).dll NK SH

ENDIF

IF CEPC_OHCI

ohci.dll $(_FLATRELEASEDIR).dll NK SH

ENDIF

usbd.dll $(_FLATRELEASEDIR).dll NK SH

usbhid.dll $(_FLATRELEASEDIR).dll NK SH

ENDIF

这里IMGUSB、CEPC_UHCI、CEPC_OHCI都是逻辑型环境变量。在PB中,可以使用2种方法设置环境变量。方法1:点击Platform菜单的Setting…,打开平台设置对话框,分别输入Variable和Value设置环境变量。方法2:点击Build菜单的Open Build Release Directory,打开命令提示窗口,在命令提示窗口中设置环境变量。在命令行中输入SETIMGUSB=1,动态链接库usbd.dll和usbhid.dll被包含到映像文件NK.BIN。uhci.dll和ohci.dll是否包含在NK.BIN中,取决于环境变量CEPC_UHCI和CEPC_OHCI的设置。如果SET IMGUSB=0,KN.BIN中不包含上述4个动态链接库。

3.2 Makeimg.exe工具

生成映像文件NK.BIN是平台创建过程的最后一步,也是配置Windows CE的最终目标。Makeimg.exe使用全部配置文件把目标模块和文件合并成一个惟一的Windows CE映像文件NK.BIN。图1所示为NK.BIN的生成过程。

Makeimg生成NK.BIN的具体步骤:

①全并配置文件:所有的.BIB文件合并成CE.BIB。CE.BIB包含映像NK.BIN中的所有文件;所有.REG文件合并成REGINIT.INT;所有.DAT文件合并在修改配置文件时,一定要注意CE.BIB、REGINIT.INI、INITOBJ.DAT、INITDB.INI是是间文件,修改这些文件不能配置Windows CE。

②将REGINIT.INI文件压缩成一个二进制文件DEFAULT.FDF。

③根据环境变量COUNTRY的设置,替换模块中的资源,使Windows CE映像满足特定语言的需要,最后生成二进制映像文件NK.BIN。

4 修改配置文件添加RTL8139网卡驱动

由于Windows CE具有完全不同于其它Windows操作系统的内核,在其它操作系统上运行的设备驱动程序不能在Windows CE上直接运行。原设备驱动程序代码必须经过适当修改或者全部重写以后才能在Windows CE系统上运行。Windows CE支持2种类型的设备驱动程序;本机设备驱动程序和流接口设备驱动程序。本机设备驱动程序通常与基于Windows CE的目标平台有着紧密的连接,而且每种本机设备驱动程序有精确的和特殊的目标的,这部分驱动程序一般由原始设备制造商(OEM)提供。流接口设备驱动程序是在用户一级的动态链接库(DLL),用于驱动可安装的外围市长。RTL8139网卡驱动程序是流接口设备驱动程序。使用Platform Builder或者Embedded Visual C++ 3.0生成RTL8139网卡驱动程序RTL8139.DLL.将(_FLATRELEASEDIR)中,分别修改Platform.BIB和Platform.REG。

①向Platform.BIB文件中添加下列语句:

MEMORY

RTL8139 8090000 00010000 RESERVED

MODULES

Rtl8139.dll $(_FLARTELEASEDIR).dll NK SH

②向Platform.REG中添加下列语句:

[HKEY_LOCAL_MACHINE]

“DisplayName”=“Realtek RTL8139 based Fast

Ethernet Driver”

“Group”=“NDIS”

“ImagePath” = “rtl8139.dll”

[HKEY_LOCAL_MACHINE]

“Route” = “Rmulti_sz: TL81391”

[HKEY_LOCAL_MACHINE]

“DisplayName” = “Realtek RTL8139 based Fast Ethernet Driver”

“Group” = “NDIS”

“ImagePath” = “rtl8139.dll”

[HKEY_LOCAL_MACHINE]

“BusNumber”= dword:0

“BusType”=dword:5

“ScanMethod”=dword:0

“SharedInterrupt”= dword:1

“PhysicalAddressBase”=dword:001a0000

[HKEY_LOCAL_MACHINE]

“EnableDHCP”=dword:0

;MULTI_SZ类型

“DefaultGateway”=“”

;0代表广播地址(或者255.255.255.255)

“UseZerBroadcast”=dword:0

;NULTI_SZ类型,IP地址

“IpAddress”=“202.2.4.77.16”

;MULTI_SZ类型,上面IP地址的子网掩码

“Subnetmask”=“255.255255.0”

[HKEY_LOCAL_MACHINE]

“Bind”=multi_sz:“RTL81391”

③Makeimg生成NK.BIN

在命令提示窗口输入Makeimg命令,生成新的Windows CE映像NK.BIN。下载NK.BIN到目标平台,通过以太网电缆直接连接开发工作站网卡和目标平台的RTL8139网卡。FRTL8139网卡的IP地址必须和开发工作站的IP地址在同一子网中,这样,在开始工作站运行ping命令时才会有响应。

5 总结

微软Windows CE Platform Builder 3.0集成开发环境包含一系列开发工具、上下文相关菜单、工具栏和快捷键。Platform Builder创建、测试、裁剪Windows CE的平台和组件。熟练使用Platform Builder提供的配置文件和开发调试工具可以快速定制适合目标平台的Windows CE操作系统,缩短平台开发周期。适当修改和设置Platform Builder的配置文件.BIB、.REG、.DAT、.DB可以裁剪和添加相关组件,正确配置各种设备驱动程序。Windows CE一般应用于特定的嵌入式系统中,在许多情况下需要向目标平台添加外部设备和设备驱动程序。本文通过修改Platform.BIB和Platform.REG配置文件在Windows CE中加入RTL8139网卡驱动程序。开发Windows CE的软硬件环境建立之后,把工作站通过插入到目标平台的PCI插槽中,开始工作站通过插在目标台上的NE2000兼容网卡下载映像文件NK.BIN到目标平台。Windows CE下常启动以后,网络电缆改成和RTL8139网卡连接。开发工作站和目标平台之间使用PPP协议正常通信。

阅读(1408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~