Memory Initialization (Windows Embedded CE 6.0)

1/5/2010

The kernel initializes any multiple XIP regions by reading OEMRomChain. The kernel checks RAM to determine if this is a cold boot or warm rest.

For more information, see Multiple XIP Regions

If this is a cold boot, the following actions take place:

  • A debug string is sent. The following example code shows the debug string:

    "Old or invalid version stamp in kernel structures - starting clean!"
    
  • The kernel memory structures are set up to indicate a cold boot.
    Filesys.exe will use this information later to determine if the object store is a cold or warm boot.

  • Kernel calls OEMGetExtensionDRAM.
    The kernel calls to determine if there is a second, noncontiguous memory section available to the kernel.

  • If pNKEnumExtensionDRAM is assigned a function pointer then this function is called, and not OEMGetExtensionDRAM to add up to 16 memory sections.
    The kernel can only address 512 MB of memory.

  • Calculate the amount of memory that will be allocated to the object store.
    You can calculate the amount of memory by using the information in Config.bib called FSRAMPERCENT.

  • pOEMCalcFSPages is called to provide an opportunity to override this value based upon information gathered at boot time.
    Memory is divided between the program space and the object store and the object store can only be allocated a total of 128 MB of memory.

If this is a warm boot, the following events occur:

  • The previous memory configuration is used.
  • CacheSync(0).
  • Zeros memory.
  • Zero only the amount of memory specified by the OEM in dwOEMCleanPages.

See Also

Concepts

Other Kernel Tasks
Kernel Initialization