def CreateBitWithSw(self, appBuildConfig: str, procName: str, outFile: str): """ Create a bit file that contains the freshly built software. This command can only be used after the ImportProjects() command was called. :param appBuildConfig: Application configuration to use (usually "Debug" or "Release") :param procName: Name of the processor to use (e.g. soc_i/microblaze_0) :param outFile: Path of the output .bit file to write (relative to the HW project dir) """ with TempWorkDir("/".join([self.workspace, self.hwName])): mmi = list(filter(lambda x: x.endswith(".mmi"), os.listdir()))[0] prefix = mmi.split(".")[0] mmi = os.path.abspath(os.curdir) + "/" + mmi bitin = os.path.abspath(os.curdir) + "/" + prefix + ".bit" appDir = "/".join([self.workspace, self.appName, appBuildConfig]) with TempWorkDir(appDir): try: elfName = list(filter(lambda x: x.endswith(".elf"), os.listdir()))[0] except IndexError: raise Exception("No ELF file found in application directory " + appDir) elf = os.path.abspath(os.curdir) + "/" + elfName with TempWorkDir("/".join([self.workspace, self.hwName])): call = ExtAppCall(".", "{} -meminfo {} -data {} -bit {} -proc {} -out {} -force".format(self._updatememCmd, mmi, elf, bitin, procName, outFile)) call.run_sync() self._UpdateStdOut(call)
def _RunSdk(self, tclString : str, debug : bool = False): with TempWorkDir(self.workspace): with TempFile("__sdk.tcl") as f: #Write Temporary TCL f.write("setws .\n") #Set workspace f.write(tclString) f.flush() if not debug: call = ExtAppCall(".", "{} __sdk.tcl".format(self._xsctCmd)) call.run_sync() self._UpdateStdOut(call) else: os.system("{} __sdk.tcl".format(self._xsctCmd))
def _RunVivado(self, workDir : str, args : str): #Windows if sys.platform.startswith("win"): vivadoCmd = "bin/vivado.bat" #Other OS not yet supported elif sys.platform.startswith("linux"): vivadoCmd = "bin/vivado" else: raise Exception("OS Not Supported") call = ExtAppCall(workDir, "{}/{} -mode batch {}".format(self._vivado_path, vivadoCmd, args)) call.run_sync() self.stderr = call.get_stderr() self.stdout = call.get_stdout() if len(self.stderr) != 0: raise Exception("STDERR not empty\n" + self.stderr) if call.get_exit_code() != 0: raise Exception("Command exited with code {}".format(call.get_exit_code()))