Startup and Initialization Code Implementation

When you port the boot loader to a target device, modify the target device initialization code in %_WINCEROOT%\Platform\<Platform Name>\Eboot\Eboot\Main.c. The initialization code varies depending on whether the target device can boot to an image that is already on the device (for example, in flash RAM) or whether it must always boot to the boot loader.

If a target device does not support boot selection and always boots to the boot loader, the boot loader must not corrupt the object store or system RAM.

The boot loader uses initialization code that is similar to the OAL (or shared with the OAL). The boot loader StartUp function performs power-on initialization, sets up the stack, and then calls the main function. The startup function also sets up the microprocessor by initializing the cache and boot loader's read/write data area and checking for any hardware switches that allow entry to the boot loader's firmware monitor.

The following code example, which describes the algorithm of themain boot loader function on the target device, shows the sample initialization code.

Initialize monitor port     // Platform-specific functions 
Send version information through the serial port 
Run Power On Self Test (POST) 

If POST passes        // POST returns 1 
   If autodownload  
      Download image 
      Jump to image entry point
   Else 
      Jump to existing image entry point
   Endif
Endif

See Also

Implementing the Boot Loader StartUp Function | Ethernet Boot Loader

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.