XIP Chain (Windows Embedded CE 6.0)
1/6/2010
The execute-in-place (XIP) chain is a list of XIP regions that reside in flash memory or RAM and is accessible from the OEM adapatation layer (OAL) by the OEM.
More specifically, the first DWORD at ROM_CHAIN_OFFSET in the chain region is the number of XIP regions and the rest of the chain is an array of XIPCHAIN_ENTRY structures, one per XIP region. The XIPCHAIN_ENTRY structure is defined in the %_WINCEROOT%\Public\Common\Oak\Inc\Romldr.h header file. The most important member of this structure is pvAddr, which is the starting memory address of the XIP region.
The XIP chain itself is flashed into memory by the boot loader if the boot loader is capable of one of the download methods of loading the image into ROM.
The location of the XIP chain is defined in Config.bib and passed into the OAL through a fixup variable of ROMIMAGE that enables you to initialize a global variable in the Nk.exe when you make the image. The initialization value is obtained from Config.bib. The following code example shows how the sample lines from Config.bib define the chain location, pass it in through a fixup variable, and reserve a memory area for the chain.
MEMORY
#define XIPLOC_PHYSICAL 802C0000;
Location of the chain
RESERVE $(XIPLOC_PHYSICAL) 00002000;
CHAIN
nk.exe:pdwXIPLoc 00000000 $(XIPLOC_PHYSICAL) FIXUPVAR
CONFIG
XIPSCHAIN= $(XIPLOC_PHYSICAL)
You can define a DWORD pointer called pdwXIPLoc in the OAL. This pointer is set to 0x802C0000 when the image is made. **