##\r
# Import Modules\r
#\r
+from __future__ import absolute_import\r
from struct import *\r
-from GenFdsGlobalVariable import GenFdsGlobalVariable\r
+from .GenFdsGlobalVariable import GenFdsGlobalVariable\r
from io import BytesIO\r
import string\r
-from CommonDataClass.FdfClass import RegionClassObject\r
import Common.LongFilePathOs as os\r
from stat import *\r
from Common import EdkLogger\r
## generate Region\r
#\r
#\r
-class Region(RegionClassObject):\r
+class Region(object):\r
\r
## The constructor\r
#\r
# @param self The object pointer\r
#\r
def __init__(self):\r
- RegionClassObject.__init__(self)\r
-\r
+ self.Offset = None # The begin position of the Region\r
+ self.Size = None # The Size of the Region\r
+ self.PcdOffset = None\r
+ self.PcdSize = None\r
+ self.SetVarDict = {}\r
+ self.RegionType = None\r
+ self.RegionDataList = []\r
\r
## PadBuffer()\r
#\r
PadByte = pack('B', 0xFF)\r
else:\r
PadByte = pack('B', 0)\r
- PadData = ''.join(PadByte for i in xrange(0, Size))\r
- Buffer.write(PadData)\r
+ for i in range(0, Size):\r
+ Buffer.write(PadByte)\r
\r
## AddToBuffer()\r
#\r
# @param BlockSize block size of region\r
# @param BlockNum How many blocks in region\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
\r
- def AddToBuffer(self, Buffer, BaseAddress, BlockSizeList, ErasePolarity, ImageBinDict, vtfDict=None, MacroDict={}, Flag=False):\r
+ def AddToBuffer(self, Buffer, BaseAddress, BlockSizeList, ErasePolarity, ImageBinDict, MacroDict={}, Flag=False):\r
Size = self.Size\r
if not Flag:\r
GenFdsGlobalVariable.InfLogger('\nGenerate Region at Offset 0x%X' % self.Offset)\r
#\r
self.BlockInfoOfRegion(BlockSizeList, FvObj)\r
self.FvAddress = self.FvAddress + FvOffset\r
- FvAlignValue = self.GetFvAlignValue(FvObj.FvAlignment)\r
+ FvAlignValue = GenFdsGlobalVariable.GetAlignment(FvObj.FvAlignment)\r
if self.FvAddress % FvAlignValue != 0:\r
EdkLogger.error("GenFds", GENFDS_ERROR,\r
"FV (%s) is NOT %s Aligned!" % (FvObj.UiFvName, FvObj.FvAlignment))\r
- FvBuffer = BytesIO('')\r
+ FvBuffer = BytesIO()\r
FvBaseAddress = '0x%X' % self.FvAddress\r
BlockSize = None\r
BlockNum = None\r
- FvObj.AddToBuffer(FvBuffer, FvBaseAddress, BlockSize, BlockNum, ErasePolarity, vtfDict, Flag=Flag)\r
+ FvObj.AddToBuffer(FvBuffer, FvBaseAddress, BlockSize, BlockNum, ErasePolarity, Flag=Flag)\r
if Flag:\r
continue\r
\r
GenFdsGlobalVariable.InfLogger(' Region Name = None')\r
self.PadBuffer(Buffer, ErasePolarity, Size)\r
\r
- def GetFvAlignValue(self, Str):\r
- AlignValue = 1\r
- Granu = 1\r
- Str = Str.strip().upper()\r
- if Str.endswith('K'):\r
- Granu = 1024\r
- Str = Str[:-1]\r
- elif Str.endswith('M'):\r
- Granu = 1024 * 1024\r
- Str = Str[:-1]\r
- elif Str.endswith('G'):\r
- Granu = 1024 * 1024 * 1024\r
- Str = Str[:-1]\r
- else:\r
- pass\r
-\r
- AlignValue = int(Str) * Granu\r
- return AlignValue\r
-\r
## BlockSizeOfRegion()\r
#\r
# @param BlockSizeList List of block information\r
else:\r
# region ended within current blocks\r
if self.Offset + self.Size <= End:\r
- ExpectedList.append((BlockSize, (RemindingSize + BlockSize - 1) / BlockSize))\r
+ ExpectedList.append((BlockSize, (RemindingSize + BlockSize - 1) // BlockSize))\r
break\r
# region not ended yet\r
else:\r
UsedBlockNum = BlockNum\r
# region started in middle of current blocks\r
else:\r
- UsedBlockNum = (End - self.Offset) / BlockSize\r
+ UsedBlockNum = (End - self.Offset) // BlockSize\r
Start = End\r
ExpectedList.append((BlockSize, UsedBlockNum))\r
RemindingSize -= BlockSize * UsedBlockNum\r