您现在的位置:融合网首页 > 芯片 > 技术 >

WinCE启动失败原因与解决办法

来源:融合网|DWRH.net 作者:21ic 责任编辑:admin 发表时间:2011-06-10 09:00 
核心提示:本文通过一个真实的嵌入式项目进行说明。文中的嵌入式系统用的是ARM处理器+WinCE平台,项目的目的是要把WinCE平台从旧版本移植到WinCE6.0平台上。但结果是这个WinCE系统在启动的时候经常会出现失败,而且每次失败的原因都莫明其妙和不尽相同。这使到我们开发

本文通过一个真实的嵌入式项目进行说明。文中的嵌入式系统用的是ARM处理器+WinCE平台,项目的目的是要把WinCE平台从旧版本移植到WinCE6.0平台上。但结果是这个WinCE系统在启动的时候经常会出现失败,而且每次失败的原因都莫明其妙和不尽相同。这使到我们开发团队每个人在启动WinCE系统时都心惊肉跳,非常担心系统又再一次出现让人意想不到的失败。这种频繁的启动失败对开发团队来说显然是一种让人难以忍受的折磨。

为什么会出现这种情况呢?经过几个晚上通宵达旦的加班分析和研究,原来主因是系统的引导过程、内核加载过程、OAL启动过程和硬件驱动加载过程时都存在可能导致的失败的隐忧。本文通过对以上因素进行分析,并提出相应的解决办法。但由于WinCE启动失败会非常取决于硬件平台,因此在具体应用时需要综合考虑和分析。

一、什么是WinCE启动过程?

WinCE系统在启动时一般需要三个基本元素:引导初始化、内核加载和OAL初始化等。它们的作用是要完成引导过程的初始化和操作系统执行环境的初始化。其中引导初始化是由引导工具BootLoader完成,主要是完成板级、片级的初始化。例如,通过设置寄存器来完成硬件的初始化,如设置时钟、设置中断控制寄存器、完成内存映射和初始化MMU的工作方式等。内核加载是指将操作系统内核映像从只读存储器加载或者拷贝到系统的RAM中并执行。OAL(OEM Adaption Layer,即原始设备制造商适配层)是位于操作系统的内核与硬件之间的适配层,也是连接系统内核与硬件的枢纽,它具有屏蔽硬件设备细节以及抽象硬件功能的作用。而OAL初始化则是指通过一组函数来体现出0AL屏蔽和抽象硬件设备的作用。

此外,如果要WinCE系统成为完整的操作系统,还得加上硬件驱动程序、硬件接口程序和应用程序组。因此,即使在一个简单的嵌入式系统里,WinCE系统启动时是需要加载内核和加载许多组件或驱动程序。

现在让我们来看看WinCE系统在启动时调用函数的顺序:①CPU执行引导向量,跳转到硬件初始化代码,即Startup函数。②在start up函数完成最小硬件环境初始化后跳转到KernelStart函数,来对内核进行初始化。③Kernelstart函数调用OEMInitDebugSerial完成对调试串口的初始化;同时调用0EMInit函数来完成硬件初始化工作以及设置时钟、中断;最后,调用OEMGetExtensionDRAM函数来判断是否还有另外一块DRAM。至此,内核加载完毕。由此可见,WinCE系统启动的重中之重是Startup函数的正确加载,如果这个Startup函数调用失败,则会使到系统在启动频繁出错。WinCE启动时调用函数顺序如下图所示:

因此,WinCE启动失败可能会存在于引导初始化失败、内核加载失败、0AL函数初始化失败、驱动程序加载失败、组件加载失败和应用程序加载失败。也就是说,WinCE启动失败一方面可能是在Startup函数的处理上,例如引导初始化和OAL初始化。另一方面还存在于驱动程序和组件自启动的失败上,例如基本的驱动程序、注册表配置或自运行的程序等。

就不能被使用。所以,当注册表在启动时加载错误或者注册表配置有错误时,也是会导致WinCE系统启动失败的。

二、导致WinCE启动失败的主因分析

Windows CE在启动时为什么会失败呢?这个问题也一直让我头痛。因为Windows CE启动失败既有软件因素,也有硬件因素。例如,可能是WinCE的启动引导过程有问题、也许是内核加载时有问题、也许是OAL函数调用的隐性问题或者硬件设备本身的问题造成的。所以,解决起来比较麻烦和比较耗时间,也是最让我们头疼的事情。

一般来说,解决和分析WinCE启动失败有一个原则,就是"先软后硬"的原则,也就是说要先分析软件因素再到硬件因素。本文主要是在arm微处理器和Windows CE 6.0平台上进行分析软件因素造成的失败。(责任编辑:admin)

  • “扫一扫”关注融合网微信号

免责声明:我方仅为合法的第三方企业注册用户所发布的内容提供存储空间,融合网不对其发布的内容提供任何形式的保证:不保证内容满足您的要求,不保证融合网的服务不会中断。因网络状况、通讯线路、第三方网站或管理部门的要求等任何原因而导致您不能正常使用融合网,融合网不承担任何法律责任。

第三方企业注册用户在融合网发布的内容(包含但不限于融合网目前各产品功能里的内容)仅表明其第三方企业注册用户的立场和观点,并不代表融合网的立场或观点。相关各方及作者发布此信息的目的在于传播、分享更多信息,并不代表本网站的观点和立场,更与本站立场无关。相关各方及作者在我方平台上发表、发布的所有资料、言论等仅代表其作者个人观点,与本网站立场无关,不对您构成任何投资、交易等方面的建议。用户应基于自己的独立判断,自行决定并承担相应风险。

根据相关协议内容,第三方企业注册用户已知悉自身作为内容的发布者,需自行对所发表内容(如,字体、图片、文章内容等)负责,因所发表内容(如,字体、图片、文章内容等)等所引发的一切纠纷均由该内容的发布者(即,第三方企业注册用户)承担全部法律及连带责任。融合网不承担任何法律及连带责任。

第三方企业注册用户在融合网相关栏目上所发布的涉嫌侵犯他人知识产权或其他合法权益的内容(如,字体、图片、文章内容等),经相关版权方、权利方等提供初步证据,融合网有权先行予以删除,并保留移交司法机关查处的权利。参照相应司法机关的查处结果,融合网对于第三方企业用户所发布内容的处置具有最终决定权。

个人或单位如认为第三方企业注册用户在融合网上发布的内容(如,字体、图片、文章内容等)存在侵犯自身合法权益的,应准备好具有法律效应的证明材料,及时与融合网取得联系,以便融合网及时协调第三方企业注册用户并迅速做出相应处理工作。

融合网联系方式:(一)、电话:(010)57722280;(二)、电子邮箱:2029555353@qq.com dwrh@dwrh.net

对免责声明的解释、修改及更新权均属于融合网所有。

相关新闻>>

    热门关键字

    关于我们 - 融合文化 - 媒体报道 - 在线咨询 - 网站地图 - TAG标签 - 联系我们
    Copyright © 2010-2020 融合网|DWRH.net 版权所有 联系邮箱:dwrh@dwrh.net 京公网安备 11011202002094号 京ICP备11014553号