The kernel provides the base OS functionality for any Windows Embedded Compact based device. This functionality includes process, thread, and memory management. The kernel also provides some file management functionality. Kernel services enable applications to use this core functionality. The kernel binaries, as installed with Platform Builder, are CPU-specific. The BSP, through the OAL, enables the CPU kernel binary to be used by the specific target board. The kernel, through the OAL, can access hardware components that it needs, such as interrupts, timers, IOCTLs, and so on, as shown in Figure 35-7.
In CE 5, the kernel was a single binary with a different version that existed depending upon whether KITL and profiling were required. The kernel library (kernel.lib) was statically linked to the BSP’s OAL when the OS was built. Starting with CE 6, the kernel is dynamically linked at startup to the OAL, so only its DLL needs to be included in the image. There are three binaries: oal.exe, kernel.dll, and kitl.dll (refer to Figure 35-7). KITL is an optional component of the OS for development purposes.
Continuing the boot sequence at step 5 (as in the “Bootloader” section):
5. The OAL puts the CPU in a known state, initializes hardware, and initializes the kernel’s global variables.
6. The OAL locates the entry point of the kernel by using a table of contents and jumps ...