`
emowuyi
  • 浏览: 1482166 次
文章分类
社区版块
存档分类
最新评论

WinCE6.0 OAL的特点

 
阅读更多
WinCE6.0 OAL特点(转载)
2009-02-23 18:08
本文转载自http://www.cnblogs.com/we-hjb/archive/2008/10/25/1309596.html

WinCE6.0 OAL的特点

WinCE6.0OALWinCE5.0中的有较大差别。了解这些差别,对我们移植OAL部分很有帮助。本文将简要介绍WinCE6.0 OAL的特点。

WinCE5.0将内核、OALKITL链接成一个内核可执行文件NK.exe。而WinCE6.0将这三者分开,分别对应Kernel.dllOAL.exeKITL.dll。显而易见,这样做最大的好处是可以单独升级这三者中的任何一个,而先前的结构则是牵一发而动全身的。WinCE5.0OAL结构如图1所示:


1

WinCE6.0OAL结构如图2所示:

2
对比图1和图2,可以看到CE6.0OAL在功能上和CE5.0的基本一致,主要包括初始化、中断管理和IOCTL等。在图2中增加了NKStub.libNKGLOBALOEMGLOBAL等内容。这对于WinCE6.0是至关重要的。在CE5.0中,由于内核、OALKITL最终链接到一个可执行程序中,所以可以直接相互调用彼此的函数。这看起来很方便,但存在安全隐患,甚至在更新内核代码的时候会影响到OAL的执行。KernelOALKITL相互独立,则消除了这个安全隐患。现在,它们之间的通讯是通过包涵函数指针和变量值的全局结构变量来实现的。每个模块编译一个函数指针列表以提供给其他模块使用,而列表中没有的函数将不能被别的模块调用。内核模块导出列表NKGLOBAL,主要包括虚拟内存操作、注册表访问和字符串处理等一些内核API以及共享的全局变量。OAL只能调用该列表中包括的内核API。为了方便OAL代码的移植,微软将函数指针列表封装到NKStub.lib中。所以,我们在移植OAL代码时没有必要通过结构中的函数指针去调用内核APIOAL代码保持原来的函数调用方式。简单看一下NKStub.c的代码实现,下面是部分代码:

BOOL INTERRUPTS_ENABLE (BOOL fEnable)

{

return g_pNKGlobal->pfnINT_ENABLE (fEnable);

}

可以看到,OAL中调用相应的内核API时,NKStub将执行对应的结构中的函数指针。所以在编译OAL时,添加NKStub.lib后就可以跟以前一样使用这些内核函数。当然NKStub也包括了KITL中的相应函数列表,所以OAL也能使用KITL中的函数。

OAL导出了列表OEMGLOBAL,其中包括了OAL函数指针和全局变量。其中有很多函数指针是必须的,如果缺少,系统将不能正常工作。而另外有些函数指针则是可选的。具体内容可查看PB帮助的相应部分。OEMGLOBAL的定义在文件:C:\WINCE600\PRIVATE\WINCEOS\COREOS\NK\OEMMAIN\oemglobal.c中。

总结一下,CE6.0OAL从内核中独立出来,这样方便OAL的单独升级,也提高了安全性。由于内核、OALKITL相互独立,所以引入了NKGLOBALOEMGLOBAL这两个结构以支持模块间的函数调用。为了方便代码的移植,CE6.0提供了NKStub.libOEMStub.lib,他们做了从函数指针到函数的转换工作。所以,在移植BSP时,原来的代码可保持不变。

到这里,我们已经知道了WinCE6.0OAL的特点。实际移植时,还需要注意OAL的目录组织。这里将5.06.0 OAL部分的目录组织做一个对比。

CE5.0 OAL目录组织

对应文件

%_WINCEROOT%\platform\BSPNAME\src\kernel\oal

oal.lib

%_WINCEROOT%\platform\BSPNAME\src\kernel\kern

kern.exe

%_WINCEROOT%\platform\BSPNAME\src\kernel\kernkitl

kernkitl.exe

%_WINCEROOT%\platform\BSPNAME\src\kernel\kernkitlprof

kernkitlprof.exe

CE6.0 OAL目录组织

Builds

%_WINCEROOT%\platform\BSPNAME\src\oal\oallib

oal.lib

%_WINCEROOT%\platform\BSPNAME\src\oal\oalexe

oal.exe

%_WINCEROOT%\platform\BSPNAME\src\kitl

kitl.dll

其中,6.0OALLIB对应5.0OALOALEXE对应KernKITL对应Kernkitl。而5.0kernkitlprof6.0中一般放在oallib的目录下。在移植BSP时可参照该对应关系进行目录组织。

分享到:
评论

相关推荐

    2440 wince6.0移植文档

    wince6.0 2440 移植 OAL KITL 电池,背光,flash驱动

    Wince 6.0体系结构PPT文档

    描述了wince5.0和wince6.0的异同,及各自的体系结构,内存模式,OAL结构等

    WinCE6.0的EBOOT概要

    为一个新的硬件设备定制WinCE6.0操作系统,一般需要完成以下几个主要步骤: 1. 针对特定的硬件设备创建板级支持包(Board Support Package缩写为BSP),BSP必须包括BOOTLOADER、OEM适配层(OEM Adaptation Layer缩写为...

    wince 6.0 外部中断驱动

    ISR的实现在OAL(OEM适配层)中,它只处理最低级的中断响应,通常是获取IRQ和SYSINTR并设置MCU内部的中断控制寄存器。中断处理的主要部分在驱动或者应用的中断处理线程中。中断处理线程与其他普通线程一样,使用同一...

    wince_oal.pdf

    wince_oal.pdf Windows CE OAL 层的结构与开发 从板级系统移植的角度出发,概要介绍Windows CE移植过程中的重要环节OAL,并提出最小OAL、加 强OAL 和完整OAL 的概念; 在分析OAL 层结构的基础上, 提出一种由简到繁...

    WINCE6.0——配置BSP内存映射

    ■ 描述windows embedded CE是如何管理虚拟内存的。 ■ 为硬件平台配置正确的静态内存映射。 ■ 在系统中映射非连续的物理内存到虚拟内存上。 ■ 在OAL及设备驱动之间共享资源。

    微软WinCE6.0认证技术专家(MCTS)中文资料

    ■ 在应用程序、设备驱动程序、和 OEM 适配层 (OAL) 中支持电源管理。 ■ 配置 Board Support Package ( 板级支持包) (BSP),包括对启动加载器和内 存映射的自定义。 ■ 开发功能完备的流接口驱动程序。 ■ 实现 ...

    Microsoft WinCE6.0 Exam Preparation Kit for the Microsoft Certified Technology Specialist (MCTS)

    adaptation layer (OAL). ■ Configure a Board Support Package (BSP), including customizations to boot loader and memory mappings. ■ Develop full-featured stream interface drivers. ■ Implement ...

    Windows CE原创资料汇总

    解决WINCE6.0 远程工具不能使用ActiveSync连接 S3C6410 CE6.0移植 mfc多媒体测试程序 三星官方S3C6410 bsp资料 移植后源码 移植文档 其他 wince DriectX BusTransBusAddrToVirtual使用 CE4.2与CE5.0使用...

    windows CE 6.0的内核介绍及OAL开发

    windows CE 6.0的内核介绍及OAL开发

    OAL开发详解ppt

    OAL开发的详解ppt,想要详细了解OAL的开发吗?下吧,讲的很详细

    WinCE开发讲义.rar

    T01.WinCE体系结构.ppt T02.WinCE系统开发概述.ppt T03.设备驱动开发(1).ppt T04.设备驱动开发(2).ppt T05.Wince BSP开发.ppt T06.WinCE 网络与通信.ppt T07.定制WinCE Shell.ppt T08.开发WinCE应用程序.ppt ...

    wince培训教材 pdf

    创建自定义工程 实验2 添加USB鼠标及U盘驱动,添加多媒体支持 实验3 下载引导代码和Wince内核 实验4 使用远程工具分析系统特性 实验5 修改Wince选项卡配置实现内核模块的定制

    ARM与WinCE

    简要介绍ARM及其boot过程,然后结合代码详细介绍了WinCE的Eboot 及 OAL

    Windows Embedded从入门到精通系列课程(15):Windows CE 6.0的内核介绍及OAL开发

    CE6的新内核是微软针对下一代秱劢嵌入式应用而重新开发的,主要满足幵发仸务越来越多,内存使用越来越大的需要。本讲座介绍CE6的内核架杴,及不内核直接相关的OAL的开发。

    T17.CE.NET OAL开发.pdf

    T17.CE.NET OAL开发.pdfT17.CE.NET OAL开发.pdfT17.CE.NET OAL开发.pdf

    WinCE讲义(内部资料)

    T01.WinCE体系结构 T02.WinCE系统开发概述 T03.设备驱动开发(1) T04.设备驱动开发(2) T05.Wince BSP开发 T06.WinCE 网络与通信 T07.定制WinCE Shell T08.开发WinCE应用程序 T09.开发WinCE显示驱动 T10.CE.NET OAL...

    Python库 | oal-0.3.5-py2.py3-none-any.whl

    python库,解压后可用。 资源全名:oal-0.3.5-py2.py3-none-any.whl

    wince启动过程及romimage如何生成image

    绝对好文,对理解romimage, bootloader, oal, nk.exe, kernel.dll, 开发bootloader oal大有好处!!不限于简单的函数调用,对于romimage如何根据.bib加载和fix up各模块生成image,各个模块间如何协作启动,interlock ...

Global site tag (gtag.js) - Google Analytics