OEM Adaptation Layer (Compact 7)
3/12/2014
The OEM adaptation layer (OAL) is the layer of code that adapts the kernel, which is generic to a type of CPU architecture (such as ARM or x86), to the specific CPU, or to a system-on-a-chip (SOC) that is used in your hardware platform. The OAL includes code to support timers, manage memory, clean and flush caches, get and set the time, and other hardware-dependent operations. Creating an OAL is a complex task in bringing up a hardware platform. In general, the best method is to copy the OAL implementation from a working OS design and modify it to suit your hardware platform.
Power Management
A Windows Embedded Compact powered device can be in one of five power states, which by default are named On, UserIdle, SystemIdle, Suspend, and Off/Reset. A change in the system power state can occur because a timer has expired, an application has requested a power state change, or a hardware event has occurred (such as the user pressing a reset button). The OAL participates in power management by responding to CPU idle and suspend requests, and system power-down and restart requests. The OAL does not change the power states of peripheral devices; changing the states is done by the Power Manager, which interacts with the device drivers to change their power consumption. The Power Manager can identify what power states a device and its peripheral devices are capable of, determine their current power states, request a new state, and validate that the driver can support the transition.
Timers
The OAL can manage time by interacting with the following three timers:
- The real-time clock (RTC) tracks the time of day and the date.
- The system timer tracks the number of milliseconds since system startup.
- The (optional) high-performance timer is needed for profiling.
Interrupts
The OAL implements interrupt handlers and interrupt service routines (ISRs). Windows Embedded Compact 7 can handle interprocessor interrupts (IPIs) to support symmetric multiprocessing (SMP). For more information, see Windows Embedded Compact 7 Symmetric Multiprocessing Guide.