Microsoft KB Archive/247651

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 13:50, 21 July 2020 by X010 (talk | contribs) (Text replacement - """ to """)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


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