# @param BlockSize block size of FV\r
# @param BlockNum How many blocks in FV\r
# @param ErasePolarity Flash erase polarity\r
- # @param VtfDict VTF objects\r
# @param MacroDict macro value pair\r
# @retval string Generated FV file path\r
#\r
- def AddToBuffer (self, Buffer, BaseAddress=None, BlockSize= None, BlockNum=None, ErasePloarity='1', VtfDict=None, MacroDict = {}, Flag=False):\r
+ def AddToBuffer (self, Buffer, BaseAddress=None, BlockSize= None, BlockNum=None, ErasePloarity='1', MacroDict = {}, Flag=False):\r
if BaseAddress is None and self.UiFvName.upper() + 'fv' in GenFdsGlobalVariable.ImageBinDict:\r
return GenFdsGlobalVariable.ImageBinDict[self.UiFvName.upper() + 'fv']\r
\r
if self.FvBaseAddress is not None:\r
BaseAddress = self.FvBaseAddress\r
if not Flag:\r
- self._InitializeInf(BaseAddress, BlockSize, BlockNum, ErasePloarity, VtfDict)\r
+ self._InitializeInf(BaseAddress, BlockSize, BlockNum, ErasePloarity)\r
#\r
# First Process the Apriori section\r
#\r
FfsFileList.append(FileName)\r
# Add Apriori file name to Inf file\r
if not Flag:\r
- self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FILE_NAME = " + \\r
FileName + \\r
TAB_LINE_BREAK)\r
\r
FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, IsMakefile=Flag, FvName=self.UiFvName)\r
FfsFileList.append(FileName)\r
if not Flag:\r
- self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FILE_NAME = " + \\r
FileName + \\r
TAB_LINE_BREAK)\r
if not Flag:\r
- SaveFileOnChange(self.InfFileName, self.FvInfFile.getvalue(), False)\r
- self.FvInfFile.close()\r
+ FvInfFile = ''.join(self.FvInfFile)\r
+ SaveFileOnChange(self.InfFileName, FvInfFile, False)\r
#\r
# Call GenFv tool\r
#\r
# PI FvHeader is 0x48 byte\r
FvHeaderBuffer = FvFileObj.read(0x48)\r
Signature = FvHeaderBuffer[0x28:0x32]\r
- if Signature and Signature.startswith('_FVH'):\r
+ if Signature and Signature.startswith(b'_FVH'):\r
GenFdsGlobalVariable.VerboseLogger("\nGenerate %s FV Successfully" % self.UiFvName)\r
GenFdsGlobalVariable.SharpCounter = 0\r
\r
FvFileObj.seek(0)\r
Buffer.write(FvFileObj.read())\r
# FV alignment position.\r
- FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E]) & 0x1F)\r
+ FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E:0x2F]) & 0x1F)\r
if FvAlignmentValue >= 0x400:\r
if FvAlignmentValue >= 0x100000:\r
if FvAlignmentValue >= 0x1000000:\r
#The max alignment supported by FFS is 16M.\r
self.FvAlignment = "16M"\r
else:\r
- self.FvAlignment = str(FvAlignmentValue / 0x100000) + "M"\r
+ self.FvAlignment = str(FvAlignmentValue // 0x100000) + "M"\r
else:\r
- self.FvAlignment = str(FvAlignmentValue / 0x400) + "K"\r
+ self.FvAlignment = str(FvAlignmentValue // 0x400) + "K"\r
else:\r
# FvAlignmentValue is less than 1K\r
self.FvAlignment = str (FvAlignmentValue)\r
\r
## _InitializeInf()\r
#\r
- # Initilize the inf file to create FV\r
+ # Initialize the inf file to create FV\r
#\r
# @param self The object pointer\r
# @param BaseAddress base address of FV\r
# @param BlockSize block size of FV\r
# @param BlockNum How many blocks in FV\r
# @param ErasePolarity Flash erase polarity\r
- # @param VtfDict VTF objects\r
#\r
- def _InitializeInf (self, BaseAddress = None, BlockSize= None, BlockNum = None, ErasePloarity='1', VtfDict=None):\r
+ def _InitializeInf (self, BaseAddress = None, BlockSize= None, BlockNum = None, ErasePloarity='1'):\r
#\r
# Create FV inf file\r
#\r
self.InfFileName = os.path.join(GenFdsGlobalVariable.FvDir,\r
self.UiFvName + '.inf')\r
- self.FvInfFile = BytesIO()\r
+ self.FvInfFile = []\r
\r
#\r
# Add [Options]\r
#\r
- self.FvInfFile.writelines("[options]" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[options]" + TAB_LINE_BREAK)\r
if BaseAddress is not None:\r
- self.FvInfFile.writelines("EFI_BASE_ADDRESS = " + \\r
+ self.FvInfFile.append("EFI_BASE_ADDRESS = " + \\r
BaseAddress + \\r
TAB_LINE_BREAK)\r
\r
if BlockSize is not None:\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize + \\r
TAB_LINE_BREAK)\r
if BlockNum is not None:\r
- self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
+ self.FvInfFile.append("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockNum + \\r
TAB_LINE_BREAK)\r
else:\r
if self.BlockSizeList == []:\r
if not self._GetBlockSize():\r
#set default block size is 1\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = 0x1" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = 0x1" + TAB_LINE_BREAK)\r
\r
for BlockSize in self.BlockSizeList:\r
if BlockSize[0] is not None:\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize[0] + \\r
TAB_LINE_BREAK)\r
\r
if BlockSize[1] is not None:\r
- self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
+ self.FvInfFile.append("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockSize[1] + \\r
TAB_LINE_BREAK)\r
\r
if self.BsBaseAddress is not None:\r
- self.FvInfFile.writelines('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
+ self.FvInfFile.append('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.BsBaseAddress)\r
if self.RtBaseAddress is not None:\r
- self.FvInfFile.writelines('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
+ self.FvInfFile.append('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.RtBaseAddress)\r
#\r
# Add attribute\r
#\r
- self.FvInfFile.writelines("[attributes]" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[attributes]" + TAB_LINE_BREAK)\r
\r
- self.FvInfFile.writelines("EFI_ERASE_POLARITY = " + \\r
+ self.FvInfFile.append("EFI_ERASE_POLARITY = " + \\r
' %s' %ErasePloarity + \\r
TAB_LINE_BREAK)\r
if not (self.FvAttributeDict is None):\r
if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1'):\r
self.UsedSizeEnable = True\r
continue\r
- self.FvInfFile.writelines("EFI_" + \\r
+ self.FvInfFile.append("EFI_" + \\r
FvAttribute + \\r
' = ' + \\r
self.FvAttributeDict[FvAttribute] + \\r
TAB_LINE_BREAK )\r
if self.FvAlignment is not None:\r
- self.FvInfFile.writelines("EFI_FVB2_ALIGNMENT_" + \\r
+ self.FvInfFile.append("EFI_FVB2_ALIGNMENT_" + \\r
self.FvAlignment.strip() + \\r
" = TRUE" + \\r
TAB_LINE_BREAK)\r
GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))\r
else:\r
TotalSize = 16 + 4\r
- Buffer = ''\r
+ Buffer = bytearray()\r
if self.UsedSizeEnable:\r
TotalSize += (4 + 4)\r
## define EFI_FV_EXT_TYPE_USED_SIZE_TYPE 0x03\r
#\r
Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)\r
+ PackGUID(Guid)\r
- + self.UiFvName)\r
+ + self.UiFvName.encode('utf-8'))\r
\r
for Index in range (0, len(self.FvExtEntryType)):\r
if self.FvExtEntryType[Index] == 'FILE':\r
if Changed:\r
if os.path.exists (self.InfFileName):\r
os.remove (self.InfFileName)\r
- self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FV_EXT_HEADER_FILE_NAME = " + \\r
FvExtHeaderFileName + \\r
TAB_LINE_BREAK)\r
\r
#\r
# Add [Files]\r
#\r
- self.FvInfFile.writelines("[files]" + TAB_LINE_BREAK)\r
- if VtfDict and self.UiFvName in VtfDict:\r
- self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
- VtfDict[self.UiFvName] + \\r
- TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[files]" + TAB_LINE_BREAK)\r