espflash — ESP32 ROM bootloader aygıt yazılımı flaşlayıcısı¶
Bu modül, ESP32 ROM bootloader ile UART üzerinden iletişim kuran minimal bir ESPFlash uygulaması sağlar. Yardımcı modüllerdeki ESP32 aygıt yazılımının (firmware) sistem içi güncellemeleri için tasarlanmıştır (örneğin Arduino kartlarında kullanılan U-blox NINA-W10 modülü) ve tam esptool aracının yerini almaz. Gelişmiş özellikler (stub yükleyici, diğer ESP yongaları, deflate, secure boot vb.) kasıtlı olarak desteklenmez.
Sürücü, ESP32’yi indirme moduna almak için RESET ve GPIO0 pinlerini değiştirir, ardından flash boyutunu okumak, SPI arayüzünü yapılandırmak, aygıt yazılımı görüntüsünü yazmak ve bir MD5 özetiyle doğrulamak için SLIP çerçeveli komutlar gönderir.
Arduino Nano RP2040 Connect için örnek (espflash‘in şu anda donduruluğu tek OpenMV destekli kart). NINA-W102’nin reset ve boot-strap pinleri sırasıyla RP2040 GPIO 3 ve GPIO 2‘dir ve NINA’nın UART0‘ı RP2040 UART1‘e bağlıdır (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)¶
ESP32 ROM bootloader’ı süren bir
ESPFlashnesnesi oluşturur.reset, çıkış olarak yapılandırılmış, ESP32
RESEThattına bağlı birmachine.Pinörneğidir.gpio0, çıkış olarak yapılandırılmış, ESP32
GPIO0hattına bağlı birmachine.Pinörneğidir.uart, ESP32
UART0pinlerine bağlı birmachine.UARTörneğidir. 115200 baud hızında ve sıfır olmayan bir okuma zaman aşımı ile başlatılmalıdır.log_enabled, bootloader ile değiş tokuş edilen SLIP çerçevelerinin ayrıntılı kayıt tutmasını etkinleştirir. Yalnızca hata ayıklama için kullanışlıdır.
Yapıcı,
hashlibmodülünü içe aktarmaya çalışır.hashlib.md5mevcutsa,ESPFlash.flash_verify_file()tarafından kullanılan çalışan MD5 özeti, yazma sırasında otomatik olarak hesaplanır.- set_baudrate(baudrate: int, timeout: int = 350) None¶
Bootloader UART baud hızını değiştirir.
baudrate, geçilecek yeni baud hızıdır. Şu anda etkin olan baud hızından farklıysa, yerel UART yeniden yapılandırılmadan önce bootloader’a bir
CHANGE_BAUDRATEkomutu gönderilir.timeout ayrılmıştır ve şu anda kullanılmamaktadır.
Temel UART nesnesi bir
init()metodu uygulamıyorsa hiçbir etkisi yoktur.
- bootloader(retry: int = 6) bool¶
ESP32 ROM indirme moduna girmek ve bootloader ile senkronize olmak için
RESETveGPIO0pinlerini sürer.retry, vazgeçmeden önceki reset/senkronizasyon denemelerinin sayısıdır.
Başarı durumunda
Truedöndürür, aksi takdirde birExceptionfırlatır.
- flash_read_size() int¶
SPI flash JEDEC kimliğini okur ve flash boyutunu bayt cinsinden döndürür.
Bildirilen boyut bitleri beklenen
0x12-0x19aralığının dışındaysa birExceptionfırlatır.
- flash_attach() None¶
SPI flash’a bağlanır.
bootloader()çağrıldıktan sonra ve herhangi bir flash okuma/yazma işleminden önce bir kez çağrılmalıdır.
- flash_config(flash_size: int = 2 * 1024 * 1024) None¶
SPI flash parametrelerini yapılandırır.
flash_size, bayt cinsinden toplam flash boyutudur; tipik olarak
flash_read_size()tarafından döndürülen değerdir.
Blok, sektör ve sayfa boyutları sırasıyla 64 KiB, 4 KiB ve 256 bayt olarak sabittir.
- flash_write_file(path: str, blksize: int = 0x1000) None¶
0 ofsetinden başlayarak flash’a bir aygıt yazılımı görüntüsü yazar.
path, flaşlanacak aygıt yazılımı ikilisinin dosya sistemi yoludur.
blksize, bootloader’a gönderilen her veri bloğunun bayt cinsinden boyutudur. Sektör boyutunun katı olmalıdır.
Son blok, tam bir blksize‘a kadar
0xFFile doldurulur. MD5 desteği mevcutsa, çalışan MD5 özeti yazma sırasında güncellenir; böyleceflash_verify_file()argümansız olarak çağrılabilir.
- flash_verify_file(path: str, digest: bytes | None = None, offset: int = 0) None¶
Flash içeriğini bir aygıt yazılımı dosyasına göre doğrular.
path, referans aygıt yazılımı ikilisinin dosya sistemi yoludur; boyutu, doğrulanacak bayt sayısını belirler.
digest, dosyanın isteğe bağlı, önceden hesaplanmış hex kodlu MD5 özetidir.
Noneise, en sonflash_write_file()çağrısı sırasında hesaplanan özet kullanılır.offset, doğrulamanın başladığı bayt cinsinden flash ofsetidir.
Hiçbir özet mevcut değilse veya flash içeriği referans özetiyle eşleşmiyorsa bir
Exceptionfırlatır.