WinCE启动失败原因与解决办法(2)
(1)引导程序BootLoader导致的失败
在Windows CE系统中,整个系统的加载启动任务由BootLoader来完成,BootLoader是在WinCE内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图和初始化MMU等。从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好环境。因此,只有在引导程序正确的完成自己的任务后,才会将控制权移交给内核。
在WinCE平台上,引导装载程序是在硬件上执行的第一段代码,通常将引导程序放置在不易丢失的存储器的开始地址或者是系统冷启动时PC寄存器的初始值。如果这段小程序代码编写错误,则系统无法完成第一步的引导操作,这是导致启动系统失败的第一个因素。
①BootLoader初始化硬件失败
BootLoader第一个功能是要实现板级和片级初始化硬件,主要是把CPU初始化到一已知状态。在BootLoader目录下,会发现一些.s文件,可能会是init.s或者是reset.s等,这样的文件是CPU加电后最先执行的代码。StartUp 函数是BootLoader的入口函数。该函数一般是使用汇编语言编写,与CPU关系非常紧密,能完成初始化CPU、内存等核心硬件。然后,BootLoader在平台初始化完毕后就可以在不用人工干预的情况下自动加载WinCE内核了。但如果BootLoader在初始化硬件时失败,就会直接导致系统的启动失败了。
②BootLoader加载内核时失败
一般在平台调试完毕后,BootLoader就会加载WinCE内核映像,这也是BootLoader的功能之一。WinCE内核映像文件通常叫做nk.bin,它是Windows CE二进制数据格式文件,不仅包含了有效的程序代码,还有按照一定规则加入的控制信息。
在系统启动时BootLoader可以通过两种不同的方式来加载WinCE内核文件nk.bin。一种是下载模式,另一种是本地启动模式。本地启动模式也称为自主模式,即 BootLoader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。而下载模式则是目标机上的 BootLoader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件。当BootLoader正确的把nk.bin解压到RAM后,就会把CPU控制权交给CE内核。因此,如果Boot Loader处理不当,就可能会造成加载和解压nk.bin文件的失败,这样自然也就会造成系统启动的失败了。
(2)OAL导致的启动失败
OAL(OEM Adaptation Layer)是指OEM 适配层,它是位于Windows CE内核和硬件之间的一层适配层,是OAL各个模块代码被编译后(.lib)和其它内核库链接到一起形成Windows CE的内核可执行文档NK.EXE。OAL包括了和系统硬件通讯的最底层代码,内核是通过OAL跟硬件进行交互。逻辑上,OAL是介于CE内核和设备硬件之间的一个代码层,是一个抽象的概念。物理上,OAL和其它一些库一起链接成可执行文件。
与以前的Win CE旧版本不同的是,在Win CE 6.0中内核(Kenerl)和OEM代码被分成oal.exe、kernel.dll和kitl.dll三个部分,其中启动代码(startup)和 OAL层的实现部分不再与内核链接生成NK.exe,取而代之的是启动代码(startup)和硬件相关且独立于内核的OAL层的实现部分编译成 oal.exe;而与内核相关且独立于硬件的OAL层代码包含在kernel.dll中,内核无关传输层(KITL)的支持代码从OAL层分离出来编译成 kitl.dll。因此,WinCE6.0的启动只与oal.exe和kernel.dll有关。至于kitl.dll,只有将操作系统编译成具有 KITL功能时才用到。这样做的好处是可以单独升级OAL,但整体的OAL结构并没有改变。
①OAL初始化硬件时失败
oal.exe是通过Startup函数来完成硬件的初始化。一般来说,OAL的启动代码(Startup.s)与该硬件平台的Bootloader的启动代码(Startup.s)是可以共享的。例如,其中PreInit 函数主要完成将ARM处理器工作模式切换到管理员模式,同时关闭MMU,并检测系统启动原因。如果是热启动,即在该函数调用之前已经启动过 Bootloader的启动代码(Startup.s),相当基本硬件初始化已经完成,则可直接跳转到OALStartUp函数中;否则需要进行硬件中断屏蔽、内存、系统时钟频率、电源管理等硬件的基本初始化过程。(责任编辑:admin)
- “扫一扫”关注融合网微信号
免责声明:我方仅为合法的第三方企业注册用户所发布的内容提供存储空间,融合网不对其发布的内容提供任何形式的保证:不保证内容满足您的要求,不保证融合网的服务不会中断。因网络状况、通讯线路、第三方网站或管理部门的要求等任何原因而导致您不能正常使用融合网,融合网不承担任何法律责任。
第三方企业注册用户在融合网发布的内容(包含但不限于融合网目前各产品功能里的内容)仅表明其第三方企业注册用户的立场和观点,并不代表融合网的立场或观点。相关各方及作者发布此信息的目的在于传播、分享更多信息,并不代表本网站的观点和立场,更与本站立场无关。相关各方及作者在我方平台上发表、发布的所有资料、言论等仅代表其作者个人观点,与本网站立场无关,不对您构成任何投资、交易等方面的建议。用户应基于自己的独立判断,自行决定并承担相应风险。
根据相关协议内容,第三方企业注册用户已知悉自身作为内容的发布者,需自行对所发表内容(如,字体、图片、文章内容等)负责,因所发表内容(如,字体、图片、文章内容等)等所引发的一切纠纷均由该内容的发布者(即,第三方企业注册用户)承担全部法律及连带责任。融合网不承担任何法律及连带责任。
第三方企业注册用户在融合网相关栏目上所发布的涉嫌侵犯他人知识产权或其他合法权益的内容(如,字体、图片、文章内容等),经相关版权方、权利方等提供初步证据,融合网有权先行予以删除,并保留移交司法机关查处的权利。参照相应司法机关的查处结果,融合网对于第三方企业用户所发布内容的处置具有最终决定权。
个人或单位如认为第三方企业注册用户在融合网上发布的内容(如,字体、图片、文章内容等)存在侵犯自身合法权益的,应准备好具有法律效应的证明材料,及时与融合网取得联系,以便融合网及时协调第三方企业注册用户并迅速做出相应处理工作。
融合网联系方式:(一)、电话:(010)57722280;(二)、电子邮箱:2029555353@qq.com dwrh@dwrh.net
对免责声明的解释、修改及更新权均属于融合网所有。