337 lines
12 KiB
Batchfile
337 lines
12 KiB
Batchfile
@REM
|
|
@REM This bat file is used to generate EDK2 standard capsule image for Intel Chasm Falls
|
|
@REM
|
|
@REM ******************************************************************************
|
|
@REM * Copyright (c) 2020 - 2021, Insyde Software Corp. All Rights Reserved.
|
|
@REM *
|
|
@REM * You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
@REM * transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
@REM * any part of this publication in any form, by any means, without the prior
|
|
@REM * written permission of Insyde Software Corporation.
|
|
@REM *
|
|
@REM ******************************************************************************
|
|
|
|
@echo off
|
|
|
|
@REM ====================== ME setting ===============================
|
|
@REM
|
|
@REM ME_VERSION = 0xMMHHBBBB
|
|
@REM ex: Intel CSME 16.0.10.1450 -> 0x000A05AA
|
|
@REM
|
|
set ME_VERSION=0x000A05AA
|
|
@REM
|
|
@REM ESRT GUID:
|
|
@REM Adl_LP_Cons = 23192307-d667-4bdf-af1a-6059db171246
|
|
@REM Adl_LP_Corp = 4e78ce68-5389-4a95-bf10-e3568c30caf8
|
|
@REM Adl_H_Cons = 7aa69739-8f78-41cb-bf44-854e2cb516bd
|
|
@REM Adl_H_Corp = 347efe23-9f9a-4b26-b4db-e2414872dd14
|
|
@REM
|
|
set ME_ESRT_GUID=23192307-d667-4bdf-af1a-6059db171246
|
|
|
|
set ME_LSV=0x00000001
|
|
@REM ===================== Micdoeocde setting ========================
|
|
|
|
set SLOT_SIZE=0x3B000
|
|
set FW_VERSION=0x0002
|
|
set LSV=0x0001
|
|
set FW_VERSION_STRING="Version 0.0.0.2"
|
|
@REM
|
|
@REM UC0DE_MODE = (ucodefull | ucodeslot)
|
|
@REM If bios guard enable, the UC0DE_MODE only support ucodefull mode.
|
|
@REM
|
|
set UCODE_MODE=ucodefull
|
|
|
|
@REM =================================================================
|
|
@REM
|
|
@REM Environment setting
|
|
@REM
|
|
@set PROJECT_FOLDER=%WORKSPACE%\%PROJECT_REL_PATH%\%PROJECT_PKG%
|
|
@for /f "tokens=3" %%a in ('find "TARGET " %WORKSPACE%\Conf\target.txt') do set TARGET=%%a
|
|
@if exist %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\Ffs (
|
|
@pushd %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\Ffs
|
|
@dir /a:d /b > temp.log
|
|
@for /f "tokens=1" %%a in ('findstr "CAPSULEPAYLOADBIOS" temp.log') do rd /s /q %%a
|
|
@for /f "tokens=1" %%a in ('findstr "CAPSULEPAYLOADBTGACM" temp.log') do rd /s /q %%a
|
|
@del /q temp.log
|
|
|
|
@if exist CAPSULEPAYLOADBIOS.inf del /q CAPSULEPAYLOADBIOS.inf
|
|
@if exist FvAddress.inf del /q FvAddress.inf
|
|
@if exist CAPSULEPAYLOADBTGACM.inf del /q CAPSULEPAYLOADBTGACM.inf
|
|
@popd
|
|
)
|
|
@if not exist %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN% mkdir %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%
|
|
|
|
set PLATFORMSAMPLE_PACKAGE=AlderLakePlatSamplePkg
|
|
|
|
set BUILD_BIOS_CAPSULE=FALSE
|
|
set BUILD_GEN1_CAPSULE=FALSE
|
|
set BUILD_GEN2_CAPSULE=FALSE
|
|
set BUILD_ME_CAPSULE=FALSE
|
|
set BUILD_BTGACM_CAPSULE=FALSE
|
|
set BIOS_GUARD_NEED=FALSE
|
|
|
|
@REM ============================= Main ==============================
|
|
|
|
@if /I "gen1" == "%1" (
|
|
set BUILD_GEN1_CAPSULE=TRUE
|
|
set BUILD_BIOS_CAPSULE=TRUE
|
|
goto GenCapsule
|
|
)else if /I "gen2" == "%1" (
|
|
set BUILD_GEN2_CAPSULE=TRUE
|
|
set BUILD_BIOS_CAPSULE=TRUE
|
|
goto GenCapsule
|
|
)else if /I "me" == "%1" (
|
|
set BUILD_ME_CAPSULE=TRUE
|
|
goto Setpath
|
|
)else if /I "ucode" == "%1" (
|
|
goto GenUcode
|
|
)else if /I "btgacm" == "%1" (
|
|
set BUILD_BTGACM_CAPSULE=TRUE
|
|
goto GenBtGAcm
|
|
)else if /I "btgacmbg" == "%1" (
|
|
set BUILD_BTGACM_CAPSULE=TRUE
|
|
set BIOS_GUARD_NEED=TRUE
|
|
set ERROR_OCCUR=FALSE
|
|
goto GenBtGAcm
|
|
)else (
|
|
goto CapsuleHelp
|
|
)
|
|
|
|
:GenBtGAcm
|
|
@REM
|
|
@REM Make BtGAcm binary 4K aligned for SPI flash update.
|
|
@REM
|
|
set FIRMWARE_BINARY=%PROJECT_FOLDER%\CapsuleUpdate\Binary
|
|
call %WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\NewGenCap\PyScript\GenAligned.exe -a 4K -i %FIRMWARE_BINARY%\BIOSAC.bin -o %FIRMWARE_BINARY%\BtGAcm_pad.bin
|
|
|
|
if %BIOS_GUARD_NEED% EQU FALSE goto BtgAcmSkipBiosgaurd
|
|
set BIOSGUARD_SETTING_PATH=%PROJECT_FOLDER%\PlatformConfig\BiosGuard
|
|
set CHIPSET_PKG_TOOLS_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\AlderLakeChipsetPkg\Tools\Bin\Win32
|
|
|
|
@REM
|
|
@REM check Signtool exist.
|
|
@REM
|
|
set SIGNER_CHIPSET_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\%CHIPSET_PKG%\Tools\Bin\Win32\Signer
|
|
set SIGNER_PATH=DEVTLS\SignTool
|
|
set SIGNER_PRESET_PATH=C:\%SIGNER_PATH%;D:\%SIGNER_PATH%;E:\%SIGNER_PATH%;F:\%SIGNER_PATH%;G:\%SIGNER_PATH%;H:\%SIGNER_PATH%;%SIGNER_CHIPSET_PATH%
|
|
set PATH=%SIGNER_PRESET_PATH%;%PATH%
|
|
signtool /? 2>nul
|
|
if errorlevel 1 goto SignTool_NotFound
|
|
|
|
@REM
|
|
@REM Get information (BiosAcm Base Address and Padding file size)
|
|
@REM
|
|
for /f "tokens=3" %%a in ('find "BaseAddress" BtGAcmUpdateConfig.ini') do set BtgAcmBaseAddress=%%a
|
|
for /f "usebackq" %%A in ('%FIRMWARE_BINARY%\BtGAcm_pad.bin') do set BtgAcmLenght=%%~zA
|
|
cd %FIRMWARE_BINARY%
|
|
@REM
|
|
@REM Gen BiosGuard Header and Certificate
|
|
@REM
|
|
%CHIPSET_PKG_TOOLS_PATH%\GenBiosGuardHdr.exe -i %BIOSGUARD_SETTING_PATH%\BiosGuardSetting.ini -p %BIOSGUARD_SETTING_PATH%\BGSL\InsydeBiosGuardScript.bin -f %FIRMWARE_BINARY%\BtGAcm_pad.bin -m 5 -d %BtgAcmBaseAddress% -l %BtgAcmLenght% -o BtGAcm_BG_HDR.bin
|
|
Copy /y /b BtGAcm_BG_HDR.bin+BtGAcm_pad.bin BtgAcm_BG_Sign.bin
|
|
%CHIPSET_PKG_TOOLS_PATH%\Signer\iEFIFlashSigner.exe engineer -signbiosguard %FIRMWARE_BINARY%\BtgAcm_BG_Sign.bin -n "QA Certificate."
|
|
Copy /y /b %CHIPSET_PKG_TOOLS_PATH%\Signer\*_Sign.bin.p7.cer *_Sign.cer
|
|
if errorlevel 1 goto BGSignError
|
|
del %CHIPSET_PKG_TOOLS_PATH%\Signer\*_Sign.bin*
|
|
copy /y /b BtGAcm_BG_HDR.bin + BtgAcm_BG_Sign.cer BiosGuard_BtgAcm.bin
|
|
del BtGAcm_BG_*.*
|
|
cd ..
|
|
:BtgAcmSkipBiosgaurd
|
|
|
|
|
|
:GenCapsule
|
|
@echo.
|
|
@echo "#### Generate Chasm Falls capsule fv ####"
|
|
@echo.
|
|
@if %BUILD_GEN1_CAPSULE% EQU TRUE (
|
|
call genfds.exe ^
|
|
-f %PROJECT_PKG%\CapsuleUpdate\CapsulePkg.fdf ^
|
|
-p %PROJECT_PKG%\CapsuleUpdate\CapsulePkg.dsc ^
|
|
-i CapsulePayloadBios
|
|
)else if %BUILD_GEN2_CAPSULE% EQU TRUE (
|
|
call genfds.exe ^
|
|
-f %PROJECT_PKG%\CapsuleUpdate\CapsulePkgRes.fdf ^
|
|
-p %PROJECT_PKG%\CapsuleUpdate\CapsulePkgRes.dsc ^
|
|
-i CapsulePayloadBios
|
|
)else if %BUILD_BTGACM_CAPSULE% EQU TRUE (
|
|
@REM
|
|
@REM Update BtGAcmUpdateConfig.ini
|
|
@REM Prepare BtGAcm Payload.
|
|
@REM
|
|
if %BIOS_GUARD_NEED% EQU TRUE (
|
|
call %WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\GenBiosUpdateImages\CapsuleRecoveryGen\SplitFv.exe btgaacmbgconfig -p %FIRMWARE_BINARY%\BtGAcm_pad.bin -b %FIRMWARE_BINARY%\BiosGuard_BtgAcm.bin -i BtGAcmUpdateConfig.ini
|
|
call genfds.exe ^
|
|
-f %PROJECT_PKG%\CapsuleUpdate\BtGAcm_BiosGuardCapsulePkg.fdf ^
|
|
-p %PROJECT_PKG%\CapsuleUpdate\BtGAcmCapsulePkg.dsc ^
|
|
-i CapsulePayloadBtGAcm
|
|
del %FIRMWARE_BINARY%\BiosGuard_BtgAcm.bin
|
|
)else (
|
|
call %WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\GenBiosUpdateImages\CapsuleRecoveryGen\SplitFv.exe btgaacmconfig -p %FIRMWARE_BINARY%\BtGAcm_pad.bin -i BtGAcmUpdateConfig.ini
|
|
call genfds.exe ^
|
|
-f %PROJECT_PKG%\CapsuleUpdate\BtGAcmCapsulePkg.fdf ^
|
|
-p %PROJECT_PKG%\CapsuleUpdate\BtGAcmCapsulePkg.dsc ^
|
|
-i CapsulePayloadBtGAcm
|
|
)
|
|
)else (
|
|
@echo "Wrong cmd"
|
|
goto CapsuleBuildDone
|
|
)
|
|
|
|
:Setpath
|
|
@REM
|
|
@REM Set path
|
|
@REM
|
|
set TOOLS_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\GenerateCapsule
|
|
set FIRMWARE_BINARY=%PROJECT_FOLDER%\CapsuleUpdate\Binary
|
|
|
|
@if %BUILD_BIOS_CAPSULE% EQU TRUE (
|
|
copy /y %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\CAPSULEPAYLOADBIOS.Fv %TOOLS_PATH%\CapsulePayloadBios.fv > NUL
|
|
)
|
|
|
|
@if %BUILD_ME_CAPSULE% EQU TRUE (
|
|
set FIRMWARE_BINARY=%PROJECT_FOLDER%\CapsuleUpdate\Binary\FWUpdate.bin
|
|
)
|
|
|
|
@if %BUILD_BTGACM_CAPSULE% EQU TRUE (
|
|
copy /y %WORKSPACE%\Build\%PROJECT_PKG%\%TARGET%_%TOOL_CHAIN%\FV\CAPSULEPAYLOADBTGACM.Fv %TOOLS_PATH%\CapsulePayloadBtGAcm.fv > NUL
|
|
)
|
|
|
|
pushd %TOOLS_PATH%
|
|
|
|
@echo.
|
|
@echo "#### Sign capsule image ####"
|
|
@echo.
|
|
@REM @if not exist %SIGN_TOOL% (
|
|
@REM @echo.
|
|
@REM @echo "*****ERROR: No OpenSSL in %PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\GenerateCapsule\OpenSSL. Fail to sign capsule image.*****"
|
|
@REM goto EndGenCapsule
|
|
@REM )
|
|
|
|
@REM
|
|
@REM Sign Bios capsule
|
|
@REM
|
|
@if %BUILD_BIOS_CAPSULE% EQU TRUE (
|
|
|
|
call GenCapsuleSysFwBios.bat CAPSULEPAYLOADBIOS.Fv %TOOLS_PATH%
|
|
@if %BUILD_GEN1_CAPSULE% EQU TRUE (
|
|
copy /y SystemFwBios.Cap %PROJECT_FOLDER%\CapsuleUpdate\OutPut\SystemFwBiosGen1.Cap > NUL
|
|
)
|
|
@if %BUILD_GEN2_CAPSULE% EQU TRUE (
|
|
copy /y SystemFwBios.Cap %PROJECT_FOLDER%\CapsuleUpdate\OutPut\SystemFwBiosGen2.Cap > NUL
|
|
)
|
|
if exist CapsulePayloadBios.fv del CapsulePayloadBios.fv
|
|
if exist SystemFwBios.Cap del SystemFwBios.Cap
|
|
|
|
@REM
|
|
@REM Sign ME capsule
|
|
@REM
|
|
)else if %BUILD_ME_CAPSULE% EQU TRUE (
|
|
|
|
@if not exist %FIRMWARE_BINARY% (
|
|
@echo.
|
|
@echo "*****ERROR: No FWUpdate.bin in %PROJECT_PKG%\CapsuleUpdate\Binary. Fail to sign ME capsule image.*****"
|
|
goto EndGenCapsule
|
|
)
|
|
|
|
call GenCapsuleSysFwMe.bat %FIRMWARE_BINARY% %ME_VERSION% %ME_ESRT_GUID% %ME_LSV% %TOOLS_PATH%
|
|
copy /y SystemMeFw.Cap %PROJECT_FOLDER%\CapsuleUpdate\OutPut > NUL
|
|
if exist SystemMeFw.Cap del SystemMeFw.Cap
|
|
|
|
@REM
|
|
@REM Sign BtG ACM capsule
|
|
@REM
|
|
)else if %BUILD_BTGACM_CAPSULE% EQU TRUE (
|
|
|
|
call GenCapsuleSysFwBtGAcm.bat CapsulePayloadBtGAcm.Fv %TOOLS_PATH%
|
|
copy /y SystemFwBtGAcm.Cap %PROJECT_FOLDER%\CapsuleUpdate\OutPut > NUL
|
|
|
|
if exist CapsulePayloadBtGAcm.fv del CapsulePayloadBtGAcm.fv
|
|
if exist SystemFwBtGAcm.Cap del SystemFwBtGAcm.Cap
|
|
|
|
@REM
|
|
@REM Error
|
|
@REM
|
|
)else (
|
|
@echo "Wrong cmd"
|
|
goto CapsuleBuildDone
|
|
)
|
|
|
|
|
|
:EndGenCapsule
|
|
popd
|
|
goto CapsuleBuildDone
|
|
|
|
|
|
:GenUcode
|
|
set TOOLS_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\GenerateCapsule
|
|
set MICROCODE_TOOLS_PATH=%WORKSPACE%\%CHIPSET_REL_PATH%\%PLATFORMSAMPLE_PACKAGE%\Features\CapsuleUpdate\Tools\NewGenCap
|
|
set MICROCODE_PATH=%PROJECT_PKG%\CapsuleUpdate\Binary
|
|
set WORKSPACE_PLATFORM=%WORKSPACE%\%PROJECT_REL_PATH%
|
|
set PROJECT_BOARD_PACKAGE=%PROJECT_REL_PATH%\%PROJECT_PKG%
|
|
pushd %MICROCODE_TOOLS_PATH%
|
|
call NewGenCap.exe
|
|
popd
|
|
|
|
@REM
|
|
@REM UcodeFullModeFv.bin is Insyde ucode FV image with full mode.
|
|
@REM UcodeSlotModeFv.bin is Insyde ucode FV image with slot mode.
|
|
@REM
|
|
cd Temp
|
|
if %UCODE_MODE% == ucodefull (
|
|
copy /y XdrMicrocodeFv.data %PROJECT_FOLDER%\CapsuleUpdate\OutPut\UcodeFullModeFv.bin > NUL
|
|
) else if %UCODE_MODE% == ucodeslot (
|
|
copy /y XdrSlotVersionXdrSlotuCodeArray.data %PROJECT_FOLDER%\CapsuleUpdate\OutPut\UcodeSlotModeFv.bin > NUL
|
|
)
|
|
@REM
|
|
@REM BiosGuardUcodeFv.bin is Insyde ucode FV image with bios guard enable.
|
|
@REM Put this binary to %PROJECT_FOLDER%\PlatformConfig\BiosGuard,
|
|
@REM and run BiosGuardImage.bat to generate ucode FV image with bios guard header.
|
|
@REM
|
|
cd FV
|
|
if %UCODE_MODE% == ucodefull (
|
|
copy /y CAPSULEPAYLOADUCODE.Fv %PROJECT_FOLDER%\CapsuleUpdate\OutPut\BiosGuardUcodeFv.bin > NUL
|
|
)
|
|
cd ..
|
|
cd ..
|
|
if exist Temp rd /s /q Temp
|
|
pushd Binary
|
|
if exist *.mcb_backup del *.mcb /q
|
|
if exist *.mcb_backup ren *.mcb_backup *.mcb
|
|
if exist MicrocodeVersion.data del MicrocodeVersion.data /q
|
|
popd
|
|
goto CapsuleBuildDone
|
|
|
|
:BGSignError
|
|
del %PROJECT_FOLDER%\CapsuleUpdate\Binary\*_BG_*.bin
|
|
echo.
|
|
echo !!! ERROR !!!
|
|
echo Create Capsule with Bios Guard process has been terminated
|
|
echo Please check iEFIFlashSigner.exe command is correct in BuildCapsule.bat
|
|
echo !!! ERROR !!!
|
|
echo.
|
|
pushd %PROJECT_FOLDER%\CapsuleUpdate
|
|
goto CapsuleBuildDone
|
|
|
|
:SignTool_NotFound
|
|
start /WAIT %PROJECT_FOLDER%\CautionSiger.bat
|
|
echo.
|
|
echo "!!! ERROR !!! Create capsule image process has been terminated due to SignTool is missing!"
|
|
echo.
|
|
exit /b
|
|
|
|
|
|
:CapsuleHelp
|
|
@echo.
|
|
@echo. Generate Edk2 capsule image.
|
|
@echo Run ProjectBuild.bat to initialize environment.
|
|
@echo Cmd: BuildCapsule.bat [target:gen1/gen2/me/ucode/btgacm/btgacmbg]
|
|
@echo target Assign Capsule build target: gen1/gen2/me/ucode/btgacm/btgacmbg
|
|
@echo gen1 : Build Intel GEN1 BIOS Capsule
|
|
@echo gen2 : Build Intel GEN2 BIOS Capsule
|
|
@echo me : Build Intel ME Capsule
|
|
@echo ucode : Build Intel Ucode Capsule and Insyde Ucode payload
|
|
@echo btgacm : Build Intel BtG ACM Capsule
|
|
@echo btgacmbg : Build Intel BtG ACM Capsule with Bios Guard
|
|
@echo.
|
|
|
|
:CapsuleBuildDone |