认识OAL

  • Post author:
  • Post category:其他




1、OAL是什么?



MSDN的解释:

An OEM adaptation layer (OAL) is a layer of code between the Windows CE kernel and the hardware of your target device

我的理解:OAL是目标设备和系统内核间的代码层,从制作实现OAL的OEM函数就可以知道,内核(NK.LIB)定义了OEM函数的原型,比如OEMInit(),InitClock(), OEMIdle(),OEMIoControl等等,然后我们BSP开发者就要自己来实现这些函数的功能,而这些功能都是与具体硬件平台有关的。这样我们就将NK和硬件联系起来。OAL 与内核库(NK.LIB)一起连接为内核可执行程序(kern.exe),在编译成为make image 后,就一起构成了OS。




2、OAL要完成的主要任务有哪些?








主要实现:

中断处理程序


相关函数OEMInterruptHandler()、OEMInterruptDisable()、OEMInterruptDone()、OEMInterruptEnable()


电源管理部分


相关函数

OEMIdle()、OEMPowerOff()


IOCTL部分:


OEMIoControl ()


RTC:


OEMGetRealTime 、OEMSetAlarmTime 、OEMSetRealTime


。。。 。。。




3、如何实现OAL?



虽然基本上所有的工程师都会有现成的OAL代码,根本不用从零开始来做这个工作。但认识并理解他的实现过程是大有裨益的。因为OAL结构的复杂,所以不可能分开来讲述。最好是参看MSDN了。



4、学习帮助文档后,觉得值得记忆的东西:












1)config.bib文件



因为关于RAM的分配都是在config.bib里面完成的,所以,在实现OAL之前,该文件是要创建并完成的。

Config.bib should minimally specify the NK and RAM section address information. Romimage.exe uses this address information to know how to organize the OS to fit the hardware resources available on your standard development board (SDB).

The addresses in Config.bib must be virtual, not physical. ROMOFFSET should be used to ensure that the run-time image downloads to the correct physical RAM or flash memory location



2)startup函数的功能主要是:


StartUp initializes the CPU core, including the SDRAM controller, memory management unit (MMU), and caches. The function performs this in preparation for running the Windows CE kernel,其功能和BOOTLODER中的startup的功能基本一致,所以是可以共用的



版权声明:本文为Trueman_onlyme原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。