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

Reply via email to