public static ESP8266BinaryImage MakeBootloaderBasedImageFromELFFile(ELFFile file, ESP8266ImageHeader header, int appNumber, bool esptoolSectionOrder = false) { ESP8266BinaryImage image = new ESP8266BinaryImage(); image.EntryPoint = file.ELFHeader.e_entry; image.Header = header; var flashSections = GetFLASHSections(file); if (flashSections.Length != 1) { throw new Exception($"Unexpected count of SPI FLASH sections: {flashSections.Length}. Cannot detect image type"); } int newSize = ((flashSections[0].Data.Length + 15) & ~15); Array.Resize(ref flashSections[0].Data, newSize); image.Segments.Add(new Segment { Address = 0, Data = flashSections[0].Data }); image.BootloaderImageOffset = flashSections[0].OffsetInFLASH - BootloaderImageHeaderSize; image.AppNumber = (byte)appNumber; InsertSections(file, esptoolSectionOrder, image, true); return(image); }
public static ESP8266BinaryImage MakeNonBootloaderImageFromELFFile(ELFFile file, ESP8266ImageHeader header, bool esptoolSectionOrder = false) { ESP8266BinaryImage image = new ESP8266BinaryImage(); image.EntryPoint = file.ELFHeader.e_entry; image.Header = header; InsertSections(file, esptoolSectionOrder, image, true); return(image); }