espflash — ESP32 ROM -käynnistyslataimen laiteohjelmiston flashaaja¶
Tämä moduuli tarjoaa minimaalisen ESPFlash -toteutuksen, joka kommunikoi ESP32 ROM -käynnistyslataimen kanssa UARTin kautta. Se on tarkoitettu apumoduulien ESP32-laiteohjelmiston järjestelmänsisäisiin päivityksiin (esimerkiksi Arduino-korteissa käytetty U-blox NINA-W10 -moduuli) eikä se korvaa täysimittaista esptool -työkalua. Edistyneitä ominaisuuksia (stub-latain, muut ESP-sirut, deflate, secure boot jne.) ei tarkoituksellisesti tueta.
Ajuri ohjaa RESET - ja GPIO0 -linjoja asettaakseen ESP32:n latausmoodiin ja antaa sitten SLIP-kehystettyjä komentoja flash-muistin koon lukemiseen, SPI-rajapinnan määrittämiseen, laiteohjelmistokuvan kirjoittamiseen ja sen varmentamiseen MD5-tiivisteen avulla.
Esimerkki Arduino Nano RP2040 Connect -kortille (ainoa OpenMV:n tukema kortti, jolla espflash on tällä hetkellä jäädytetty). NINA-W102:n reset- ja boot-strap-nastat ovat RP2040:n GPIO 3 ja GPIO 2, ja NINA:n UART0 on kytketty RP2040:n UART1 -liitäntään (TX = GPIO 8, RX = GPIO 9):
from machine import Pin, UART
from espflash import ESPFlash
reset = Pin(3, Pin.OUT) # NINA RESET
gpio0 = Pin(2, Pin.OUT) # NINA GPIO0
uart = UART(1, 115200, timeout=1000)
esp = ESPFlash(reset, gpio0, uart)
esp.bootloader()
esp.set_baudrate(921600)
size = esp.flash_read_size()
esp.flash_attach()
esp.flash_config(size)
esp.flash_write_file("NINA_FW.bin")
esp.flash_verify_file("NINA_FW.bin")
esp.reboot()
class ESPFlash¶
- class espflash.ESPFlash(reset: 'machine.Pin', gpio0: 'machine.Pin', uart: 'machine.UART', log_enabled: bool = False)¶
Muodostaa
ESPFlash-olion, joka ohjaa ESP32 ROM -käynnistyslatainta.reset on
machine.Pin-ilmentymä, joka on kytketty ESP32:nRESET-linjaan ja määritetty ulostuloksi.gpio0 on
machine.Pin-ilmentymä, joka on kytketty ESP32:nGPIO0-linjaan ja määritetty ulostuloksi.uart on
machine.UART-ilmentymä, joka on kytketty ESP32:nUART0-nastoihin. Se on alustettava 115200 baudin nopeudelle nollasta poikkeavalla lukuaikakatkaisulla.log_enabled ottaa käyttöön käynnistyslataimen kanssa vaihdettujen SLIP-kehysten yksityiskohtaisen lokituksen. Hyödyllinen vain vianjäljitykseen.
Muodostin yrittää tuoda
hashlib-moduulin. Joshashlib.md5on käytettävissä,ESPFlash.flash_verify_file()-funktion käyttämä juokseva MD5-tiiviste lasketaan automaattisesti kirjoituksen aikana.- set_baudrate(baudrate: int, timeout: int = 350) None¶
Vaihtaa käynnistyslataimen UART-siirtonopeuden.
baudrate on uusi siirtonopeus, johon vaihdetaan. Jos se poikkeaa nykyisestä aktiivisesta siirtonopeudesta, käynnistyslataimelle annetaan
CHANGE_BAUDRATE-komento ennen kuin paikallinen UART uudelleenmääritetään.timeout on varattu eikä sitä tällä hetkellä käytetä.
Ei vaikutusta, jos taustalla oleva UART-olio ei toteuta
init()-metodia.
- bootloader(retry: int = 6) bool¶
Ohjaa
RESET- jaGPIO0-linjoja siirtyäkseen ESP32 ROM -latausmoodiin ja synkronoituakseen käynnistyslataimen kanssa.retry on reset/sync-yritysten määrä ennen luovuttamista.
Palauttaa
Trueonnistuessa, muuten nostaaException-poikkeuksen.
- flash_read_size() int¶
Lukee SPI-flash-muistin JEDEC-tunnuksen ja palauttaa flash-muistin koon tavuina.
Nostaa
Exception-poikkeuksen, jos raportoidut kokobitit ovat odotetun0x12-0x19-alueen ulkopuolella.
- flash_attach() None¶
Liittyy SPI-flash-muistiin. On kutsuttava kerran
bootloader()-kutsun jälkeen ja ennen mitä tahansa flash-muistin luku-/kirjoitusoperaatiota.
- flash_config(flash_size: int = 2 * 1024 * 1024) None¶
Määrittää SPI-flash-muistin parametrit.
flash_size on flash-muistin kokonaiskoko tavuina, tyypillisesti
flash_read_size()-funktion palauttama arvo.
Lohko-, sektori- ja sivukoot on kiinnitetty arvoihin 64 KiB, 4 KiB ja 256 tavua.
- flash_write_file(path: str, blksize: int = 0x1000) None¶
Kirjoittaa laiteohjelmistokuvan flash-muistiin alkaen siirtymästä 0.
path on flashattavan laiteohjelmistobinäärin tiedostopolku.
blksize on kunkin käynnistyslataimelle lähetetyn datalohkon koko tavuina. Sen on oltava sektorikoon monikerta.
Viimeinen lohko täytetään
0xFF-tavuilla täyteen blksize -kokoon. Jos MD5-tuki on käytettävissä, juokseva MD5-tiiviste päivitetään kirjoituksen aikana, jottaflash_verify_file()voidaan kutsua ilman argumentteja.
- flash_verify_file(path: str, digest: bytes | None = None, offset: int = 0) None¶
Varmentaa flash-muistin sisällön laiteohjelmistotiedostoa vastaan.
path on referenssilaiteohjelmistobinäärin tiedostopolku; sen koko määrittää varmennettavien tavujen määrän.
digest on valinnainen tiedoston esilaskettu heksakoodattu MD5-tiiviste. Jos
None, käytetään viimeisimmänflash_write_file()-kutsun aikana laskettua tiivistettä.offset on flash-muistin siirtymä tavuina, josta varmennus alkaa.
Nostaa
Exception-poikkeuksen, jos tiivistettä ei ole käytettävissä tai jos flash-muistin sisältö ei vastaa referenssitiivistettä.