From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Thu, 18 Jul 2019 23:02:54 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 23:02:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,281,1559545200"; d="scan'208";a="343599888" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.254.83.213]) by orsmga005.jf.intel.com with ESMTP; 18 Jul 2019 23:02:52 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python Date: Thu, 18 Jul 2019 23:02:47 -0700 Message-Id: <20190719060247.10132-6-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20190719060247.10132-1-michael.d.kinney@intel.com> References: <20190719060247.10132-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Convert Build_IFWI and bld_vlv BAT/sh scripts to OS independent python script PeBuild.py. This script generates the BiosId file. Standard EDK II build commands are used to build FW images and capsules. * Sample VS2015x86 commands for IA32/X64 and DEBUG/RELEASE build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc * Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney --- .../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 ------ .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 ----- .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 48 --- .../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 39 -- .../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 39 -- .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 30 +- .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 13 +- .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 13 +- Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 ++++++++++++++++++ Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 ++-- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 303 --------------- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 222 ----------- 12 files changed, 432 insertions(+), 903 deletions(-) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat deleted file mode 100644 index f65aa61f4a..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat +++ /dev/null @@ -1,118 +0,0 @@ -@REM @file -@REM Windows batch file to build BIOS ROM -@REM -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off - -SetLocal EnableDelayedExpansion EnableExtensions - -:: Assign initial values -set exitCode=0 -set "Build_Flags= " -set PLATFORM_PACKAGE=Vlv2TbltDevicePkg - -set PLATFORM_PATH=%WORKSPACE% -if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\%PLATFORM_PACKAGE% ( - set PLATFORM_PATH=%%~fi - goto PlatformPackageFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE% !!! - echo. - goto Exit - ) -) -:PlatformPackageFound - -:: Parse Optional arguments -:OptLoop -if /i "%~1"=="/?" goto Usage - -if /i "%~1"=="/l" ( - set Build_Flags=%Build_Flags% /l - shift - goto OptLoop -) -if /i "%~1"=="/y" ( - set Build_Flags=%Build_Flags% /y - shift - goto OptLoop -) -if /i "%~1"=="/m" ( - set Build_Flags=%Build_Flags% /m - shift - goto OptLoop -) -if /i "%~1" == "/c" ( - set Build_Flags=%Build_Flags% /c - shift - goto OptLoop -) -if /i "%~1"=="/x64" ( - set Build_Flags=%Build_Flags% /x64 - shift - goto OptLoop -) -if /i "%~1"=="/IA32" ( - set Build_Flags=%Build_Flags% /IA32 - shift - goto OptLoop -) - -:: Require 2 input parameters -if "%~2"=="" goto Usage - -:: Assign required arguments -set Platform_Type=%~1 -set Build_Target=%~2 - -:: Build BIOS -echo ====================================================================== -echo Build_IFWI: Calling BIOS build Script... - -call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat %Build_Flags% %Platform_Type% %Build_Target% - -if %ERRORLEVEL% NEQ 0 ( - echo echo -- Error Building BIOS & echo. - set exitCode=1 - goto exit -) -echo. -echo Finished Building BIOS. -goto Exit - -:Usage -echo Script to build BIOS firmware and stitch the entire IFWI. -echo. -echo Usage: Build_IFWI.bat [options] PlatformType BuildTarget -echo. -echo /c CleanAll -echo /l Generate build log file -echo /y Generate build report file -echo /m Enable multi-processor build -echo /IA32 Set Arch to IA32 (default: X64) -echo /X64 Set Arch to X64 (default: X64) -echo. -echo Platform Types: MNW2 -echo Build Targets: Debug, Release (default: Debug) -echo. -echo Examples: -echo Build_IFWI.bat MNW2 debug : X64 Debug build for MinnowMax -echo Build_IFWI.bat /IA32 MNW2 release : IA32 Release build for MinnowMax -echo. -set exitCode=1 - -:Exit -@REM CD to platform package. -cd %PLATFORM_PATH% -exit /b %exitCode% - -EndLocal diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh deleted file mode 100755 index 153c8c5fae..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bash -##********************************************************************** -## Function define -##********************************************************************** -function Usage ( ) { - echo - echo "Script to build BIOS firmware and stitch the entire IFWI." - echo - echo "Usage: Build_IFWI.sh [options] PlatformType BuildTarget" - echo - echo " /c CleanAll" - echo " /l Generate build log file" - echo " /y Generate build report file" - echo " /m Enable multi-processor build" - echo " /IA32 Set Arch to IA32 (default: X64)" - echo " /X64 Set Arch to X64 (default: X64)" - echo - echo " Platform Types: MNW2" - echo " Build Targets: Debug, Release (default: Debug)" - echo - echo "Examples:" - echo " Build_IFWI.sh MNW2 debug : X64 Debug build for MinnowMax" - echo " Build_IFWI.sh /IA32 MNW2 release : IA32 Release build for MinnowMax" - echo - exit 0 -} - -set -e - -## Assign initial values -exitCode=0 -Build_Flags= - -## Check whether WORKSPACE is set or not -if [[ -z "$WORKSPACE" ]]; then - echo "Please export WORKSPACE before running Build_IFWI.sh" - echo "See the details in Readme.md" - exit 1 -fi - -## Create $WORKSPACE/Conf if necessary -if [ ! -d $WORKSPACE/Conf ]; then - mkdir $WORKSPACE/Conf -fi - -## Parse Optional arguments -if [ "$1" == "/?" ]; then - Usage -fi - -for (( i=1; i<=$#; )) - do - if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then - Build_Flags="$Build_Flags /l" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then - Build_Flags="$Build_Flags /y" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then - Build_Flags="$Build_Flags /m" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then - Build_Flags="$Build_Flags /c" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then - Build_Flags="$Build_Flags /x64" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then - Build_Flags="$Build_Flags /IA32" - shift - else - break - fi - done - -## Require 2 input parameters -if [ "$2" == "" ]; then - Usage -fi - -## Assign required arguments -Platform_Type=$1 -Build_Target=$2 - -## Build BIOS -echo "======================================================================" -echo "Build_IFWI: Calling BIOS build Script..." -. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target - -echo -echo Finished Building BIOS. - -## Start Integration process -echo ====================================================================== -echo Skip "Build_IFWI: Calling IFWI Stitching Script..." - -echo -echo Build_IFWI is finished. -echo The final IFWI file is located in Stitch -echo ====================================================================== diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf deleted file mode 100644 index d8b0074d6a..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf +++ /dev/null @@ -1,48 +0,0 @@ -## @file -# FDF file of Platform capsule. -# -# Copyright (c) 2016 - 2019, Intel Corporation. -# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[FV.SystemFirmwareUpdateCargo] -FvAlignment = 16 -ERASE_POLARITY = 1 -MEMORY_MAPPED = TRUE -STICKY_WRITE = TRUE -LOCK_CAP = TRUE -LOCK_STATUS = TRUE -WRITE_DISABLED_CAP = TRUE -WRITE_ENABLED_CAP = TRUE -WRITE_STATUS = TRUE -WRITE_LOCK_CAP = TRUE -WRITE_LOCK_STATUS = TRUE -READ_DISABLED_CAP = TRUE -READ_ENABLED_CAP = TRUE -READ_STATUS = TRUE -READ_LOCK_CAP = TRUE -READ_LOCK_STATUS = TRUE - -FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid - $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM - } - -[FmpPayload.FmpPayloadSystemFirmwareRsa2048] -IMAGE_HEADER_INIT_VERSION = 0x02 -IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid -IMAGE_INDEX = 0x1 -HARDWARE_INSTANCE = 0x0 -MONOTONIC_COUNT = 0x2 -CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256 - -FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv - -[Capsule.Vlv2Rec] -CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid -CAPSULE_FLAGS = PersistAcrossReset,InitiateReset -CAPSULE_HEADER_SIZE = 0x20 -CAPSULE_HEADER_INIT_VERSION = 0x1 - -FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc deleted file mode 100644 index 246347b8fa..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc +++ /dev/null @@ -1,39 +0,0 @@ -#/** @file -# Platform capsule description. -# -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] - PLATFORM_NAME = Vlv2TbltDevicePkg - PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7 - PLATFORM_VERSION = 0.1 - FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf - OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgIA32 - SUPPORTED_ARCHITECTURES = IA32|X64 - BUILD_TARGETS = DEBUG|RELEASE - SKUID_IDENTIFIER = DEFAULT - POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py - -################################################################################################### -# -# Components Section - list of the modules and components that will be processed by compilation -# tools and the EDK II tools to generate PE32/PE32+/Coff image files. -# -# Note: The EDK II DSC file is not used to specify how compiled binary images get placed -# into firmware volume images. This section is just a list of modules to compile from -# source into UEFI-compliant binaries. -# It is the FDF file that contains information on combining binary files into firmware -# volume images, whose concept is beyond UEFI and is described in PI specification. -# Binary modules do not need to be listed in this section, as they should be -# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi), -# Logo (Logo.bmp), and etc. -# There may also be modules listed in this section that are not required in the FDF file, -# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be -# generated for it, but the binary will not be put into any firmware volume. -# -################################################################################################### diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc deleted file mode 100644 index 68bde30f83..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc +++ /dev/null @@ -1,39 +0,0 @@ -#/** @file -# Platform capsule description. -# -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] - PLATFORM_NAME = Vlv2TbltDevicePkg - PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7 - PLATFORM_VERSION = 0.1 - FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf - OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgX64 - SUPPORTED_ARCHITECTURES = IA32|X64 - BUILD_TARGETS = DEBUG|RELEASE - SKUID_IDENTIFIER = DEFAULT - POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py - -################################################################################################### -# -# Components Section - list of the modules and components that will be processed by compilation -# tools and the EDK II tools to generate PE32/PE32+/Coff image files. -# -# Note: The EDK II DSC file is not used to specify how compiled binary images get placed -# into firmware volume images. This section is just a list of modules to compile from -# source into UEFI-compliant binaries. -# It is the FDF file that contains information on combining binary files into firmware -# volume images, whose concept is beyond UEFI and is described in PI specification. -# Binary modules do not need to be listed in this section, as they should be -# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi), -# Logo (Logo.bmp), and etc. -# There may also be modules listed in this section that are not required in the FDF file, -# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be -# generated for it, but the binary will not be put into any firmware volume. -# -################################################################################################### diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf index e958c1ebf2..48058b663a 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf @@ -711,9 +711,8 @@ [FV.FVMAIN_COMPACT] !endif } -[FV.SETUP_DATA] -BlockSize = $(FLASH_BLOCK_SIZE) -#NumBlocks = 0x10 +!if $(RECOVERY_ENABLE) +[FV.SystemFirmwareUpdateCargo] FvAlignment = 16 ERASE_POLARITY = 1 MEMORY_MAPPED = TRUE @@ -731,6 +730,31 @@ [FV.SETUP_DATA] READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE +FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid + FD = Vlv +# $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.fd + } + +[FmpPayload.FmpPayloadSystemFirmwareRsa2048] +IMAGE_HEADER_INIT_VERSION = 0x02 +IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid +IMAGE_INDEX = 0x1 +HARDWARE_INSTANCE = 0x0 +MONOTONIC_COUNT = 0x2 +CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256 + +FV = SystemFirmwareUpdateCargo +#FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv + +[Capsule.Vlv2Rec] +CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid +CAPSULE_FLAGS = PersistAcrossReset,InitiateReset +CAPSULE_HEADER_SIZE = 0x20 +CAPSULE_HEADER_INIT_VERSION = 0x1 + +FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048 +!endif + ################################################################################ # # Rules are use with the [FV] section's module INF type to define diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc index 121ebc9eee..5149dd5aa4 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc @@ -23,6 +23,8 @@ [Defines] BUILD_TARGETS = DEBUG|RELEASE SKUID_IDENTIFIER = DEFAULT VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08 + PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py + POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py DEFINE RC_BINARY_RELEASE = TRUE # @@ -213,7 +215,7 @@ [LibraryClasses.common] TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf !endif - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf @@ -242,6 +244,10 @@ [LibraryClasses.common] BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf +!if $(RECOVERY_ENABLE) + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf +!endif + [LibraryClasses.IA32.SEC] !if $(PERFORMANCE_ENABLE) == TRUE PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf @@ -718,11 +724,10 @@ [PcdsDynamicExDefault.common.DEFAULT] gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10 !if $(RECOVERY_ENABLE) + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100 gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif [PcdsDynamicExVpd.common.DEFAULT] diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc index 3e4087f919..466512242c 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc @@ -23,6 +23,8 @@ [Defines] BUILD_TARGETS = DEBUG|RELEASE SKUID_IDENTIFIER = DEFAULT VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08 + PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py + POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py DEFINE RC_BINARY_RELEASE = TRUE # @@ -215,7 +217,7 @@ [LibraryClasses.common] TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf !endif - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf @@ -244,6 +246,10 @@ [LibraryClasses.common] BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf +!if $(RECOVERY_ENABLE) + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf +!endif + [LibraryClasses.IA32.SEC] !if $(PERFORMANCE_ENABLE) == TRUE PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf @@ -720,11 +726,10 @@ [PcdsDynamicExDefault.common.DEFAULT] gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10 !if $(RECOVERY_ENABLE) + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100 gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif [PcdsDynamicExVpd.common.DEFAULT] diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py new file mode 100644 index 0000000000..220515c809 --- /dev/null +++ b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py @@ -0,0 +1,348 @@ +## @file +# PreBuild operations for Vlv2TbltDevicePkg +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +PreBuild +''' + +import os +import sys +import argparse +import subprocess +import glob +import shutil +import struct +import datetime + +# +# Globals for help information +# +__prog__ = 'PreBuild' +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.' +__description__ = 'Vlv2Tbl2DevicePkg pre-build operations.\n' + +# +# Globals +# +gWorkspace = '' +gBaseToolsPath = '' +gArgs = None + +def LogAlways(Message): + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Log(Message): + global gArgs + if not gArgs.Verbose: + return + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Error(Message, ExitValue=1): + sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n') + sys.exit (ExitValue) + +def RelativePath(target): + global gWorkspace + Log('RelativePath' + target) + return os.path.relpath (target, gWorkspace) + +def NormalizePath(target): + if isinstance(target, tuple): + return os.path.normpath (os.path.join (*target)) + else: + return os.path.normpath (target) + +def RemoveFile(target): + target = NormalizePath(target) + if not target or target == os.pathsep: + Error ('RemoveFile() invalid target') + if os.path.exists(target): + os.remove (target) + Log ('remove %s' % (RelativePath (target))) + +def RemoveDirectory(target): + target = NormalizePath(target) + if not target or target == os.pathsep: + Error ('RemoveDirectory() invalid target') + if os.path.exists(target): + Log ('rmdir %s' % (RelativePath (target))) + shutil.rmtree(target) + +def CreateDirectory(target): + target = NormalizePath(target) + if not os.path.exists(target): + Log ('mkdir %s' % (RelativePath (target))) + os.makedirs (target) + +def Copy(src, dst): + src = NormalizePath(src) + dst = NormalizePath(dst) + for File in glob.glob(src): + Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst))) + shutil.copy (File, dst) + +def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir): + global gBaseToolsPath + LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, Version, Lsv, PayloadFileName)) + + VersionString = '.'.join([str(ord(x)) for x in struct.pack('>I', Version).decode()]) + + FmpCapsuleFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cap')) + Command = GenerateCapsuleCommand.format ( + FMP_CAPSULE_GUID = Guid, + FMP_CAPSULE_VERSION = Version, + FMP_CAPSULE_LSV = Lsv, + BASE_TOOLS_PATH = gBaseToolsPath, + FMP_CAPSULE_FILE = FmpCapsuleFile, + FMP_CAPSULE_PAYLOAD = PayloadFileName + ) + Command = ' '.join(Command.splitlines()).strip() + if gArgs.Verbose: + Command = Command + ' -v' + + Log (Command) + + Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + ProcessOutput = Process.communicate() + + if Process.returncode == 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + Copy (PayloadFileName, (CapsulesPath, 'firmware.bin')) + MetaInfoXml = MetaInfoXmlTemplate + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid) + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName) + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', str(Version)) + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionString) + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.date.today())) + f = open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), 'w') + f.write(MetaInfoXml) + f.close() + + f = open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w') + f.write(LvfsDdfTemplate) + f.close() + + if sys.platform == "win32": + Command = 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.ddf')) + else: + Command = 'gcab --create firmware.cab firmware.bin firmware.metainfo.xml' + Log (Command) + + Process = subprocess.Popen(Command, cwd=CapsulesPath, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + ProcessOutput = Process.communicate() + + if Process.returncode == 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + FmpCabinetFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cab')) + + Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile) + + RemoveFile ((CapsulesPath, 'firmware.cab')) + RemoveFile ((CapsulesPath, 'setup.inf')) + RemoveFile ((CapsulesPath, 'setup.rpt')) + RemoveFile ((CapsulesPath, 'Lvfs.ddf')) + RemoveFile ((CapsulesPath, 'firmware.metainfo.xml')) + RemoveFile ((CapsulesPath, 'firmware.bin')) + +BiosIdTemplate = ''' +BOARD_ID = MNW2MAX +BOARD_REV = $BOARD_REV +BOARD_EXT = $ARCH +VERSION_MAJOR = 0090 +BUILD_TYPE = $BUILD_TYPE +VERSION_MINOR = 01 +''' + + +if __name__ == '__main__': + # + # Create command line argument parser object + # + parser = argparse.ArgumentParser ( + prog = __prog__, + description = __description__ + __copyright__, + conflict_handler = 'resolve' + ) + parser.add_argument ( + '-a', '--arch', dest = 'Arch', nargs = '+', action = 'append', + required = True, + help = '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH64 or EBC, + which overrides target.txt's TARGET_ARCH definition. To + specify more archs, please repeat this option.''' + ) + parser.add_argument ( + '-t', '--tagname', dest = 'ToolChain', required = True, + help = '''Using the Tool Chain Tagname to build the platform, + overriding target.txt's TOOL_CHAIN_TAG definition.''' + ) + parser.add_argument ( + '-p', '--platform', dest = 'PlatformFile', required = True, + help = '''Build the platform specified by the DSC file name argument, + overriding target.txt's ACTIVE_PLATFORM definition.''' + ) + parser.add_argument ( + '-b', '--buildtarget', dest = 'BuildTarget', required = True, + help = '''Using the TARGET to build the platform, overriding + target.txt's TARGET definition.''' + ) + parser.add_argument ( + '--conf=', dest = 'ConfDirectory', required = True, + help = '''Specify the customized Conf directory.''' + ) + parser.add_argument ( + '-D', '--define', dest = 'Define', nargs='*', action = 'append', + help = '''Macro: "Name [= Value]".''' + ) + parser.add_argument ( + '-v', '--verbose', dest = 'Verbose', action = 'store_true', + help = '''Turn on verbose output with informational messages printed''' + ) + parser.add_argument ( + '--package', dest = 'Package', nargs = '*', action = 'append', + help = '''The directory name of a package of tests to copy''' + ) + + # + # Parse command line arguments + # + gArgs, remaining = parser.parse_known_args() + gArgs.BuildType = 'all' + for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall', 'modules', 'libraries', 'run']: + if BuildType in remaining: + gArgs.BuildType = BuildType + remaining.remove(BuildType) + break + gArgs.Remaining = ' '.join(remaining) + + # + # Get WORKSPACE environment variable + # + try: + gWorkspace = os.environ['WORKSPACE'] + except: + Error ('WORKSPACE environment variable not set') + + # + # Get PACKAGES_PATH and generate prioritized list of paths + # + PathList = [gWorkspace] + try: + PathList += os.environ['PACKAGES_PATH'].split(os.pathsep) + except: + pass + + # + # Determine full path to BaseTools + # + Vlv2Tbl2DevicePkgPath = '' + for Path in PathList: + if gBaseToolsPath == '': + if os.path.exists (os.path.join (Path, 'BaseTools')): + gBaseToolsPath = os.path.join (Path, 'BaseTools') + if Vlv2Tbl2DevicePkgPath == '': + if os.path.exists (os.path.join (Path, 'Vlv2TbltDevicePkg')): + Vlv2Tbl2DevicePkgPath = os.path.join (Path, 'Vlv2TbltDevicePkg') + if gBaseToolsPath == '': + Error ('Can not find BaseTools in WORKSPACE or PACKAGES_PATH') + if Vlv2Tbl2DevicePkgPath == '': + Error ('Can not find Vlv2Tbl2DevicePkg in WORKSPACE or PACKAGES_PATH') + + # + # Parse OUTPUT_DIRECTORY from DSC file + # + for Path in PathList: + if os.path.exists (os.path.join (Path, gArgs.PlatformFile)): + Dsc = open (os.path.join (Path, gArgs.PlatformFile), 'r').readlines() + break + for Line in Dsc: + if Line.strip().startswith('OUTPUT_DIRECTORY'): + OutputDirectory = Line.strip().split('=')[1].strip() + break + + # + # Determine full paths to EDK II build directory, EDK II build output + # directory and the CPU arch of the UEFI phase. + # + CommandDir = os.path.dirname(sys.argv[0]) + EdkiiBuildDir = os.path.join (gWorkspace, OutputDirectory) + EdkiiBuildOutput = os.path.join (EdkiiBuildDir, gArgs.BuildTarget + '_' + gArgs.ToolChain) + UefiArch = gArgs.Arch[0][0] + if len (gArgs.Arch) > 1: + if ['X64'] in gArgs.Arch: + UefiArch = 'X64' + + if gArgs.BuildType == 'run': + Error ("'run' target not supported") + if gArgs.BuildType == 'clean': + sys.exit (0) + + # + # Create output directories to put BiosId files + # + try: + CreateDirectory ((gWorkspace, 'Build')) + except: + pass + try: + CreateDirectory ((EdkiiBuildDir)) + except: + pass + try: + CreateDirectory ((EdkiiBuildOutput)) + except: + pass + + # + # Generate BiosId files + # + BiosId = BiosIdTemplate + if sys.platform == "win32": + # Built from a Windows Host OS + BiosId = BiosId.replace ('$BOARD_REV', 'W') + else: + # Built from a Linux/Unix/Mac Host OS + BiosId = BiosId.replace ('$BOARD_REV', 'L') + if UefiArch == 'X64': + BiosId = BiosId.replace ('$ARCH', 'X64') + else: + BiosId = BiosId.replace ('$ARCH', 'I32') + BiosId = BiosId.replace ('$BUILD_TYPE', gArgs.BuildTarget[0]) + + BiosIdFileName = NormalizePath ((EdkiiBuildOutput, 'BiosId.env')) + f = open (BiosIdFileName, 'w') + f.write(BiosId) + f.close() + + Command = 'python ' + NormalizePath ((Vlv2Tbl2DevicePkgPath, '../Tools/GenBiosId/GenBiosId.py')) + Command = Command + ' -i ' + BiosIdFileName + Command = Command + ' -o ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.bin')) + Command = Command + ' -ot ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.txt')) + + LogAlways (Command) + + Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + ProcessOutput = Process.communicate() + + if Process.returncode == 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenBiosId returned an error') diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md index 97180ef7af..b52c23fdec 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md +++ b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md @@ -57,12 +57,15 @@ powershell Expand-Archive nasm-2.13.03-win64.zip . set WORKSPACE=%CD% set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\ -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg +cd %WORKSPACE%\edk2 -Build_IFWI.bat /m MNW2 Debug +edksetup.bat Rebuild + +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc ``` Once all the code and tools are downloaded and installed, only the following @@ -72,8 +75,14 @@ directory used to install the source and binaries. ``` set WORKSPACE=%CD% set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\ + +cd %WORKSPACE%\edk2 + +edksetup.bat Rebuild + ``` Once the environment is setup, the MinnowBoard MAX firmware and capsules can be @@ -82,39 +91,43 @@ rebuilt using the following commands. * Build X64 Debug Image with report file ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /y MNW2 Debug +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc -y Vlv.report ``` * Build X64 Release Image with build log ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /l MNW2 Release +build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE Vlv2TbltDevicePkg\PlatformPkgX64.dsc -j Vlv.log ``` * Build IA32 Debug Image ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /IA32 MNW2 Debug +build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc ``` The generated firmware image is the build output directory below WORKSPACE. For exampple, the X64 Debug Image is at: -`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM` +`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd` And the IA32 Release image is at: -`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM` +`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd` The X64 CapsuleApp and generated UEFI Capsules are in the directory -`Build\Vlv2TbltDevicePkg\Capsules` +`Build\Vlv2TbltDevicePkgX64\Capsules` # Linux Pre-requisites +* git +* python +* iasl +* nasm +* openssl +* gcab + # Download and Build MinnowMax using Linux/GCC Run the script below from an empty directory. The script clones the EDK II @@ -132,10 +145,12 @@ git clone https://github.com/tianocore/edk2-platforms.git git clone https://github.com/tianocore/edk2-non-osi.git export WORKSPACE=$PWD +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel +cd $WORKSPACE/edk2 -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg +. edksetup.sh BaseTools Rebuild -./Build_IFWI.sh /m MNW2 Debug +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc ``` Once all the code is downloaded and installed, only the following commands are @@ -144,6 +159,10 @@ install the source and binaries. ``` export WORKSPACE=$PWD/edk2 +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel +cd $WORKSPACE/edk2 + +. edksetup.sh BaseTools Rebuild ``` Once the environment is setup, the MinnowBoard MAX firmware and capsules can be @@ -152,36 +171,33 @@ rebuilt using the following commands. * Build X64 Debug Image with report file ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /y MNW2 Debug +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -y Vlv.report ``` * Build X64 Release Image with build log ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /l MNW2 Release +build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -j Vlv.log ``` * Build IA32 Debug Image ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /IA32 MNW2 Debug +build -a IA32 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc ``` The generated firmware image is the build output directory below WORKSPACE. For exampple, the X64 Debug Image is at: -`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM` +`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd` And the IA32 Release image is at: -`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM` +`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd` The X64 CapsuleApp and generated UEFI Capsules are in the directory -`Build/Vlv2TbltDevicePkg/Capsules` +`Build/Vlv2TbltDevicePkgX64/Capsules` # Use DediProg to update FLASH image on a MinnowBoard MAX Target @@ -192,7 +208,7 @@ The X64 CapsuleApp and generated UEFI Capsules are in the directory * Boot MinnowBoard MAX to the Boot Manager * Boot the `EFI Internal Shell` boot option * Mount the USB FLASH Drive (usually `FS1`) -* Use `cd` command to go to `Capsules/TestCert` directory +* Use `cd` command to go to `Capsules/TestCert_*` directory * Run the following command to apply all four capsules ``` diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat deleted file mode 100644 index fb634c490c..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat +++ /dev/null @@ -1,303 +0,0 @@ -@REM @file -@REM Windows batch file to build BIOS ROM -@REM -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal EnableDelayedExpansion EnableExtensions -echo. -echo %date% %time% -echo. - -::********************************************************************** -:: Initial Setup -::********************************************************************** -if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1% -set /a build_threads=1 -set "Build_Flags= " -set exitCode=0 -set Arch=X64 -set GenLog=FALSE -set GenReport=FALSE -set Clean=FALSE -set PLATFORM_NAME=Vlv2TbltDevicePkg - -::********************************************************************** -:: Detect full path to the edk2 repo -::********************************************************************** -set CORE_PATH=%WORKSPACE% -if not exist %CORE_PATH%\edksetup.bat ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\edksetup.bat ( - set CORE_PATH=%%~fi - goto CorePathFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find edksetup.bat !!! - echo. - goto BldFail - ) -) -:CorePathFound - -::********************************************************************** -:: Detect full path to the Vlv2TbltDevicePkg -::********************************************************************** -set PLATFORM_PACKAGE=%WORKSPACE%\%PLATFORM_NAME% -if not exist %PLATFORM_PACKAGE% ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\%PLATFORM_NAME% ( - set PLATFORM_PACKAGE=%%~fi\%PLATFORM_NAME% - goto PlatformPackageFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!! - echo. - goto BldFail - ) -) -:PlatformPackageFound - -cd %CORE_PATH% - -::********************************************************************** -:: Run edksetup.bat and make sure tools are up to date -::********************************************************************** - -call %CORE_PATH%\edksetup.bat Rebuild -@echo off - -::********************************************************************** -:: Parse command line arguments -::********************************************************************** - -:: Optional arguments -:OptLoop -if /i "%~1"=="/?" goto Usage - -if /i "%~1"=="/l" ( - set GenLog=TRUE - shift - goto OptLoop -) -if /i "%~1"=="/y" ( - set GenReport=TRUE - shift - goto OptLoop -) -if /i "%~1"=="/m" ( - if defined NUMBER_OF_PROCESSORS ( - set /a build_threads=%NUMBER_OF_PROCESSORS%+1 - ) - shift - goto OptLoop -) -if /i "%~1" == "/c" ( - set Clean=TRUE - shift - goto OptLoop -) - -if /i "%~1"=="/x64" ( - set Arch=X64 - shift - goto OptLoop -) -if /i "%~1"=="/IA32" ( - set Arch=IA32 - shift - goto OptLoop -) - -:: Required argument(s) -if "%~1"=="" goto Usage - -if /i "%~2" == "RELEASE" ( - set target=RELEASE -) else ( - set target=DEBUG -) - -::********************************************************************** -:: Detect TOOL_CHAIN_TAG -::********************************************************************** - -echo. -echo Setting the Build environment for VS2015/VS2013/VS2012/VS2010/VS2008... -if defined VS140COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS140COMNTOOLS%\vsvars32.bat" - if /I "%VS140COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=VS2015 - ) else ( - set TOOL_CHAIN_TAG=VS2015x86 - ) -) else if defined VS120COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS120COMNTOOLS%\vsvars32.bat" - if /I "%VS120COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=VS2013 - ) else ( - set TOOL_CHAIN_TAG=VS2013x86 - ) -) else if defined VS110COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS110COMNTOOLS%\vsvars32.bat" - if /I "%VS110COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=VS2012 - ) else ( - set TOOL_CHAIN_TAG=VS2012x86 - ) -) else if defined VS100COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS100COMNTOOLS%\vsvars32.bat" - if /I "%VS100COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=VS2010 - ) else ( - set TOOL_CHAIN_TAG=VS2010x86 - ) -) else if defined VS90COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS90COMNTOOLS%\vsvars32.bat" - if /I "%VS90COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=VS2008 - ) else ( - set TOOL_CHAIN_TAG=VS2008x86 - ) -) else ( - echo --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008 not installed correctly. VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOOLS/VS90COMNTOOLS not defined ^^! - echo. - goto :BldFail -) - -::********************************************************************** -:: Generate BUILD_PATH and make sure the directory exists -::********************************************************************** - -echo Ensuring correct build directory is present -if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build -if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% -set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CHAIN_TAG% -if not exist %BUILD_PATH% mkdir %BUILD_PATH% - -::********************************************************************** -:: Check for clean operation -::********************************************************************** - -if "%Clean%"=="TRUE" ( - echo Removing previous build files ... - if exist %BUILD_PATH% ( - rmdir /s/q %BUILD_PATH% - ) - if exist %WORKSPACE%\Conf\.cache ( - rmdir /s/q %WORKSPACE%\Conf\.cache - ) - echo. - goto :Exit -) - -::********************************************************************** -:: Generate Build_Flags -::********************************************************************** - -set Build_Flags=%Build_Flags% -b %TARGET% -if "%Arch%"=="IA32" ( - set Build_Flags=%Build_Flags% -a IA32 -) else if "%Arch%"=="X64" ( - set Build_Flags=%Build_Flags% -a IA32 -a X64 -) -set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG% -set Build_Flags=%Build_Flags% -n %build_threads% -set Capsule_Build_Flags=%Build_Flags% -set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc -if "%GenLog%"=="TRUE" ( - set Build_Flags=%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log -) -if "%GenReport%"=="TRUE" ( - set Build_Flags=%Build_Flags% -y %BUILD_PATH%\%PLATFORM_NAME%.report -) - -::********************************************************************** -:: Generate BIOS ID -::********************************************************************** - -echo BOARD_ID = MNW2MAX > %BUILD_PATH%/BiosId.env -echo BOARD_REV = W >> %BUILD_PATH%/BiosId.env -if "%Arch%"=="IA32" ( - echo BOARD_EXT = I32 >> %BUILD_PATH%/BiosId.env -) -if "%Arch%"=="X64" ( - echo BOARD_EXT = X64 >> %BUILD_PATH%/BiosId.env -) -echo VERSION_MAJOR = 0090 >> %BUILD_PATH%/BiosId.env -if "%TARGET%"=="DEBUG" ( - echo BUILD_TYPE = D >> %BUILD_PATH%/BiosId.env -) -if "%TARGET%"=="RELEASE" ( - echo BUILD_TYPE = R >> %BUILD_PATH%/BiosId.env -) -echo VERSION_MINOR = 01 >> %BUILD_PATH%/BiosId.env - -%WORKSPACE%\edk2-platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot %BUILD_PATH%/BiosId.txt - -::********************************************************************** -:: Build BIOS -::********************************************************************** - -echo. -echo Invoking EDK2 build... -echo build %Build_Flags% - -call build %Build_Flags% - -if %ERRORLEVEL% NEQ 0 goto BldFail - -copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM - -::********************************************************************** -:: Build Capsules -::********************************************************************** -echo Invoking EDK2 build for capsules... -echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc -call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc - -goto Exit - -:Usage -echo. -echo *************************************************************************** -echo Build BIOS rom for VLV platforms. -echo. -echo Usage: bld_vlv.bat [options] PlatformType [Build Target] -echo. -echo /c CleanAll -echo /l Generate build log file -echo /y Generate build report file -echo /m Enable multi-processor build -echo /IA32 Set Arch to IA32 (default: X64) -echo /X64 Set Arch to X64 (default: X64) -echo. -echo Platform Types: MNW2 -echo Build Targets: Debug, Release (default: Debug) -echo. -echo Examples: -echo bld_vlv.bat MNW2 : X64 Debug build for MinnowMax -echo bld_vlv.bat /IA32 MNW2 release : IA32 Release build for MinnowMax -echo. -echo *************************************************************************** -set exitCode=1 -goto Exit - -:BldFail -set exitCode=1 -echo -- Error: EDKII BIOS Build has failed! -echo See EDK2.log for more details - -:Exit -echo %date% %time% -exit /b %exitCode% - -EndLocal diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh deleted file mode 100755 index c8db91c6dc..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env bash -##********************************************************************** -## Function define -##********************************************************************** -function Usage() { - echo - echo "***************************************************************************" - echo "Build BIOS rom for VLV platforms." - echo - echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]" - echo - echo " /c CleanAll" - echo " /l Generate build log file" - echo " /y Generate build report file" - echo " /m Enable multi-processor build" - echo " /IA32 Set Arch to IA32 (default: X64)" - echo " /X64 Set Arch to X64 (default: X64)" - echo - echo " Platform Types: MNW2" - echo " Build Targets: Debug, Release (default: Debug)" - echo - echo "Examples:" - echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax" - echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for MinnowMax" - echo "***************************************************************************" - exit 0 -} - -set -e - -cd .. -echo -e $(date) -##********************************************************************** -## Initial Setup -##********************************************************************** -#build_threads=($NUMBER_OF_PROCESSORS)+1 -Build_Flags= -exitCode=0 -build_threads=1 -Arch=X64 -GenLog=FALSE -GenReport=FALSE -Clean=FALSE - - -export CORE_PATH=$WORKSPACE/edk2 -export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/ -export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/ -export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/ -export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH - -## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf -## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding -cd $CORE_PATH -. edksetup.sh BaseTools -make -C BaseTools - -## Define platform specific environment variables. -PLATFORM_NAME=Vlv2TbltDevicePkg -PLATFORM_PACKAGE=Vlv2TbltDevicePkg -PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE - -cd $PLATFORM_PKG_PATH - -##********************************************************************** -## Parse command line arguments -##********************************************************************** - -## Optional arguments -for (( i=1; i<=$#; )) - do - if [ "$1" == "/?" ]; then - Usage - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then - GenLog=TRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then - GenReport=TRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then - build_threads=8 - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then - Clean=TRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then - Arch=X64 - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then - Arch=IA32 - shift - else - break - fi - done - -## Required argument(s) -if [ "$2" == "" ]; then - Usage -fi - -echo "Setting $1 platform configuration and BIOS ID..." - -if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then - export TARGET=RELEASE -else - export TARGET=DEBUG -fi - -##********************************************************************** -## Detect TOOL_CHAIN_TAG -##********************************************************************** -gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}') -case $gcc_version in - [1-3].*|4.[0-7].*) - echo MNW2 requires GCC4.8 or later - exit 1 - ;; - 4.8.*) - export TOOL_CHAIN_TAG=GCC48 - ;; - 4.9.*|6.[0-2].*) - export TOOL_CHAIN_TAG=GCC49 - ;; - *) - export TOOL_CHAIN_TAG=GCC5 - ;; -esac - -##********************************************************************** -## Generate $BUILD_PATH and make sure the directory exists -##********************************************************************** -if [ ! -d ${WORKSPACE}/Build ]; then - mkdir ${WORKSPACE}/Build -fi - -if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} -fi -BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_CHAIN_TAG} - -if [ ! -d $BUILD_PATH ]; then - mkdir $BUILD_PATH -fi - -##********************************************************************** -## Check for clean operation -##********************************************************************** -if [ $Clean == "TRUE" ]; then - echo Removing previous build files ... - if [ -d ${BUILD_PATH} ]; then - rm -r ${BUILD_PATH} - fi - if [ -d ${WORKSPACE}/Conf/.cache ]; then - rm -r ${WORKSPACE}/Conf/.cache - fi - exit 0 -fi - -##********************************************************************** -## Generate Build_Flags -##********************************************************************** - -Build_Flags="$Build_Flags -b $TARGET" -if [ $Arch == "IA32" ]; then - Build_Flags="$Build_Flags -a IA32" -else - Build_Flags="$Build_Flags -a IA32 -a X64" -fi -Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG" -Build_Flags="$Build_Flags -n $build_threads" -Capsule_Build_Flags="$Build_Flags" -Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc" -if [ $GenLog == "TRUE" ]; then - Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log" -fi -if [ $GenReport == "TRUE" ]; then - Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report" -fi - -##********************************************************************** -## Generate BIOS ID -##********************************************************************** - -echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env -echo BOARD_REV = L >> $BUILD_PATH/BiosId.env -if [ $Arch == "IA32" ]; then - echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env -fi -if [ $Arch == "X64" ]; then - echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env -fi -echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env -if [ $TARGET == "DEBUG" ]; then - echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env -fi -if [ $TARGET == "RELEASE" ]; then - echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env -fi -echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env - -python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/BiosId.txt - -##********************************************************************** -## Build BIOS -##********************************************************************** -echo "Invoking EDK2 build..." -echo build $Build_Flags -build $Build_Flags - -cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM - -##********************************************************************** -## Build Capsules -##********************************************************************** -echo "Invoking EDK2 build for capsules..." -echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc -build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc - -echo -echo -------------------- The EDKII BIOS build has successfully completed. -------------------- -echo -- 2.21.0.windows.1