Microsoft KB Archive/247651
Article ID: 247651
Article Last Modified on 1/6/2005
- Microsoft Windows CE Platform Builder 2.12
This article was previously published under Q247651
A Microsoft Windows CE operating system that was built for the x86 processor by using the Windows CE Platform Builder 2.12 does not start up (boot) after the read-only memory (ROM) address for the NK section is changed in the Config.bib file.
The x86 version of the Windows CE kernel contains an inadvertent dependency on the EXEBASE value set by the linker at build time. When the base address of the Nk.exe file is relocated in the .bib, but the EXEBASE value is not updated, the x86 kernel loads an incorrect address during initialization and will crash.
The Windows CE kernel for other processors are not dependent on the EXEBASE value.
The following resolution will correct the problem for the current Windows CE Platform Builder release.
The EXEBASE value in the SOURCES file for the Nk.exe file must be updated to match the address chosen for the NK memory section in the Config.bib file.
The SOURCES files that need to be changed in the CEPC sample platform are listed here. An original equipment manufacturer (OEM) platform has a similar set of files that must be updated:
For example, if the line in the Config.bib file's MEMORY section reads as follows,
NK 81200000 00900000 RAMIMAGE
then the SOURCES files must have EXEBASE set as follows:
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
The ROMIMAGE tool resolves all addresses to match the base address defined in the Config.bib file. In the x86 kernel, a reference to a memory address was resolved by the linker by using the EXEBASE value. Once this address is resolved, ROMIMAGE is unaware that it needs to be fixed up with the correct ROM address.
Keywords: kbprb KB247651