stm32_bsp_generator.Program.STM32BSPBuilder.GetLayoutFromICF C# (CSharp) Method

GetLayoutFromICF() public method

public GetLayoutFromICF ( string pFileNameICF, string pNameDev ) : MemoryLayout
pFileNameICF string
pNameDev string
return LinkerScriptGenerator.MemoryLayout
            public MemoryLayout GetLayoutFromICF(string pFileNameICF,string pNameDev)
            {
                MemoryLayout layout = new MemoryLayout { DeviceName = pNameDev, Memories = new List<Memory>() };
                int StartFlash = NO_DATA;
                int SizeFlash = NO_DATA;
                /*int StartRAM = NO_DATA;
                int SizeRAM = NO_DATA;
                int StartCCM = NO_DATA;
                int SizeCCM = NO_DATA;
                */
                foreach (var ln in File.ReadAllLines(pFileNameICF))
                {
                    var m = Regex.Match(ln, @"define symbol __ICFEDIT_region_([\w\d]+)_start__[ ]*=[ ]*([x0-9A-Faf]+)[ ]*;");
                    if (m.Success)
                    {
                        StartFlash = (int)ParseHex(m.Groups[2].Value);
                        continue;
                    }
                     m = Regex.Match(ln, @"define symbol __ICFEDIT_region_([\w\d]+)_end__[ ]*=[ ]*([x0-9A-Faf]+)[ ]*;");
                    if (m.Success)
                    {
                        SizeFlash = (int)ParseHex(m.Groups[2].Value);
                        MemoryType aTypeData = MemoryType.RAM;
                        string aNameData = m.Groups[1].Value;
                        if (m.Groups[1].Value.Contains("ROM"))
                            aTypeData = MemoryType.FLASH;

                        if (m.Groups[1].Value == "ROM")
                            aNameData = "FLASH";
                        else  if (m.Groups[1].Value == "RAM")
                                aNameData = "SRAM";

                        if (StartFlash != NO_DATA && SizeFlash != NO_DATA)
                        {
                            SizeFlash  -= StartFlash;
                            if ((SizeFlash % 1024) != 0) SizeFlash += 1;
                            layout.Memories.Add(new Memory
                            {
                                Name = aNameData,
                                Access = MemoryAccess.Undefined,// Readable | MemoryAccess.Writable | MemoryAccess.Executable
                                Type = aTypeData,
                                Start = (uint)StartFlash,
                                Size = (uint)SizeFlash
                            });
                        }
                        else
                            throw new Exception("Error ld size flash");
                        StartFlash = NO_DATA;
                        continue;
                    }
                }

                return layout;
            }