基于Windows CE .net操作系统的嵌入式系统的定制

时间:2011-08-26

  Windows CE.net是美国微软公司专门为各种移动和便携电子设备、个人信息产品、消费类电子产品、嵌入式应用系统等非通刖计算机领域设计的一种32位高性能操作系统。它具有一个简捷、高效的完全抢先式多任务操作,支持强大的通信和图形显示功能,能够适应广泛的系统需求。与通用操作系统相比,WineE.net可靠性好,实时性高且内核体移小,因此被广泛用于各种嵌入式智能设备的开发。

  平台向导(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)选择一个合适的硬件平台。(2)根据该硬件平台的配置,对平台进行定制。(3)编译并Build镜像文件(image),并将它到SDB。采用在Platform Builder集成开发环境中的Debug工具调试平台。(4)为特定的目标设备创建一个boot loader以及板支持包(BSP)。(5)用新的BSP重新编译(Rebuild)操作系统镜像,并将它进入目标设备,调试这个平台。(6)当平台创建完毕的时候,输出软件开发包(SDK),以便在开发平台应用程序时使用。

  具体来说,创建一个嵌入式平台首先需要设计出硬件系统,然后开发相应的操作系统映像和应用程序。其中硬件设计的目标和标准是由产品的需求决定的。本文将不针对硬件部分,仅对操作系统的开发进行一定的探讨。在硬件设计成功以后,需要创建一个Windows CE.NET的平台,而定制一个基于Windows CE.NET的平台就涉及到组件的添加或裁剪。利用PB可以定制出各种各样的CE系统。PB中包含支持ARM、MIPS、SHx和x86四种CPU架构的多种BSPs。每一种BSP中都包含了多种特定的设备驱动程序和定制硬件的组件列表。用户可以利用一个预先配置好的BSP或者创建一个新的BSP,然后创建一个仅包含内核支持的操作系统(200KB左右),也可以创建一个包含复杂的图形用户界面(GUI)和预装了部分应用程序的系统(甚至超过64MB),或者是介于二者之间的系统。通常,在平台创建过程中,先要创建一个基本的操作系统映像文件,然后把它到目标开发板中,接着在目标硬件平台上进行修改和调试。通过增加或删除某些组件来定制目标平台上的操作系统。

  一旦完成了平台的定制,就可以在PB中导出SDK了。SDK导出向导会引导完成SDK的配置和构建过程,终产生一个包含了必要的头文件、库文件、平台管理组件、运行时库、平台扩展以及相关帮助文档的Windows安装程序文件包(.msi文件)。把此SDK安装到本地或者别的计算机上以后,应用软件开发者就可以在Visual Studio.NET或者Embedded Visual C++4.0环境下开发基于Windows CE平台的应用程序了。图3给出了用户定制的SDK、Platform Builder以及应用软件开发工具三者之间的关系。

  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(″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 定制启动画面

  操作系统的启动画面也是可以改变的。首先使用一些制图软件来制作自己的图片,但注意分辨率的要求,因为过高的分辨率可能导致图片存储过大。推荐图片分辨率为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]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.
[2]. cpl datasheet https://www.dzsc.com/datasheet/cpl_2043281.html.


上一篇:解析iPhone wap浏览器之界面架构
下一篇:解析运放式射频放大器

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料