Microsoft KB Archive/247651

= A Windows CE operating system that was built for the x86 processor by using the Windows CE Platform Builder 2.12 does not start if the ROM address is changed =

Article ID: 247651

Article Last Modified on 1/6/2005

-

APPLIES TO


 * Microsoft Windows CE Platform Builder 2.12

-



This article was previously published under Q247651



SYMPTOMS
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.



CAUSE
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.



RESOLUTION
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:
 * Platform\Cepc\Kernel\Buildexe\Nokd\Sources
 * Platform\Cepc\Kernel\Buildexe\Withkd\Sources
 * Platform\Cepc\Kernel\Buildexe\Profiler\Sources
 * Platform\Cepc\Kernel\Buildexe\Profkd\Sources

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: EXEBASE=0x81200000



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.



MORE INFORMATION
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

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.