MCPcopy Create free account
hub / github.com/ExpressLRS/ExpressLRS / LoadFirmwareImage

Function LoadFirmwareImage

src/python/external/esptool/esptool/bin_image.py:50–82  ·  view source on GitHub ↗

Load a firmware image. Can be for any supported SoC. ESP8266 images will be examined to determine if they are original ROM firmware images (ESP8266ROMFirmwareImage) or "v2" OTA bootloader images. Returns a BaseFirmwareImage subclass, either ESP8266ROMFirmwareImage (v1) or ESP8

(chip, filename)

Source from the content-addressed store, hash-verified

48
49
50def LoadFirmwareImage(chip, filename):
51 """
52 Load a firmware image. Can be for any supported SoC.
53
54 ESP8266 images will be examined to determine if they are original ROM firmware
55 images (ESP8266ROMFirmwareImage) or "v2" OTA bootloader images.
56
57 Returns a BaseFirmwareImage subclass, either ESP8266ROMFirmwareImage (v1)
58 or ESP8266V2FirmwareImage (v2).
59 """
60 chip = re.sub(r"[-()]", "", chip.lower())
61 with open(filename, "rb") as f:
62 if chip != "esp8266":
63 return {
64 "esp32": ESP32FirmwareImage,
65 "esp32s2": ESP32S2FirmwareImage,
66 "esp32s3beta2": ESP32S3BETA2FirmwareImage,
67 "esp32s3": ESP32S3FirmwareImage,
68 "esp32c3": ESP32C3FirmwareImage,
69 "esp32c6beta": ESP32C6BETAFirmwareImage,
70 "esp32h2beta1": ESP32H2BETA1FirmwareImage,
71 "esp32h2beta2": ESP32H2BETA2FirmwareImage,
72 "esp32c2": ESP32C2FirmwareImage,
73 }[chip](f)
74 else: # Otherwise, ESP8266 so look at magic to determine the image type
75 magic = ord(f.read(1))
76 f.seek(0)
77 if magic == ESPLoader.ESP_IMAGE_MAGIC:
78 return ESP8266ROMFirmwareImage(f)
79 elif magic == ESPBOOTLOADER.IMAGE_V2_MAGIC:
80 return ESP8266V2FirmwareImage(f)
81 else:
82 raise FatalError("Invalid image magic number: %d" % magic)
83
84
85class ImageSegment(object):

Callers 2

load_ramFunction · 0.85
image_infoFunction · 0.85

Calls 4

FatalErrorClass · 0.85
readMethod · 0.45

Tested by

no test coverage detected