Пример #1
0
        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);
        }
Пример #2
0
        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);
        }