示例#1
0
        public static List <ProgrammableRegion> BuildProgrammableBlocksFromSettings(IDebugStartService service, IESP32Settings settings)
        {
            List <ProgrammableRegion> blocks;

            if (service.MCU.Configuration.TryGetValue("com.sysprogs.esp32.esptool.binaries.count", out var tmp) && int.TryParse(tmp, out var binaryCount) && binaryCount > 0)
            {
                blocks = new List <ProgrammableRegion>();
                for (int i = 0; i < binaryCount; i++)
                {
                    string fn = service.MCU.Configuration[$"com.sysprogs.esp32.esptool.binaries[{i}].path"];

                    blocks.Add(new ProgrammableRegion
                    {
                        FileName = fn,
                        Size     = File.ReadAllBytes(fn).Length,
                        Offset   = int.Parse(service.MCU.Configuration[$"com.sysprogs.esp32.esptool.binaries[{i}].address"])
                    });
                }
            }
            else
            {
                bool patchBootloader = settings.PatchBootloader;
                blocks = ESP32StartupSequence.BuildFLASHImages(service.TargetPath, service.SystemDictionary, settings.FLASHSettings, patchBootloader);
            }

            if (settings.FLASHResources != null)
            {
                foreach (var r in settings.FLASHResources)
                {
                    if (r.Valid)
                    {
                        blocks.Add(r.ToProgrammableRegion(service));
                    }
                }
            }
            return(blocks);
        }
示例#2
0
        public static List <ProgrammableRegion> BuildProgrammableBlocksFromSettings(IDebugStartService service, IESP32Settings settings)
        {
            List <ProgrammableRegion> blocks;

            if (BuildProgrammableBlocksFromSynthesizedESPIDFVariables(service, out blocks))
            {
                //Nothing to do. Successfully built the block list.
            }
            else
            {
                bool patchBootloader = settings.PatchBootloader;
                blocks = ESP32StartupSequence.BuildFLASHImages(service.TargetPath, service.SystemDictionary, settings.FLASHSettings, patchBootloader);
            }

            if (settings.FLASHResources != null)
            {
                foreach (var r in settings.FLASHResources)
                {
                    if (r.Valid)
                    {
                        blocks.Add(r.ToProgrammableRegion(service));
                    }
                }
            }
            return(blocks);
        }