]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/Fd.py
Sync basetools' source and binary files with r1707 of the basetools project.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / Fd.py
index 99baa6abe55796c8c0d897bebfad6aa503e18730..370008c91897191178404fd30a96e7e6704d8b50 100644 (file)
@@ -26,6 +26,7 @@ from CommonDataClass.FdfClass import FDClassObject
 from Common import EdkLogger\r
 from Common.BuildToolError import *\r
 from Common.Misc import SaveFileOnChange\r
+from GenFds import GenFds\r
 \r
 ## generate FD\r
 #\r
@@ -42,11 +43,12 @@ class FD(FDClassObject):
     #\r
     #   Generate FD\r
     #\r
-    #   @param  self        The object pointer\r
-    #   @param  FvBinDict   dictionary contains generated FV name and its file name\r
     #   @retval string      Generated FD file name\r
     #\r
-    def GenFd (self, FvBinDict):\r
+    def GenFd (self):\r
+        if self.FdUiName.upper() + 'fd' in GenFds.ImageBinDict.keys():\r
+            return GenFds.ImageBinDict[self.FdUiName.upper() + 'fd']\r
+\r
         #\r
         # Print Information\r
         #\r
@@ -80,7 +82,7 @@ class FD(FDClassObject):
                 PadRegion = Region.Region()\r
                 PadRegion.Offset = PreviousRegionStart + PreviousRegionSize\r
                 PadRegion.Size = RegionObj.Offset - PadRegion.Offset\r
-                PadRegion.AddToBuffer(FdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, FvBinDict, self.vtfRawDict, self.DefineVarDict)\r
+                PadRegion.AddToBuffer(FdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, GenFds.ImageBinDict, self.vtfRawDict, self.DefineVarDict)\r
             PreviousRegionStart = RegionObj.Offset\r
             PreviousRegionSize = RegionObj.Size\r
             #\r
@@ -89,23 +91,19 @@ class FD(FDClassObject):
             if PreviousRegionSize > self.Size:\r
                 EdkLogger.error("GenFds", GENFDS_ERROR, 'FD %s size too small' % self.FdUiName)\r
             GenFdsGlobalVariable.VerboseLogger('Call each region\'s AddToBuffer function')\r
-            RegionObj.AddToBuffer (FdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, FvBinDict, self.vtfRawDict, self.DefineVarDict)\r
+            RegionObj.AddToBuffer (FdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, GenFds.ImageBinDict, self.vtfRawDict, self.DefineVarDict)\r
         #\r
         # Create a empty Fd file\r
         #\r
         GenFdsGlobalVariable.VerboseLogger ('Create an empty Fd file')\r
-        FdFileName = os.path.join(GenFdsGlobalVariable.FvDir,\r
-                                  self.FdUiName + '.fd')\r
-        #FdFile = open(FdFileName, 'wb')\r
-\r
+        FdFileName = os.path.join(GenFdsGlobalVariable.FvDir,self.FdUiName + '.fd')\r
         #\r
         # Write the buffer contents to Fd file\r
         #\r
         GenFdsGlobalVariable.VerboseLogger('Write the buffer contents to Fd file')\r
         SaveFileOnChange(FdFileName, FdBuffer.getvalue())\r
-        #FdFile.write(FdBuffer.getvalue());\r
-        #FdFile.close();\r
         FdBuffer.close();\r
+        GenFds.ImageBinDict[self.FdUiName.upper() + 'fd'] = FdFileName\r
         return FdFileName\r
 \r
     ## generate VTF\r