BSP Boot Sequence (Windows Embedded CE 6.0)
1/5/2010
The boot sequence starts from Oal.exe and then Kernel.dll completes the boot sequence.
Oal.exe
Oal.exe contains the system startup code and the OEM adaptation layer (OAL). It may optionally contain statically linked KITL support (OalKitl.exe) and/or profiling support.
Oal.exe bootstraps the platform and performs the following tasks:
- Calls StartUp to perform the following functions:
- Initialize DRAM/cache controller
- Perform minimal processor and hardware initialization
For ARM- and x86-based hardware platforms, the physical address of the OEMAddressTable needs to be passed as an argument. For hardware platforms that start from a boot loader, including all of the Windows Embedded CE supported hardware platforms, StartUp directly jumps to the KernelStart function as the DRAM or cache is already set up by the boot loader.
- Calls KernelStart to perform the following functions:
- Set up the MMU
- Locate pTOC
- Initialize globals
- Locate the entry point of Kernel.dll based on pTOC, and then jump to this location
Kernel.dll
As soon as the system enters Kernel.dll, the first thing it does is locate the OEMInitGlobals function, which is exported by Oal.exe.
Calling the OEMInitGlobals function exchanges global pointers between Oal.exe and Kernel.dll. From this point, the kernel has access to all the functions and data defined in OEMGLOBAL and can then proceed with the regular kernel bootup process that was in earlier versions of Windows Embedded CE.