mimxrt — NXP i.MXRT’ye özgü işlevsellik

mimxrt modülü, NXP i.MXRT mikrodenetleyici ailesine özgü fonksiyonlar ve sınıflar içerir.

Sınıflar

class mimxrt.Flash

Yerleşik QSPI flash belleğinin kullanıcı depolama bölgesini, vfs.AbstractBlockDev ile uyumlu bir blok aygıtı olarak açığa çıkaran tekil (singleton) nesneyi al. Blok numaraları, flash belleğin fiziksel başlangıcına değil, o bölgenin başlangıcına görelidir.

Çoğu durumda, aygıtta kalıcı veri depolamak için daha üst düzey bir soyutlama kullanmak isteyeceksiniz – örneğin Python’un standart dosya API’si aracılığıyla dosya sistemi. Bu arayüz, dosya sistemi yapılandırmasını özelleştirmek veya uygulamanız için düşük seviyeli bir depolama sistemi uygulamak için kullanışlıdır.

Nesne ayrıca arabellek protokolünü de uygular ve QSPI XIP tabanı aracılığıyla tüm flash depolama bölgesine salt okunur belleğe eşlenmiş (memory-mapped) erişime izin verir. Bu, herhangi bir flash okuması yapmadan bölgenin sıfır kopyalı (zero-copy) bir görünümünü kullanılabilir hale getirir:

flash = mimxrt.Flash()
view = memoryview(flash)
magic = bytes(view[:4])      # read the first 4 bytes directly from XIP

Altta yatan flash sektörleri tarafından kullanılan blok boyutu, çalışma zamanında ioctl(5, 0) ile sorgulanabilir.

readblocks(block_num: int, buf: bytearray) None
readblocks(block_num: int, buf: bytearray, offset: int) None

Flash’tan buf içine bayt oku. İki aşırı yükleme (overload), basit ve genişletilmiş arayüzleri açığa çıkarır:

Basit biçim (readblocks(block_num, buf)): block_num blok indeksinden başlayarak tam blokları okur. len(buf) flash blok boyutunun bir katı olmalıdır.

Genişletilmiş biçim (readblocks(block_num, buf, offset)): block_num bloğu içindeki offset baytından başlayarak len(buf) bayt okur – mutlaka tam sayıda blok değil. len(buf) için hizalama kısıtlaması yoktur.

writeblocks(block_num: int, buf: bytes) None
writeblocks(block_num: int, buf: bytes, offset: int) None

buf içindeki baytları flash’a yaz. İki aşırı yükleme, basit ve genişletilmiş arayüzleri açığa çıkarır:

Basit biçim (writeblocks(block_num, buf)): block_num blok indeksinden başlayarak tam blokları yazar. len(buf) flash blok boyutunun bir katı olmalıdır. Etkilenen her blok yazılmadan önce otomatik olarak silinir.

Genişletilmiş biçim (writeblocks(block_num, buf, offset)): block_num bloğu içindeki offset baytından başlayarak len(buf) bayt yazar – mutlaka tam sayıda blok değil. len(buf) için hizalama kısıtlaması yoktur ve örtük silme yapılmaz – çağıran, etkilenen blokların önceki bir ioctl(6, block_num) çağrısıyla silinmiş olduğundan emin olmalıdır.

Altta yatan flash silme veya yazma işlemi başarısız olursa OSError fırlatır.

ioctl(cmd: int, arg: int) int | None

Standart vfs.AbstractBlockDev ioctl giriş noktası. cmd değerlerinin tam listesi için vfs.AbstractBlockDev.ioctl() bölümüne bakın. cmd=5 flash blok boyutunu bayt cinsinden döndürür; cmd=6 arg indeksli bloğu siler.