public GeneratedProject(LoadedBSP.ConfiguredMCU mcu, VendorSample vs, string projectDir, Dictionary <string, string> bspDict, string[] frameworks) : this(projectDir, mcu, frameworks) { _ProjectDir = projectDir; _LinkerScript = vs.LinkerScript; _SourceFiles.AddRange(vs.SourceFiles.Select(s => VariableHelper.ExpandVariables(s, bspDict))); var cf = vs.ExtraFiles?.Select(s1 => { var s2 = VariableHelper.ExpandVariables(s1.SourcePath, bspDict); var targetFile = projectDir + "\\" + s1.TargetPath.Replace("/", "\\"); var pth = Path.GetDirectoryName(targetFile); if (!Directory.Exists(pth)) { Directory.CreateDirectory(pth); } if (!File.Exists(targetFile)) { File.Copy(s2.Replace("/", "\\"), targetFile); } return(s1.TargetPath); }); if (cf != null) { _SourceFiles.AddRange(cf); } }
public GeneratedProject(LoadedBSP.ConfiguredMCU mcu, VendorSample vs, string projectDir, Dictionary <string, string> bspDict, string[] frameworks) : this(projectDir, mcu, frameworks) { _ProjectDir = projectDir; _SourceFiles.AddRange(vs.SourceFiles.Select(s => VariableHelper.ExpandVariables(s, bspDict))); }
public GeneratedProject(string projectDir, LoadedBSP.ConfiguredMCU mcu, string[] selectedFrameworks) { _ProjectDir = projectDir; MCU = mcu; if (MCU.BSP.BSP.Frameworks != null) foreach (var fw in MCU.BSP.BSP.Frameworks) { if (!selectedFrameworks.Contains(fw.ID)) { if (fw.ClassID != null && selectedFrameworks.Contains(fw.ClassID)) { try { if (!fw.IsCompatibleWithMCU(MCU.ExpandedMCU.ID)) continue; } catch { continue; } } else continue; } _Frameworks.Add(fw); } }
private static TestResult TestVendorSample(LoadedBSP.LoadedMCU mcu, BSPEngine.VendorSample vs, string mcuDir, VendorSampleDirectory sampleDir) { var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); configuredMCU.Configuration["com.sysprogs.toolchainoptions.arm.libnosys"] = "--specs=nosys.specs"; if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var entries = vs.Configuration.MCUConfiguration?.Entries; if (entries != null) { foreach (var e in entries) { configuredMCU.Configuration[e.Key] = e.Value; } } var bspDict = configuredMCU.BuildSystemDictionary(SystemDirs); bspDict["PROJECTNAME"] = "test"; bspDict["SYS:VSAMPLE_DIR"] = sampleDir.Path; var prj = new GeneratedProject(configuredMCU, vs, mcuDir, bspDict, vs.Configuration.Frameworks ?? new string[0]); var projectCfg = PropertyDictionary2.ReadPropertyDictionary(vs.Configuration.MCUConfiguration); var frameworkCfg = PropertyDictionary2.ReadPropertyDictionary(vs.Configuration.Configuration); foreach (var k in projectCfg.Keys) { bspDict[k] = projectCfg[k]; } var frameworkIDs = vs.Configuration.Frameworks?.ToDictionary(fw => fw, fw => true); prj.AddBSPFilesToProject(bspDict, frameworkCfg, frameworkIDs); var flags = prj.GetToolFlags(bspDict, frameworkCfg, frameworkIDs); //ToolFlags flags = new ToolFlags { CXXFLAGS = " ", COMMONFLAGS = "-mcpu=cortex-m3 -mthumb", LDFLAGS = "-Wl,-gc-sections -Wl,-Map," + "test.map", CFLAGS = "-ffunction-sections -Os -MD" }; flags.CFLAGS += " -MD"; flags.CXXFLAGS += " -MD"; flags.IncludeDirectories = LoadedBSP.Combine(flags.IncludeDirectories, vs.IncludeDirectories).Distinct().ToArray(); flags.PreprocessorMacros = LoadedBSP.Combine(flags.PreprocessorMacros, vs.PreprocessorMacros); flags = LoadedBSP.ConfiguredMCU.ExpandToolFlags(flags, bspDict, null); Dictionary <string, bool> sourceExtensions = new Dictionary <string, bool>(StringComparer.InvariantCultureIgnoreCase); sourceExtensions.Add("c", true); sourceExtensions.Add("cpp", true); sourceExtensions.Add("s", true); return(BuildAndRunValidationJob(mcu, mcuDir, false, null, prj, flags, sourceExtensions, null, null, vs)); }
public static bool IsE300CPU(LoadedBSP.ConfiguredMCU mcu) { string tmp = null; if (mcu.Configuration?.TryGetValue("com.sysprogs.risc-v.board", out tmp) == true && tmp.Contains("-e300-")) { return(true); } return(false); }
public ICustomBSPConfigurator CreateConfigurator(LoadedBSP.ConfiguredMCU mcu, DebugMethod method) { if (method.ID == "xt-ocd") { return(new ESP8266DebugConfigurator(method, _Interfaces)); } else if (method.ID == "openocd") { return(new OpenOCDDebugConfigurator(method, _QuickSetupData)); } return(null); }
public void AdjustDebugMethod(LoadedBSP.ConfiguredMCU mcu, ConfiguredDebugMethod method) { string iface; if (method.Method.ID == "xt-ocd") { if (method.Parameters.TryGetValue("com.sysprogs.esp8266.xt-ocd.debug_iface", out iface)) { ESP8266DebugConfigurator.DebugInterface ifaceObj = null; foreach (var obj in _Interfaces.Interfaces) { if (obj.ID == iface) { ifaceObj = obj; break; } } if (ifaceObj != null) { string templateFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "topology-template.xml"); XmlDocument doc = new XmlDocument(); doc.Load(templateFile); XmlElement el = doc.CreateElement("controller"); el.SetAttribute("id", "Controller0"); el.SetAttribute("module", ifaceObj.Module); foreach (var p in ifaceObj.Parameters) { string val; if (method.Parameters.TryGetValue(ESP8266DebugConfigurator.InterfaceSettingPrefix + p.UniqueID, out val) && !string.IsNullOrEmpty(val)) { el.SetAttribute(p.UniqueID, val); } } doc.DocumentElement.InsertBefore(el, doc.DocumentElement.FirstChild); string newFn = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"VisualGDB\xt-ocd-topology.xml"); doc.Save(newFn); method.Method.GDBServerArguments.Template = method.Method.GDBServerArguments.Template.Replace("$$com.sysprogs.esp8266.xt-ocd.configfile$$", "\"" + newFn + "\""); } } } else if (_ESP32Mode && method.Method.ID == "openocd") { if (!method.Parameters.ContainsKey("com.sysprogs.esp32.openocd.alg_timeout")) { method.Parameters["com.sysprogs.esp32.openocd.alg_timeout"] = "5000"; } } }
public GeneratedProject(string projectDir, LoadedBSP.ConfiguredMCU mcu, string[] selectedFrameworks) { _ProjectDir = projectDir; MCU = mcu; if (MCU.BSP.BSP.Frameworks != null) { foreach (var fw in MCU.BSP.BSP.Frameworks) { if (!selectedFrameworks.Contains(fw.ID)) { if (fw.ClassID != null && selectedFrameworks.Contains(fw.ClassID)) { try { if (!fw.IsCompatibleWithMCU(MCU.ExpandedMCU.ID)) { continue; } } catch { continue; } } else { continue; } } _Frameworks.Add(fw); } } }
protected override QuickSetupDatabase.TargetDeviceFamily TryDetectDeviceById(QuickSetupDatabase db, LoadedBSP.ConfiguredMCU mcu) { if (IsE300CPU(mcu)) { return(db.TryDetectDeviceById(mcu, "E300")); } else { return(base.TryDetectDeviceById(db, mcu)); } }
public ICustomBSPConfigurator CreateConfigurator(LoadedBSP.ConfiguredMCU mcu, DebugMethod method) { return(new AVaRICEDebugSettingsControl(method, mcu.BSP.Directory)); }
private static TestResult TestMCU(LoadedBSP.LoadedMCU mcu, string mcuDir, TestedSample sample, DeviceParameterSet extraParameters, LoadedRenamingRule[] renameRules, string[] nonValidateReg, string[] pUndefinedMacros) { const int RepeatCount = 20; for (var i = 0; i < RepeatCount; ++i) { if (!Directory.Exists(mcuDir)) { break; } Console.WriteLine("Deleting " + mcuDir + "..."); Directory.Delete(mcuDir, true); if (i == RepeatCount - 1) { throw new Exception("Cannot remove folder!"); } Thread.Sleep(50); } for (var i = 0; i < RepeatCount; ++i) { if (Directory.Exists(mcuDir)) { break; } Directory.CreateDirectory(mcuDir); if (i == RepeatCount - 1) { throw new Exception("Cannot create folder!"); } Thread.Sleep(50); } var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var samples = mcu.BSP.GetSamplesForMCU(mcu.ExpandedMCU.ID, false); LoadedBSP.LoadedSample sampleObj; if (string.IsNullOrEmpty(sample.Name)) { sampleObj = samples[0]; } else { sampleObj = samples.FirstOrDefault(s => s.Sample.Name == sample.Name); } if (sampleObj == null) { if (sample.SkipIfNotFound) { Directory.Delete(mcuDir, true); return(TestResult.Skipped); } else { throw new Exception("Cannot find sample: " + sample.Name); } } string[] frameworks = sampleObj.Sample.RequiredFrameworks ?? new string[0]; //frameworkCfg["com.sysprogs.bspoptions.stm32.freertos.heap"] = "heap_4"; //frameworkCfg["com.sysprogs.bspoptions.stm32.freertos.portcore"] = "CM0"; //frameworkCfg["com.sysprogs.bspoptions.stm32.usb.devclass"] = "CDC"; //frameworkCfg["com.sysprogs.bspoptions.stm32.usb.speed"] = "FS"; var configuredSample = new ConfiguredSample { Sample = sampleObj, Parameters = GetDefaultPropertyValues(sampleObj.Sample.ConfigurableProperties), Frameworks = (sampleObj.Sample.RequiredFrameworks == null) ? null : sampleObj.Sample.RequiredFrameworks.Select(fwId => { return(configuredMCU.BSP.BSP.Frameworks.First(fwO => fwO.ID == fwId || fwO.ClassID == fwId && fwO.IsCompatibleWithMCU(configuredMCU.ExpandedMCU.ID))); }).ToList(), FrameworkParameters = new Dictionary <string, string>(), }; ApplyConfiguration(configuredMCU.Configuration, extraParameters?.MCUConfiguration, sample.MCUConfiguration); //configuredSample.Parameters["com.sysprogs.examples.ledblink.LEDPORT"] = "GPIOA"; //configuredSample.Parameters["com.sysprogs.examples.stm32.LEDPORT"] = "GPIOA"; //configuredSample.Parameters["com.sysprogs.examples.stm32.freertos.heap_size"] = "0"; var bspDict = configuredMCU.BuildSystemDictionary(SystemDirs); bspDict["PROJECTNAME"] = "test"; if (configuredSample.Frameworks != null) { foreach (var fw in configuredSample.Frameworks) { if (fw.AdditionalSystemVars != null) { foreach (var kv in fw.AdditionalSystemVars) { bspDict[kv.Key] = kv.Value; } } if (fw.ConfigurableProperties != null) { var defaultFwConfig = GetDefaultPropertyValues(fw.ConfigurableProperties); if (defaultFwConfig != null) { foreach (var kv in defaultFwConfig) { configuredSample.FrameworkParameters[kv.Key] = kv.Value; } } } } } if (sampleObj.Sample?.DefaultConfiguration?.Entries != null) { foreach (var kv in sampleObj.Sample.DefaultConfiguration.Entries) { configuredSample.FrameworkParameters[kv.Key] = kv.Value; } } ApplyConfiguration(configuredSample.FrameworkParameters, extraParameters?.FrameworkConfiguration, sample.FrameworkConfiguration); ApplyConfiguration(configuredSample.Parameters, extraParameters?.SampleConfiguration, sample.SampleConfiguration); var prj = new GeneratedProject(mcuDir, configuredMCU, frameworks) { DataSections = sample.DataSections }; prj.DoGenerateProjectFromEmbeddedSample(configuredSample, false, bspDict); Dictionary <string, bool> frameworkIDs = new Dictionary <string, bool>(); if (frameworks != null) { foreach (var fw in frameworks) { frameworkIDs[fw] = true; } } if (sample.AdditionalFrameworks != null) { foreach (var fw in sample.AdditionalFrameworks) { frameworkIDs[fw] = true; } } prj.AddBSPFilesToProject(bspDict, configuredSample.FrameworkParameters, frameworkIDs); var flags = prj.GetToolFlags(bspDict, configuredSample.FrameworkParameters, frameworkIDs); flags.COMMONFLAGS += " -save-temps "; Dictionary <string, bool> sourceExtensions = new Dictionary <string, bool>(StringComparer.InvariantCultureIgnoreCase); foreach (var ext in sample.SourceFileExtensions.Split(';')) { sourceExtensions[ext] = true; } return(BuildAndRunValidationJob(mcu, mcuDir, sample.ValidateRegisters, renameRules, prj, flags, sourceExtensions, nonValidateReg, pUndefinedMacros)); }
public static TestResult TestVendorSampleAndUpdateDependencies(LoadedBSP.LoadedMCU mcu, VendorSample vs, string mcuDir, string sampleDirPath, bool codeRequiresDebugInfoFlag, bool keepDirectoryAfterSuccessfulBuild) { if (Directory.Exists(mcuDir)) { Directory.Delete(mcuDir, true); } Directory.CreateDirectory(mcuDir); var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); configuredMCU.Configuration["com.sysprogs.toolchainoptions.arm.libnosys"] = "--specs=nosys.specs"; if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var entries = vs.Configuration.MCUConfiguration?.Entries; if (entries != null) { foreach (var e in entries) { configuredMCU.Configuration[e.Key] = e.Value; } } var bspDict = configuredMCU.BuildSystemDictionary(default(SystemDirectories)); bspDict["PROJECTNAME"] = "test"; if (sampleDirPath != null) { bspDict["SYS:VSAMPLE_DIR"] = sampleDirPath; } var prj = new GeneratedProject(configuredMCU, vs, mcuDir, bspDict, vs.Configuration.Frameworks ?? new string[0]); var projectCfg = PropertyDictionary2.ReadPropertyDictionary(vs.Configuration.MCUConfiguration); var frameworkCfg = PropertyDictionary2.ReadPropertyDictionary(vs.Configuration.Configuration); foreach (var k in projectCfg.Keys) { bspDict[k] = projectCfg[k]; } var frameworkIDs = vs.Configuration.Frameworks?.ToDictionary(fw => fw, fw => true); prj.AddBSPFilesToProject(bspDict, frameworkCfg, frameworkIDs); var flags = prj.GetToolFlags(bspDict, frameworkCfg, frameworkIDs); if (flags.LinkerScript != null && !Path.IsPathRooted(flags.LinkerScript)) { flags.LinkerScript = Path.Combine(VariableHelper.ExpandVariables(vs.Path, bspDict, frameworkCfg), flags.LinkerScript).Replace('\\', '/'); } //ToolFlags flags = new ToolFlags { CXXFLAGS = " ", COMMONFLAGS = "-mcpu=cortex-m3 -mthumb", LDFLAGS = "-Wl,-gc-sections -Wl,-Map," + "test.map", CFLAGS = "-ffunction-sections -Os -MD" }; if (!string.IsNullOrEmpty(vs.CLanguageStandard)) { flags.CFLAGS += $" -std={vs.CLanguageStandard}"; } if (!string.IsNullOrEmpty(vs.CPPLanguageStandard)) { flags.CXXFLAGS += $" -std={vs.CPPLanguageStandard}"; } flags.CFLAGS += " -MD"; flags.CXXFLAGS += " -MD"; if (codeRequiresDebugInfoFlag) { flags.CFLAGS += " -ggdb"; flags.CXXFLAGS += " -ggdb"; } flags.IncludeDirectories = LoadedBSP.Combine(flags.IncludeDirectories, vs.IncludeDirectories).Distinct().ToArray(); flags.PreprocessorMacros = LoadedBSP.Combine(flags.PreprocessorMacros, vs.PreprocessorMacros); flags.LDFLAGS = flags.LDFLAGS + " " + vs.LDFLAGS; flags = LoadedBSP.ConfiguredMCU.ExpandToolFlags(flags, bspDict, null); Dictionary <string, bool> sourceExtensions = new Dictionary <string, bool>(StringComparer.InvariantCultureIgnoreCase); sourceExtensions.Add("c", true); sourceExtensions.Add("cpp", true); sourceExtensions.Add("s", true); return(BuildAndRunValidationJob(mcu, mcuDir, false, null, prj, flags, sourceExtensions, null, null, vs, keepDirectoryAfterSuccessfulBuild)); }
public static TestResult TestSingleSample(LoadedBSP.LoadedSample sampleObj, LoadedBSP.LoadedMCU mcu, string testDirectory, TestedSample sample, DeviceParameterSet extraParameters, RegisterValidationParameters registerValidationParameters, BSPValidationFlags validationFlags = BSPValidationFlags.None) { CreateEmptyDirectoryForTestingMCU(testDirectory); var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var configuredSample = new ConfiguredSample { Sample = sampleObj, Parameters = GetDefaultPropertyValues(sampleObj.Sample.ConfigurableProperties), Frameworks = (sampleObj.Sample.RequiredFrameworks == null) ? null : sampleObj.Sample.RequiredFrameworks.Select(fwId => { return(configuredMCU.BSP.BSP.Frameworks.First(fwO => fwO.ID == fwId || fwO.ClassID == fwId && fwO.IsCompatibleWithMCU(configuredMCU.ExpandedMCU.ID))); }).ToList(), FrameworkParameters = new Dictionary <string, string>(), }; ApplyConfiguration(configuredMCU.Configuration, extraParameters?.MCUConfiguration, sample.MCUConfiguration); var bspDict = configuredMCU.BuildSystemDictionary(default(SystemDirectories)); bspDict["PROJECTNAME"] = "test"; if (configuredSample.Frameworks != null) { foreach (var fw in configuredSample.Frameworks) { if (fw.AdditionalSystemVars != null) { foreach (var kv in fw.AdditionalSystemVars) { bspDict[kv.Key] = kv.Value; } } if (fw.ConfigurableProperties != null) { var defaultFwConfig = GetDefaultPropertyValues(fw.ConfigurableProperties); if (defaultFwConfig != null) { foreach (var kv in defaultFwConfig) { configuredSample.FrameworkParameters[kv.Key] = kv.Value; } } } } } if (sampleObj.Sample?.DefaultConfiguration?.Entries != null) { foreach (var kv in sampleObj.Sample.DefaultConfiguration.Entries) { configuredSample.FrameworkParameters[kv.Key] = kv.Value; } } ApplyConfiguration(configuredSample.FrameworkParameters, extraParameters?.FrameworkConfiguration, sample.FrameworkConfiguration); ApplyConfiguration(configuredSample.Parameters, extraParameters?.SampleConfiguration, sample.SampleConfiguration); Dictionary <string, bool> frameworkIDs = new Dictionary <string, bool>(); foreach (var fw in sampleObj.Sample.RequiredFrameworks ?? new string[0]) { frameworkIDs[fw] = true; } foreach (var fw in sample.AdditionalFrameworks ?? new string[0]) { frameworkIDs[fw] = true; } var prj = new GeneratedProject(testDirectory, configuredMCU, frameworkIDs.Keys.ToArray()) { DataSections = sample.DataSections }; prj.DoGenerateProjectFromEmbeddedSample(configuredSample, false, bspDict); prj.AddBSPFilesToProject(bspDict, configuredSample.FrameworkParameters, frameworkIDs); var flags = prj.GetToolFlags(bspDict, configuredSample.FrameworkParameters, frameworkIDs); // if(sampleObj.Sample.LinkerScript!=null) // flags.LinkerScript = sampleObj.Sample.LinkerScript; if (!string.IsNullOrEmpty(configuredSample.Sample.Sample.LinkerScript)) { flags.LinkerScript = VariableHelper.ExpandVariables(configuredSample.Sample.Sample.LinkerScript, bspDict, configuredSample.FrameworkParameters); } if (!string.IsNullOrEmpty(configuredSample.Sample.Sample.CLanguageStandard)) { flags.CFLAGS += $" -std={configuredSample.Sample.Sample.CLanguageStandard}"; } if (!string.IsNullOrEmpty(configuredSample.Sample.Sample.CPPLanguageStandard)) { flags.CXXFLAGS += $" -std={configuredSample.Sample.Sample.CPPLanguageStandard}"; } flags.COMMONFLAGS += " -save-temps "; Dictionary <string, bool> sourceExtensions = new Dictionary <string, bool>(StringComparer.InvariantCultureIgnoreCase); foreach (var ext in sample.SourceFileExtensions.Split(';')) { sourceExtensions[ext] = true; } Console.WriteLine("Building {0}...", Path.GetFileName(testDirectory)); return(BuildAndRunValidationJob(mcu, testDirectory, prj, flags, sourceExtensions, null, sample.ValidateRegisters ? registerValidationParameters : null, validationFlags)); }
private static TestResult TestMCU(LoadedBSP.LoadedMCU mcu, string mcuDir, TestedSample sample, DeviceParameterSet extraParameters, LoadedRenamingRule[] renameRules, string[] nonValidateReg) { const int RepeatCount = 20; for (var i = 0; i < RepeatCount; ++i) { if (!Directory.Exists(mcuDir)) { break; } Console.WriteLine("Deleting " + mcuDir + "..."); Directory.Delete(mcuDir, true); if (i == RepeatCount - 1) { throw new Exception("Cannot remove folder!"); } Thread.Sleep(50); } for (var i = 0; i < RepeatCount; ++i) { if (Directory.Exists(mcuDir)) { break; } Directory.CreateDirectory(mcuDir); if (i == RepeatCount - 1) { throw new Exception("Cannot create folder!"); } Thread.Sleep(50); } var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var samples = mcu.BSP.GetSamplesForMCU(mcu.ExpandedMCU.ID, false); LoadedBSP.LoadedSample sampleObj; if (string.IsNullOrEmpty(sample.Name)) sampleObj = samples[0]; else sampleObj = samples.FirstOrDefault(s => s.Sample.Name == sample.Name); if (sampleObj == null) { if (sample.SkipIfNotFound) { Directory.Delete(mcuDir, true); return TestResult.Skipped; } else throw new Exception("Cannot find sample: " + sample.Name); } string[] frameworks = sampleObj.Sample.RequiredFrameworks ?? new string[0]; //frameworkCfg["com.sysprogs.bspoptions.stm32.freertos.heap"] = "heap_4"; //frameworkCfg["com.sysprogs.bspoptions.stm32.freertos.portcore"] = "CM0"; //frameworkCfg["com.sysprogs.bspoptions.stm32.usb.devclass"] = "CDC"; //frameworkCfg["com.sysprogs.bspoptions.stm32.usb.speed"] = "FS"; var configuredSample = new ConfiguredSample { Sample = sampleObj, Parameters = GetDefaultPropertyValues(sampleObj.Sample.ConfigurableProperties), Frameworks = (sampleObj.Sample.RequiredFrameworks == null) ? null : sampleObj.Sample.RequiredFrameworks.Select(fwId => { return configuredMCU.BSP.BSP.Frameworks.First(fwO => fwO.ID == fwId || fwO.ClassID == fwId && fwO.IsCompatibleWithMCU(configuredMCU.ExpandedMCU.ID)); }).ToList(), FrameworkParameters = new Dictionary<string, string>(), }; ApplyConfiguration(configuredMCU.Configuration, extraParameters?.MCUConfiguration, sample.MCUConfiguration); //configuredSample.Parameters["com.sysprogs.examples.ledblink.LEDPORT"] = "GPIOA"; //configuredSample.Parameters["com.sysprogs.examples.stm32.LEDPORT"] = "GPIOA"; //configuredSample.Parameters["com.sysprogs.examples.stm32.freertos.heap_size"] = "0"; var bspDict = configuredMCU.BuildSystemDictionary(new BSPManager(), null); bspDict["PROJECTNAME"] = "test"; if (configuredSample.Frameworks != null) foreach (var fw in configuredSample.Frameworks) { if (fw.AdditionalSystemVars != null) foreach (var kv in fw.AdditionalSystemVars) bspDict[kv.Key] = kv.Value; if (fw.ConfigurableProperties != null) { var defaultFwConfig = GetDefaultPropertyValues(fw.ConfigurableProperties); if (defaultFwConfig != null) foreach (var kv in defaultFwConfig) configuredSample.FrameworkParameters[kv.Key] = kv.Value; } } if (sampleObj.Sample?.DefaultConfiguration?.Entries != null) foreach (var kv in sampleObj.Sample.DefaultConfiguration.Entries) configuredSample.FrameworkParameters[kv.Key] = kv.Value; ApplyConfiguration(configuredSample.FrameworkParameters, extraParameters?.FrameworkConfiguration, sample.FrameworkConfiguration); ApplyConfiguration(configuredSample.Parameters, extraParameters?.SampleConfiguration, sample.SampleConfiguration); var prj = new GeneratedProject(mcuDir, configuredMCU, frameworks); prj.DoGenerateProjectFromEmbeddedSample(configuredSample, false, bspDict); Dictionary<string, bool> frameworkIDs = new Dictionary<string, bool>(); if (frameworks != null) foreach (var fw in frameworks) frameworkIDs[fw] = true; if (sample.AdditionalFrameworks != null) foreach (var fw in sample.AdditionalFrameworks) frameworkIDs[fw] = true; prj.AddBSPFilesToProject(bspDict, configuredSample.FrameworkParameters, frameworkIDs); var flags = prj.GetToolFlags(bspDict, configuredSample.FrameworkParameters, frameworkIDs); Dictionary<string, bool> sourceExtensions = new Dictionary<string, bool>(StringComparer.InvariantCultureIgnoreCase); foreach (var ext in sample.SourceFileExtensions.Split(';')) sourceExtensions[ext] = true; return BuildAndRunValidationJob(mcu, mcuDir, sample.ValidateRegisters, renameRules, prj, flags, sourceExtensions, nonValidateReg); }
public void AdjustDebugMethod(LoadedBSP.ConfiguredMCU mcu, ConfiguredDebugMethod method) { }
private static TestResult TestVendorSample(LoadedBSP.LoadedMCU mcu, BSPEngine.VendorSample vs, string mcuDir, bool pSoftFPU, VendorSampleDirectory sampleDir) { var configuredMCU = new LoadedBSP.ConfiguredMCU(mcu, GetDefaultPropertyValues(mcu.ExpandedMCU.ConfigurableProperties)); if (configuredMCU.ExpandedMCU.FLASHSize == 0) { configuredMCU.Configuration["com.sysprogs.bspoptions.primary_memory"] = "sram"; } var bspDict = configuredMCU.BuildSystemDictionary(new BSPManager(), null); bspDict["PROJECTNAME"] = "test"; bspDict["SYS:VSAMPLE_DIR"] = sampleDir.Path; var prj = new GeneratedProject(configuredMCU, vs, mcuDir, bspDict, vs.Configuration.Frameworks ?? new string[0]); var frameworkCfg = PropertyDictionary2.ReadPropertyDictionary(vs.Configuration.Configuration); var frameworkIDs = vs.Configuration.Frameworks?.ToDictionary(fw => fw, fw => true); prj.AddBSPFilesToProject(bspDict, frameworkCfg, frameworkIDs); var flags = prj.GetToolFlags(bspDict, frameworkCfg, frameworkIDs); //ToolFlags flags = new ToolFlags { CXXFLAGS = " ", COMMONFLAGS = "-mcpu=cortex-m3 -mthumb", LDFLAGS = "-Wl,-gc-sections -Wl,-Map," + "test.map", CFLAGS = "-ffunction-sections -Os -MD" }; if (!pSoftFPU) flags.COMMONFLAGS = flags.COMMONFLAGS.Replace("soft", "hard"); flags.CFLAGS += " -MD"; flags.CXXFLAGS += " -MD"; flags.IncludeDirectories = LoadedBSP.Combine(flags.IncludeDirectories, vs.IncludeDirectories); flags.PreprocessorMacros = LoadedBSP.Combine(flags.PreprocessorMacros, vs.PreprocessorMacros); flags = LoadedBSP.ConfiguredMCU.ExpandToolFlags(flags, bspDict, null); Dictionary<string, bool> sourceExtensions = new Dictionary<string, bool>(StringComparer.InvariantCultureIgnoreCase); sourceExtensions.Add("c", true); sourceExtensions.Add("cpp", true); return BuildAndRunValidationJob(mcu, mcuDir, false, null, prj, flags, sourceExtensions, null, vs); }
public ICustomBSPConfigurator CreateConfigurator(LoadedBSP.ConfiguredMCU mcu, DebugMethod method) { return(null); }