espflash — flashare för ESP32 ROM-startladdarens fasta programvara¶
Denna modul tillhandahåller en minimal ESPFlash-implementation som kommunicerar med ESP32:s ROM-startladdare via en UART. Den är avsedd för uppdateringar i systemet av ESP32:s fasta programvara på medföljande moduler (till exempel U-blox NINA-W10-modulen som används på Arduino-kort), och är inte en ersättning för det fullständiga verktyget esptool. Avancerade funktioner (stub-laddare, andra ESP-chip, deflate, säker uppstart osv.) stöds avsiktligt inte.
Drivrutinen växlar RESET och GPIO0 för att försätta ESP32 i nedladdningsläge och utfärdar sedan SLIP-inramade kommandon för att läsa flashminnets storlek, konfigurera SPI-gränssnittet, skriva avbildningen av den fasta programvaran och verifiera den via en MD5-sammanfattning.
Exempel för Arduino Nano RP2040 Connect (det enda OpenMV-stödda kortet där espflash för närvarande är fryst). NINA-W102:s reset- och boot-strap-stift är RP2040 GPIO 3 respektive GPIO 2, och NINA:s UART0 är kopplad till RP2040 UART1 (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)¶
Konstruera ett
ESPFlash-objekt som driver ESP32:s ROM-startladdare.reset är en
machine.Pin-instans ansluten till ESP32:sRESET-linje, konfigurerad som en utgång.gpio0 är en
machine.Pin-instans ansluten till ESP32:sGPIO0-linje, konfigurerad som en utgång.uart är en
machine.UART-instans ansluten till ESP32:sUART0-stift. Den måste initieras med 115200 baud och en read timeout som inte är noll.log_enabled aktiverar utförlig loggning av de SLIP-ramar som utbyts med startladdaren. Användbart endast för felsökning.
Konstruktorn försöker importera
hashlib. Omhashlib.md5är tillgänglig beräknas den löpande MD5-sammanfattning som används avESPFlash.flash_verify_file()automatiskt under skrivningen.- set_baudrate(baudrate: int, timeout: int = 350) None¶
Ändra startladdarens UART-baudhastighet.
baudrate är den nya baudhastighet att växla till. Om den skiljer sig från den för närvarande aktiva baudhastigheten utfärdas ett
CHANGE_BAUDRATE-kommando till startladdaren innan den lokala UART:en omkonfigureras.timeout är reserverad och används för närvarande inte.
Har ingen effekt om det underliggande UART-objektet inte implementerar en
init()-metod.
- bootloader(retry: int = 6) bool¶
Driv
RESETochGPIO0för att gå in i ESP32:s ROM-nedladdningsläge och synkronisera med startladdaren.retry är antalet reset/sync-försök innan man ger upp.
Returnerar
Truevid framgång, annars utlöses ettException.
- flash_read_size() int¶
Läs SPI-flashminnets JEDEC-ID och returnera flashminnets storlek i byte.
Utlöser ett
Exceptionom de rapporterade storleksbitarna ligger utanför det förväntade intervallet0x12-0x19.
- flash_attach() None¶
Anslut till SPI-flashminnet. Måste anropas en gång efter
bootloader()och före all läs-/skrivoperation på flashminnet.
- flash_config(flash_size: int = 2 * 1024 * 1024) None¶
Konfigurera parametrarna för SPI-flashminnet.
flash_size är flashminnets totala storlek i byte, vanligtvis värdet som returneras av
flash_read_size().
Block-, sektor- och sidstorlekar är fasta till 64 KiB, 4 KiB respektive 256 byte.
- flash_write_file(path: str, blksize: int = 0x1000) None¶
Skriv en avbildning av fast programvara till flashminnet med början vid offset 0.
path är filsystemssökvägen till den binärfil med fast programvara som ska flashas.
blksize är storleken i byte på varje datablock som skickas till startladdaren. Måste vara en multipel av sektorstorleken.
Det sista blocket fylls ut med
0xFFtill en full blksize. Om MD5-stöd är tillgängligt uppdateras den löpande MD5-sammanfattningen under skrivningen så attflash_verify_file()kan anropas utan argument.
- flash_verify_file(path: str, digest: bytes | None = None, offset: int = 0) None¶
Verifiera innehållet i flashminnet mot en fil med fast programvara.
path är filsystemssökvägen till referensbinärfilen med fast programvara; dess storlek avgör antalet byte som ska verifieras.
digest är en valfri förberäknad hex-kodad MD5-sammanfattning av filen. Om
Noneanvänds den sammanfattning som beräknades under det senaste anropet tillflash_write_file().offset är flash-offset i byte där verifieringen börjar.
Utlöser ett
Exceptionom ingen sammanfattning är tillgänglig eller om flashminnets innehåll inte matchar referenssammanfattningen.