基于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
发表评论
-
Windows Mobile Test Framework实现手机软件自动化测试的介绍
2012-01-20 00:23 661Windows Mobile Test Framework实现 ... -
Android2.2+Eclipse windows xp环境配置,加部分问题解决办法(图文)
2012-01-20 00:23 699Android2.2+Eclipse windows xp ... -
现实世界:Windows Azure角色的启动生命周期
2012-01-20 00:23 639现实世界:Windows Azure角色的启动生命周期 20 ... -
Windows Azure 基本概念浅析
2012-01-20 00:23 560Windows Azure 基本概念浅析 2011年04月1 ... -
感恩,让生命之花更加美丽(演讲稿)
2012-01-19 01:20 671感恩,让生命之花更加美 ... -
《弟子规》的演讲稿
2012-01-19 01:19 778《弟子规》的演讲稿 2010年10月22日 《弟子规》 ... -
演讲稿
2012-01-19 01:19 665演讲稿 2011年06月11日 六月里阳光明媚,六月里花 ... -
mod_python3.2.8中文手册(5、6)
2012-01-17 00:36 800mod_python3.2.8中文手册(5、6) 2011年 ... -
mod_python3.2.8中文手册(1、2、3)
2012-01-17 00:36 797mod_python3.2.8中文手册(1、2、3) 201 ... -
转载:OpenGL显示文字
2012-01-17 00:36 927转载:OpenGL显示文字 2010年07月03日 本课 ... -
hive基础
2012-01-17 00:36 542hive基础 2011年07月11日 ... -
7月16号 键盘按键失灵? 蓝屏的终极处理?
2012-01-17 00:36 9767月16号 键盘按键失灵? 蓝屏的终极处理? 2011年07 ... -
31种方法让你变聪明
2012-01-15 14:59 68831种方法让你变聪明 201 ... -
web开发过程中要注意的问题
2012-01-15 14:59 786web开发过程中要注意的问题 2009年08月29日 1 ... -
2010-05-26 http://hi.baidu.com/814241277
2012-01-15 14:59 7322010-05-26 http://hi.baidu.com/ ... -
做个第三眼美女
2012-01-15 14:58 500做个第三眼美女 2011年0 ... -
JS获取远程xml信息是提示“没有权限”的解决方案,但是我的还说没解决
2012-01-15 14:58 1133JS获取远程xml信息是提示“没有权限”的解决方案,但是我的还 ...
相关推荐
内容概要:本文提供了详细的MongoDB分片集群的搭建指导,涵盖了从环境准备、配置文件编写、副本集的建立、主节点的选择、配置服务器和数据分片服务器的配置到最后的路由节点的搭建与操作整个流程,以及对数据库的哈希与范围两种分片策略的应用介绍和具体命令执行。 适合人群:熟悉NoSQL数据库概念并对MongoDB有一定了解的技术人员,尤其是在大型数据管理和分布式数据库架构设计中有需求的开发者。 使用场景及目标:帮助技术人员掌握构建高效能、高可用性的MongoDB分片集群的方法,适用于处理大规模、实时性强的数据存储与读取场景。 其他说明:文中通过实例演示了每个步骤的具体操作方法,便于跟随文档实操,同时也介绍了可能遇到的问题及其解决方案,如在没有正确配置的情况下试图写入数据时出现错误等情况的处理。
CPPC++_嵌入式硬件的物联网解决方案blinker库与Arduino ESP8266 ESP32一起工作
CPPC++_逆向调用QQ Mojo IPC与WeChat XPlugin
CPPC++_现代活动指标
CPPC++_Xournal是一款手写笔记软件,支持PDF注释,使用C语言编写,支持GTK3,支持Linux,如Ubu
资源概述: 本资源提供了一套完整的学生实习管理系统解决方案,涵盖了前台小程序页面与后台管理系统两大模块。前台小程序页面设计简洁直观,用户可根据不同身份(学生或企业)进行登录。学生用户能够方便地浏览并投递感兴趣的实习岗位,而企业用户则能轻松发布实习信息,吸引优秀人才。后台管理系统功能全面,包括个人中心、首页、学生管理、教师管理、企业管理、招聘管理、评分管理以及实习管理等多个方面,为管理员提供了强大的数据管理和操作工具。 技术栈亮点: SSM框架:系统后台采用Spring、Spring MVC和MyBatis Plus(简称SSM)作为核心开发框架,确保了系统的稳定性、可扩展性和可维护性。Spring作为控制反转(IoC)和面向切面编程(AOP)的容器,为系统提供了强大的业务逻辑处理能力;Spring MVC则负责处理Web请求和响应,实现了前后端的分离;MyBatis Plus作为持久层框架,简化了数据库操作,提高了开发效率。 MySQL数据库:系统采用MySQL作为数据库存储解决方案,支持大数据量的存储和高效查询。 如有侵权请联系我删除,谢谢
微服务闪聚支付项目
博客链接 https://blog.csdn.net/weixin_47560078/article/details/143714557 文章从原理介绍出发,实现了 Rust 与 Java 的互调。利用 JNI 技术,可以充分发挥 Rust 的性能优势,同时保持 Java 的跨平台特性。这种技术组合适用于对性能要求较高的应用场景,如图像处理、数据分析和系统级编程等。
cppc++
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
分布式事务lcn
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
cppc++
安卓手机与电脑的socket通信源码
Anaconda:JupyterNotebook使用教程.docx
Amazon S3:S3静态网站托管教程.docx
Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。 Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析
CPPC++_wechathookWeChatApi微信Api微信hook微信接口python微信接口java微信Ap