diff --git a/IntelFsp2Pkg/Tools/SplitFspBin.py b/IntelFsp2Pkg/Tools/SplitFspBin.py index 2458231d09..15c8bebee2 100644 --- a/IntelFsp2Pkg/Tools/SplitFspBin.py +++ b/IntelFsp2Pkg/Tools/SplitFspBin.py @@ -1,6 +1,6 @@ ## @ FspTool.py # -# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
+# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -14,12 +14,12 @@ import argparse from ctypes import * """ -This utility supports some operations for Intel FSP 2.0 image. +This utility supports some operations for Intel FSP 1.x/2.x image. It supports: - - Display FSP 2.0 information header - - Split FSP 2.0 image into individual FSP-T/M/S/O component - - Rebase FSP 2.0 components to a different base address - - Generate FSP mapping C header file + - Display FSP 1.x/2.x information header + - Split FSP 2.x image into individual FSP-T/M/S/O component + - Rebase FSP 1.x/2.x components to a different base address + - Generate FSP 1.x/2.x mapping C header file """ CopyRightHeaderFile = """/* @@ -500,8 +500,6 @@ class FirmwareDevice: fih = None for fsp in self.FspList: - if fsp.Fih.HeaderRevision < 3: - raise Exception("ERROR: FSP 1.x is not supported by this tool !") if not fih: fih = fsp.Fih else: @@ -713,6 +711,8 @@ def SplitFspBin (fspfile, outdir, nametemplate): fd.ParseFsp () for fsp in fd.FspList: + if fsp.Fih.HeaderRevision < 3: + raise Exception("ERROR: FSP 1.x is not supported by the split command !") ftype = fsp.Type if not nametemplate: nametemplate = fspfile @@ -742,6 +742,11 @@ def RebaseFspBin (FspBinary, FspComponent, FspBase, OutputDir, OutputFile): found = False for fsp in fd.FspList: + # Is this FSP 1.x single binary? + if fsp.Fih.HeaderRevision < 3: + found = True + ftype = 'X' + break ftype = fsp.Type.lower() if ftype == fspcomp: found = True diff --git a/IntelFsp2Pkg/Tools/UserManuals/SplitFspBinUserManual.md b/IntelFsp2Pkg/Tools/UserManuals/SplitFspBinUserManual.md index 064e0ac845..06d87bbb2e 100644 --- a/IntelFsp2Pkg/Tools/UserManuals/SplitFspBinUserManual.md +++ b/IntelFsp2Pkg/Tools/UserManuals/SplitFspBinUserManual.md @@ -1,68 +1,71 @@ -# SplitFspBin.py is a python script to support some operations on Intel FSP 2.0 image. +# SplitFspBin.py is a python script to support some operations on Intel FSP 1.x/2.x image. It supports: -- Split Intel FSP 2.0 image into individual FSP-T/M/S/O component +- Split Intel FSP 2.x image into individual FSP-T/M/S/O component -- Rebase Intel FSP 2.0 components to different base addresses +- Rebase Intel FSP 1.x/2.x components to different base addresses -- Generate Intel FSP 2.0 C header file +- Generate Intel FSP 1.x/2.x C header file -- Display Intel FSP 2.0 information header for each FSP component +- Display Intel FSP 1.x/2.x information header for each FSP component -## Split Intel FSP 2.0 image +## Split Intel FSP 2.x image -To split individual FSP component in Intel FSP 2.0 image, the following +FSP 1.x image is not supported by split command. +To split individual FSP component in Intel FSP 2.x image, the following command can be used: **python SplitFspBin.py split [-h] -f FSPBINARY [-o OUTPUTDIR] [-n NAMETEMPLATE]** -For example: +For example: `python SplitFspBin.py split -f FSP.bin` It will create FSP_T.bin, FSP_M.bin and FSP_S.bin in current directory. -## Rebase Intel FSP 2.0 components +## Rebase Intel FSP 1.x/2.x components -To rebase one or multiple FSP components in Intel FSP 2.0 image, the following +To rebase one or multiple FSP components in Intel FSP 1.x/2.x image, the following command can be used: **python SplitFspBin.py rebase [-h] -f FSPBINARY -c {t,m,s,o} [{t,m,s,o} ...] -b FSPBASE [FSPBASE ...] [-o OUTPUTDIR] [-n OUTPUTFILE]** -For example: +For example: - `python SplitFspBin.py rebase -f FSP.bin –c t –b 0xFFF00000 –n FSP_new.bin` + `python SplitFspBin.py rebase -f FSP.bin -c t -b 0xFFF00000 -n FSP_new.bin` It will rebase FSP-T component inside FSP.bin to new base 0xFFF00000 and save the - rebased Intel FSP 2.0 image into file FSP_new.bin. + rebased Intel FSP 2.x image into file FSP_new.bin. + For FSP 1.x image there is only one component in binary so above command also + works for FSP 1.x image. - `python SplitFspBin.py rebase -f FSP.bin –c t m –b 0xFFF00000 0xFEF80000 –n FSP_new.bin` + `python SplitFspBin.py rebase -f FSP.bin -c t m -b 0xFFF00000 0xFEF80000 -n FSP_new.bin` It will rebase FSP-T and FSP-M components inside FSP.bin to new base 0xFFF00000 - and 0xFEF80000 respectively, and save the rebased Intel FSP 2.0 image into file + and 0xFEF80000 respectively, and save the rebased Intel FSP 2.x image into file FSP_new.bin file. -## Generate Intel FSP 2.0 C header file +## Generate Intel FSP 1.x/2.x C header file -To generate Intel FSP 2.0 C header file, the following command can be used: +To generate Intel FSP 1.x/2.x C header file, the following command can be used: **Python SplitFspBin.py genhdr [-h] -f FSPBINARY [-o OUTPUTDIR] [-n HFILENAME]** -For example: +For example: - `python SplitFspBin.py genhdr -f FSP.bin –n FSP.h` + `python SplitFspBin.py genhdr -f FSP.bin -n FSP.h` It will create the C header file FSP.h containing the image ID, revision, offset and size for each individual FSP component. -## Display Intel FSP 2.0 information header +## Display Intel FSP 1.x/2.x information header -To display Intel FSP 2.0 information headers, the following command can be used: +To display Intel FSP 1.x/2.x information headers, the following command can be used: **Python SplitFspBin.py info [-h] -f FSPBINARY** -For example: +For example: `python SplitFspBin.py info -f FSP.bin`