Hi Andrew, Thanks for your reply. I have tried below way now I'm able to launch Emulator
1. Done full build for EmulatorPkg using command *build -p EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -D WIN_SEC_BUILD -a X64 * 2. Build got success without any build error 3. .FD file generated 4. Launching using command *cd Build\EmulatorX64\DEBUG_VS2017\X64\ && WinHost.exe * Earlier I was building only one component *WinHost.inf* without building entire EmulatorPkg, bcz of this .FD was not generated. *build -p EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -D WIN_SEC_BUILD -a X64 -m EmulatorPkg/Win/Host/WinHost.inf* -- Regards, Prem. On Sun, Nov 4, 2018 at 11:35 PM Andrew Fish <[email protected]> wrote: > > > On Nov 3, 2018, at 1:55 PM, Prem Kumar <[email protected]> wrote: > > Hi Andrew, > Thanks for your explanation. > > After building for x64 I could see below error. > > > > C:\UEFIWorkspace\edk2-master_2018_Latest\Build\EmulatorX64\DEBUG_VS2015x86\X64>WinHost.exe > > EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ > BootMode 0x00 > OS Emulator passing in 128 KB of temp RAM at 0x65e70000 to SEC > ERROR : Can not open Firmware Device File ../FV/FV_RECOVERY.fd (0xE). > Exiting. > > > *I've searched for FV_RECOVERY.fd in entire project and found no such file > generated after built.* > > > Prem, > > The FD (Flash Device) image should be constructed by the build, and end up > in the generated Build directory. The start of the path is the target name, > and then a directory that represents some of the flags to the build > command. > > So the FD should live in: > Build\EmulatorX64\DEBUG_VS2015x86\FV\FV_RECOVERY.fd. If it is not present > it would seem like your build failed? Did you get error messages at the end > of the build? > > > This is the fix for the Bugzilla and it does not seem to relate to your > failure. > > /Volumes/Case/UDK2018(vUDK2018)>git show > f4eaaf1a6d50c761e2af9a6dd0976fb8a3bd3c08 > commit f4eaaf1a6d50c761e2af9a6dd0976fb8a3bd3c08 > Author: Ruiyu Ni <[email protected]> > Date: Fri Aug 31 16:55:36 2018 +0800 > > Emulator/Win: Fix build failure using VS2015x86 or old WinSDK > > > When build with WinSDK <= Win10 TH2, the terminal over CMD.exe > doesn't work. Because Win10 later than TH2 starts to support VT > terminal. > > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ruiyu Ni <[email protected]> > Cc: Michael D Kinney <[email protected]> > Reviewed-by: Hao A Wu <[email protected]> > > *diff --git a/EmulatorPkg/Win/Host/WinHost.c > b/EmulatorPkg/Win/Host/WinHost.c* > *index 9b98d5330f..65e8960eff 100644* > *--- a/EmulatorPkg/Win/Host/WinHost.c* > *+++ b/EmulatorPkg/Win/Host/WinHost.c* > @@ -673,7 +673,7 @@ Returns: > // Transfer control to the SEC Core > // > SwitchStack ( > - (SWITCH_STACK_ENTRY_POINT)SecCoreEntryPoint, > + (SWITCH_STACK_ENTRY_POINT)(UINTN)SecCoreEntryPoint, > SecCoreData, > GetThunkPpiList (), > TopOfStack > *diff --git a/EmulatorPkg/Win/Host/WinThunk.c > b/EmulatorPkg/Win/Host/WinThunk.c* > *index 306fe75ecd..6007db73b5 100644* > *--- a/EmulatorPkg/Win/Host/WinThunk.c* > *+++ b/EmulatorPkg/Win/Host/WinThunk.c* > @@ -71,15 +71,23 @@ SecConfigStdIn ( > // > // Disable buffer (line input), echo, mouse, window > // > - Success = SetConsoleMode ( > - GetStdHandle (STD_INPUT_HANDLE), > - Mode | ENABLE_VIRTUAL_TERMINAL_INPUT & > ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | > ENABLE_WINDOW_INPUT) > - ); > - } > - if (Success) { > + Mode &= ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT > | ENABLE_WINDOW_INPUT); > + > +#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > > NTDDI_WIN10_TH2) > // > - // Enable terminal mode > + // Enable virtual terminal input for Win10 above TH2 > // > + Mode |= ENABLE_VIRTUAL_TERMINAL_INPUT; > +#endif > + > + Success = SetConsoleMode (GetStdHandle (STD_INPUT_HANDLE), Mode); > + } > + > +#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > > NTDDI_WIN10_TH2) > + // > + // Enable terminal mode for Win10 above TH2 > + // > + if (Success) { > Success = GetConsoleMode (GetStdHandle (STD_OUTPUT_HANDLE), &Mode); > if (Success) { > Success = SetConsoleMode ( > @@ -88,6 +96,7 @@ SecConfigStdIn ( > ); > } > } > +#endif > return Success ? EFI_SUCCESS : EFI_DEVICE_ERROR; > } > > > > > Thanks, > > Andrew Fish > > > -- > Thanks & Regards, > Prem. > > > > On Sun, Nov 4, 2018 at 1:56 AM Andrew Fish <[email protected]> wrote: > >> Prem, >> >> I've not run the emulator on Windows in a very very long time. But lets >> take a look at your error message. >> >> /Volumes/Case/UDK2018(vUDK2018)>git grep "Could not allocate >> PeiServicesTablePage" >> EmulatorPkg/Unix/Host/Host.c:508: printf ("MapFd0(): *Could not >> allocate PeiServicesTablePage* @ %lx\n", (long unsigned >> int)EmuMagicPage); >> >> That seems to point to PcdPeiServicesTablePage >> /Volumes/Case/UDK2018(vUDK2018)>git grep PcdPeiServicesTablePage -- *.dec >> EmulatorPkg/EmulatorPkg.dec:73: gEmulatorPkgTokenSpaceGuid. >> *PcdPeiServicesTablePage*|0x1003000000|UINT64|0x0000101b >> >> Which has a default value of 0x1003000000. But since you built for IA32 >> it gets truncated to 0x03000000 >> >> Do you need 32-bit IA32? Can do a 64-bit build and use X64. Something >> like: >> >> build -p EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -D WIN_SEC_BUILD -a >> X64 -m EmulatorPkg/Win/Host/WinHost.inf >> >> It looks like that is hard coded address that needs to get allocated in >> the emulator, and in your case that allocation is failing. >> >> Thanks, >> >> Andrew Fish >> >> PS I'm not sure the printf is correct: printf ("MapFd0(): Could not >> allocate PeiServicesTablePage @ %lx\n", (long unsigned int)EmuMagicPage); >> Given the width of long is different on different platforms. UINT64 uses >> long long to make sure things are 64-bits. Not to mention EmuMagicPage is a >> pointer, not an long unsigned int. >> >> >> On Nov 3, 2018, at 12:26 PM, Prem Kumar <[email protected]> wrote: >> >> Hi Andrew, >> Thanks for your reply. >> >> Below is the error when trying to launch Emulator after successful build, >> >> *1.Launching Emulator using below command:* >> C:\UEFIWorkspace\edk2-master_2018_Latest>cd >> Build\EmulatorIA32\DEBUG_VS2015x86\IA32\ && WinHost.exe >> >> EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ >> BootMode 0x00 >> OS Emulator passing in 128 KB of temp RAM at 0x04400000 to SEC >> ERROR : Could not allocate PeiServicesTablePage @ 03000000 >> >> *2. Launching WinHose.exe directly:* >> >> C:\UEFIWorkspace\edk2-master_2018_Latest\Build\EmulatorIA32\DEBUG_VS2015x86\IA32>WinHost.exe >> >> EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ >> BootMode 0x00 >> OS Emulator passing in 128 KB of temp RAM at 0x04ab0000 to SEC >> ERROR : Could not allocate PeiServicesTablePage @ 03000000 >> >> >> >> -- >> Regards, >> Prem. >> >> >> > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

