audk/EmulatorPkg
Michael D Kinney 868254ace3 EmulatorPkg: Fix VS20xx IA32 boot failure
https://bugzilla.tianocore.org/show_bug.cgi?id=2056

The IA32 build of the EmulatorPkg for VS20xx does not boot
because the default value of PCD PcdPeiServicesTablePage
rarely succeeds to be mapped on IA32 Windows Host Environments.
Change the DEC default value for this PCD to a value that
is compatible with Windows and POSIX host environments for
IA32 and X64.  For IA32 builds, this 64-bit PCD is truncated
to a 32-bit value.

PcdPeiServicesTablePage is changed from 0x1003000000 to
0x1013000000.  With this new value, no boot failures are
observed.  However, the use of this hard coded value can
potentially cause a boot failure if this address specified
by the PCD is already allocated in the user process.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Andrew Fish <afish@apple.com>
2019-08-19 09:49:47 -07:00
..
AutoScanPei EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
BootModePei EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
CpuRuntimeDxe EmulatorPkg: Change the cpu frequency to a non-zero value 2019-05-10 10:48:51 +08:00
EmuBlockIoDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
EmuBusDriverDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
EmuGopDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
EmuSimpleFileSystemDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
EmuSnpDxe EmulatorPkg: Add NetworkPkg/NetworkPkg.dec as the package dependency 2019-05-21 10:35:33 +08:00
EmuThunkDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
FirmwareVolumePei EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
FlashMapPei EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
FvbServicesRuntimeDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
Include EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
Library EmulatorPkg: Make the shell be the first boot option 2019-05-10 10:49:45 +08:00
PlatformSmbiosDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
RealTimeClockRuntimeDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
ResetRuntimeDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
Sec EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
ThunkPpiToProtocolPei EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
TimerDxe EmulatorPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:57:59 -07:00
Unix EmulatorPkg/Unix/Host: Fix XCODE5 IA32/X64 build failure 2019-08-06 09:29:32 -07:00
Win EmulatorPkg: Fix VS2015 build when VS2017 also installed 2019-08-06 09:29:16 -07:00
EmulatorPkg.dec EmulatorPkg: Fix VS20xx IA32 boot failure 2019-08-19 09:49:47 -07:00
EmulatorPkg.dsc EmulatorPkg: Update DSC/FDF to use NetworkPkg's include fragment file. 2019-05-16 16:45:38 +02:00
EmulatorPkg.fdf EmulatorPkg: Update DSC/FDF to use NetworkPkg's include fragment file. 2019-05-16 16:45:38 +02:00
Readme.md EmulatorPkg: Update package level Readme.md 2018-09-10 10:29:34 +08:00
build.sh EmulatorPkg/build.sh: Fix missing usage of -b BUILDTARGET parameter 2019-07-14 01:09:53 -07:00

Readme.md

Overview

EmulatorPkg provides an environment where a UEFI environment can be emulated under an environment where a full UEFI compatible environment is not possible. (For example, running under an OS where an OS process hosts the UEFI emulation environment.)

https://github.com/tianocore/tianocore.github.io/wiki/EmulatorPkg

Status

  • Builds and runs under
    • a posix-like environment with X windows
      • Linux
      • OS X
    • Windows environment
      • Win10 (verified)
      • Win8 (not verified)

How to Build & Run

You can use the following command to build.

  • 32bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -D WIN_SEC_BUILD -a IA32

  • 64bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -D WIN_SEC_BUILD -a X64

  • 32bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -D UNIX_SEC_BUILD -a IA32

  • 64bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -D UNIX_SEC_BUILD -a X64

You can start/run the emulator using the following command:

  • 32bit emulator in Windows:

    cd Build\EmulatorIA32\DEBUG_VS2017\IA32\ && WinHost.exe

  • 64bit emulator in Windows:

    cd Build\EmulatorX64\DEBUG_VS2017\X64\ && WinHost.exe

  • 32bit emulator in Linux:

    cd Build/EmulatorIA32/DEBUG_GCC5/IA32/ && ./Host

  • 64bit emulator in Linux:

    cd Build/EmulatorX64/DEBUG_GCC5/X64/ && ./Host

On posix-like environment with the bash shell you can use EmulatorPkg/build.sh to simplify building and running emulator.

For example, to build + run:

$ EmulatorPkg/build.sh
$ EmulatorPkg/build.sh run

The build architecture will match your host machine's architecture.

On X64 host machines, you can build + run IA32 mode as well:

$ EmulatorPkg/build.sh -a IA32
$ EmulatorPkg/build.sh -a IA32 run