`
zdw624ma
  • 浏览: 12780 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

基于Windows CE .net平台的嵌入式系统的定制和裁剪

 
阅读更多

基于Windows CE .net平台的嵌入式系统的定制和裁剪
2010年08月11日
  摘  要: 创建和定制Windows CE .net嵌入式操作系统的方法。此方法对于Windows CE嵌入式平台的研究、开发和定制具有良好的借鉴作用。
  关键词: Windows CE  嵌入式操作系统  定制  裁剪
  Microsoft Windows CE .net是Windows CE 3.0的后续产品,它不仅是一个功能强大的实时嵌入式操作系统,而且提供了众多开发调试工具,允许用户利用它快速开发新一代的智能化设备。借助于完善的操作系统功能和开发工具,Windows CE .net为开发人员提供了构建、调试和部署基于Windows CE .net定制设备所需的一切特性。平台开发工具Platform Builder是一个完全集成的开发环境(IDE),并且包括一个软件开发工具包(SDK)导出工具。
  平台向导(Platform Wizard)允许开发人员根据将要创建设备的类型简便快捷地建立新的平台。该向导提供了12个预建配置,以便为设备设计提供一个基础。这些设备包括:数字媒体接收设备、企业终端、企业Web Pad、网关、工业控制设备、Internet设备、IP电话、移动手持设备、移动电话、机顶盒、微内核、Windows瘦客户机。
  由于微软对嵌入式操作系统研发力量的增强,CE的优势越来越明显:实时处理能力不断增强(在使用Pentium 166 MHz处理器时,ISR延迟平均为2.8ms,IST延迟平均为17.9ms)、强大的多媒体能力、可伸缩的无线技术支持、针对小内存体积占用进行优化(最小200KB)、具有适应性的可定制用户界面、丰富的设备驱动程序、强大的应用程序开发等。因此,Windows CE在嵌入式系统的市场占有率越来越高。
  1  创建Windows CE .net的主要步骤
  创建一个基于Microsoft Windows CE .net的操作系统,必须完成下面几个主要步骤:(1)选择一个标准的开发版(SDB)作为模板,创建一个Windows CE的平台。(2)使用备选的工程及目录中列举的特色,对平台进行定制。(3)编译并Build镜像文件(image),并将它下载到SDB。采用在Platform Builder集成开发环境中的Debug工具调试平台。(4)为特定的目标设备创建一个boot loader以及板支持包(BSP)。(5)用新的BSP重新编译(Rebuild)操作系统镜像,并将它下载进入目标设备,调试这个平台。(6)当平台创建完毕的时候,输出软件开发包(SDK),以便在开发平台应用程序时使用。
  在一个典型的平台开发方案中,可以首先下载自己的操作系统镜像到硬件平台,例如基于PC的Windows CE硬件开发平台(CEPC)。Platform Builder包括了boot loaders、CEPC板支持包以及许多别的硬件开发平台。在硬件平台上精简而且调试好开发平台后,就可以将它应用于自己的特定目标设备。在下载镜像到目标设备之前,用户必须创建一个boot loader以及OEM适配层OAL。OAL是指操作系统kernel和目标平台之间的连接层。一旦完成了平台创建,就可以输出一个SDK,应用程序开发人员可以将此SDK安装到Microsoft eMbedded Visual C++ 4.0或者Microsoft Visual Studio.Net的Smart Device Extensions等开发系统中,用以编写基于该平台的应用程序。图1描述了采用Platform Builder创建一个基于Windows CE平台的过程。
  
  2  定制适合自己的操作系统
  由于微软提供了良好的平台向导,本文不再对这些过程进行叙述,仅对创建过程中的关键问题进行说明。
  2.1 自动载入应用程序
  很多设备需要在操作系统启动时,自动载入自己的应用程序。有的CE系统本身就没有标准的CE界面,更需要自动加载自己的应用程序作为设备启动界面。需要在操作系统启动时加载的文件一般放在注册表的键[HKEY_LOCAL_MACHINEinit]下面,例如:[HKEY_LOCAL_MACHINEinit]
  ″Launch50″=″explorer.exe″
  ″Depend50″=hex:14,00,1e,00
  这些文件是系统启动时运行的程序。其中Launch后的数字越小,运行越早;Depend的值说明这个程序要依赖前面的哪些程序。一般有Launch10 SHELL.EXE、Launch20 DEVICE.EXE、Launch30 GWES.EXE、Launch50 EXPLORER.EXE四个模块需要启动。
  以上这些模块都是标准的用户级进程,因此可以在这个阶段添加自己的应用程序,也可以在DEVICE.EXE之后、GWES.EXE之前启动一个任意的应用程序App.exe。但是该应用程序必须没有调用GWES.EXE和EXPLORER.EXE中定义的图形和Windows资源管理器的功能,否则该应用程序不能正常运行。EXPLORER.EXE是CE标准的Shell,在其之前和之后启动一个具有标准用户接口的应用程序时都会出现问题。EXPLORER并不能处理在其之前创建的可见的、顶级的窗口应用。由于EXPLORER.EXE装载之后需要执行某些特定的初始化操作,因此在其后随即启动的带有用户接口的应用也不能正常执行。但在其之前和之后可以启动没有用户接口的应用程序,例如通信监控程序。
  EXPLORER.EXE执行之后,启动过程从注册表切换到文件系统。在初始化完桌面和任务栏窗口之后,它会在目录windowsstartup中寻找任何可以执行的应用程序或其快捷方式,因此可以把需要开机启动的应用或其快捷方式放在该目录中。方法如下:
  在platform.dat文件中加入以下程序:
  Directory(″WindowsStartUp″):-File(&Pri me;sample.exe″,
  ″windowssample.exe″)
  其中:路径″WindowsStartUp″代表启动菜单,路径″WindowsPrograms″代表程序菜单。
  2.2 改变盘符名称
  如何改变硬盘、电子盘、CF卡等的盘符名称,是平台必须考虑的问题,因为有些应用程序对于盘符的名称要求是固定的。
  以改变CF盘盘符为例,也可以改变CF ATAPI驱动的注册表设置,其位置为:
  [HKEY_LOCAL_MACHINESystemStorageManager
  ProfilesATA]
  ″Name″=″ATAPI Device″
  ″Folder″=LOC_STORE_HD_FOLDER
  将LOC_STORE_HD_FOLDER改为需要的盘符,例如"Compact flash"等。
  2.3 设置存储设备
  任何嵌入式设备都需要存储设备存储信息。由于CF卡之外的其他设备都有比较明确的驱动模块,所以这里仅对加入CF卡设备进行说明。如果要加入CF设备,首先需要加入Storage Devices/Compact Flash/PC Card Storage(ATADISK)特色,这是必要条件。另外还需要PCMCIA支持,因为CF卡接口是PCMCIA的扩展。如果PCMCIA控制器不属于微软支持之列,则还需要编写驱动程序来驱动特定的硬件。不要加入USB特色,因为它与CF卡或者ATAPI存储器没有关系。
  2.4 设置网络适配器
  网络化是嵌入式设备的发展方向,这里以Intel 82559ER单口网卡为例进行说明。
  首先用一个文本编辑器对CONFIG.BIB和PLATFORM.REG文件进行修改。网络适配器需要它自己单独地预留内存,这些信息在文件CONFIG.BIB中表示,其大小应该符合默认大小(大约120KB),而且不能和其他预留的内存相冲突。第二,网络适配器也需要在文件PLATFORM.REG中加入注册表信息,其中IP和网关的设置可以根据实际应用进行修改。第三,修改CE物理地址注册表数值与在CONFIG.BIB文件描述的内存范围的基地址相符合。在Windows CE .net系统中,PCI插槽不再需要通过注册表设置,系统可以通过列举PCI总线得到这些信息。同样,也不需要手动设置网络地址绑定、路由和连接等信息,这些都由操作系统负责处理。
  下面是将一块Intel Pro 10/100单口网络适配器加入系统的部分程序。
  
  
  2.5 调试控制面板程序
  如何调试Windows CE .net控制面板程序(Control Applet),对增强Windows CE .net的功能十分重要。Windows CE的控制面板程序是动态链接库(DLLS),可以通过三个步骤进行调试:(1)创建一个.exe文件去加载自己的.cpl文件。(2)在开发环境中Project->Settings->Debug设置"Executable for debug session"和"Remote executable path and file name"为该.exe文件名。(3)设置"Additional Dll′s"参数为要加载的.cpl或.dll文件。
  当然,也可以通过这个方法来调试别的.dll文件。
  2.6 编写设备驱动
  编写设备驱动的最好办法是在一个同类设备的驱动上进行改造。
  (1)复制一个设备的驱动,修改它的文件夹,换成需要的名字,这里包含*.c、*.h文件和源文件,更换*.c、*.h的内容,相应更换源文件的内容。
  (2)在Dir文件中加入自己的文件夹名字。
  *.c、*.h文件需自己生成,不会自动生成。source dir file可以用一些生成文件的程序生成。
  3  下载和调试操作系统
  3.1 准备工作
  确认CE目标机上是否装有MS-DOS 6.22。若没有,则按照以下步骤制作启动软盘:(1)准备一张空的软盘。(2)制作MS-DOS 6.22启动软盘。(3)在BIOS中设置计算机从软盘驱动器启动,使用软盘启动您的计算机,进入MS-DOS 6.22。(4)顺利进入到MS-DOS 6.22操作系统后,MS-DOS 6.22启动软盘(以下简称启动软盘)制作完成。
  3.2 制作CE目标机启动硬盘/CF卡/DOC
  (1)为CE目标机的硬盘/CF卡/DOC建立一个FAT16的主引导分区(注:使用启动软盘中的FDISK工具)。
  (2)将主引导分区格式化,并创建系统引导文件。例如:从启动软盘启动计算机后,使用"A:FORMAT C:/S"命令格式化目标硬盘/CF卡/DOC。
  (3)将启动软盘上的所有文件复制到目标硬盘/CF卡/DOC。
  (4)在文件Autoexec.bat中加入"loadcepc nk.bin",在文件Config.sys中加入"device=himem.sys"。将Himem.sys(ver 6.22)、loadcepc.exe拷贝进目标盘。
  (5)新建并编辑bootcepc.cnf文件,作为启动文件,并加入以下内容:
  N:NK BIN ;标记N:参数说明Loadcepc要加载的BIN文件名称。
  S:BOOTCEPC.bmp ;标记S:参数说明要显示的图片名称。
  L:640x480x16 ;标记L:参数为Windows CE启动后的显示分辨率。
  如果通过网络或者串口进行调试,也可以加入下面的参数:
  B:3 ;标记B:表示连接的波特率,在串口连接时使用。
  E:0:0:192.168.0.124 ;标记E:参数为网络下载指定本机IP地址。  (6)在BIOS中设置计算机从目标硬盘/CF卡/DOC启动。计算机使用目标硬盘/CF卡/DOC启动到MS-DOS6.22后,制作启动硬盘/CF卡/DOC完成。
  3.3 启动系统进行调试
  (1)将影像文件NK.BIN复制到CE目标机硬盘/CF卡/DOC引导分区。(2)重新启动计算机,使用CE目标机硬盘/CF卡/DOC引导系统。(3)调试操作系统。
  4  评估并发布操作系统
  4.1 定制启动画面
  如果要发布一个操作系统,就要改造其外观,加入设备名称、单位图标等标识。首先使用Photoshop或CorelDraw等图形制作工具制作自己的BMP图片,推荐图片分辨率为640*480和800*600,颜色深度为256色和24位真彩色;然后将图片复制到存放操作系统镜像的存储设备中,替换原有的标准界面文件;最后重新启动计算机。
  4.2 设置注册机制
  软件开发的成果需要保护,一般采用注册机制。注册序列号是根据每台设备硬件情况生成的。在提示注册页面上,根据每台设备的硬件组成,会出现数量不一的序列号码。一个最简单的办法是得到CPU ID或者存储设备(如硬盘的序列号),随机生成一个序列号,根据序列号经过加密算法解算注册码。一般可以通过kenealioctrl、GetVersionEx、GetSystemInfo等函数获得系统信息。具体用哪些数据,可以根据需要来确定。注册软件做好后还应该和操作系统集成。启动操作系统的同时启动输入序列号,只有输入了正确的序列号后才能正确使用。因为操作系统的镜像文件一般都是只读的,所以有些人将注册信息写入注册表中,实际是不可靠的,最好将其加密存入文件中的某个部位。
  4.3 集成嵌入式软件
  基于32位CPU的WinCE设备嵌入式软件由操作系统和应用程序(AP)二个部分组成。在Windows CE中体现为NK.bin和应用程序包AP,也可将AP集成到NK.bin中。这二种形式各自具备它们的优缺点,如表1所示。
  
  在可能的情况下,嵌入式软件或者应用程序应该集成在操作系统中,防止更改。当然,也可以单独存放。
  参考文献
  1  Boling D.Microsoft Windows CE程序设计.北京:北京大学出版社,1999
  2  Goggin T A.Windows CE高级开发指南.北京:电子工业出版社. 2000
  3  Microsoft.Windows CE通信指南.北京:希望电子出版社,1999
  4  Microsoft.How to Write and Use ActiveX Controls for Windows CE.http://www.microsoft.com/embeded.2003
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics