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.AbstractBlockDevile 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
bufiç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_numblok 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_numbloğu içindekioffsetbaytından başlayaraklen(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
bufiç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_numblok 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_numbloğu içindekioffsetbaytından başlayaraklen(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 birioctl(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
OSErrorfırlatır.
- ioctl(cmd: int, arg: int) int | None¶
Standart
vfs.AbstractBlockDevioctl giriş noktası.cmddeğerlerinin tam listesi içinvfs.AbstractBlockDev.ioctl()bölümüne bakın.cmd=5flash blok boyutunu bayt cinsinden döndürür;cmd=6argindeksli bloğu siler.