mimxrt --- fungsionalitas khusus untuk NXP i.MXRT

Modul mimxrt berisi fungsi dan kelas yang khusus untuk keluarga mikrokontroler NXP i.MXRT.

Kelas

class mimxrt.Flash

Dapatkan objek singleton yang mengekspos wilayah penyimpanan pengguna dari flash QSPI on-board sebagai perangkat blok yang kompatibel dengan vfs.AbstractBlockDev. Nomor blok relatif terhadap awal wilayah tersebut, bukan awal fisik flash.

Dalam kebanyakan kasus, untuk menyimpan data persisten di perangkat, Anda sebaiknya menggunakan abstraksi tingkat lebih tinggi -- misalnya filesystem melalui API file standar Python. Antarmuka ini berguna untuk menyesuaikan konfigurasi filesystem atau mengimplementasikan sistem penyimpanan tingkat rendah untuk aplikasi Anda.

Objek ini juga mengimplementasikan protokol buffer, memungkinkan akses memory-mapped read-only ke seluruh wilayah penyimpanan flash melalui basis QSPI XIP. Ini membuat tampilan zero-copy dari wilayah tersebut tersedia tanpa mengeluarkan pembacaan flash apa pun:

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

Ukuran blok yang digunakan oleh sektor flash yang mendasarinya dapat dikueri saat runtime dengan ioctl(5, 0).

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

Baca byte dari flash ke dalam buf. Dua overload mengekspos antarmuka sederhana dan diperluas:

Bentuk sederhana (readblocks(block_num, buf)): membaca seluruh blok dimulai dari indeks blok block_num. len(buf) harus merupakan kelipatan ukuran blok flash.

Bentuk diperluas (readblocks(block_num, buf, offset)): membaca len(buf) byte -- tidak harus seluruh blok -- dimulai dari byte offset dalam blok block_num. len(buf) tidak memiliki batasan penyelarasan.

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

Tulis byte dari buf ke flash. Dua overload mengekspos antarmuka sederhana dan diperluas:

Bentuk sederhana (writeblocks(block_num, buf)): menulis seluruh blok dimulai dari indeks blok block_num. len(buf) harus merupakan kelipatan ukuran blok flash. Setiap blok yang terpengaruh dihapus secara otomatis sebelum ditulis.

Bentuk diperluas (writeblocks(block_num, buf, offset)): menulis len(buf) byte -- tidak harus seluruh blok -- dimulai dari byte offset dalam blok block_num. len(buf) tidak memiliki batasan penyelarasan, dan tidak ada penghapusan implisit yang dilakukan -- pemanggil harus memastikan blok yang terpengaruh telah dihapus melalui panggilan ioctl(6, block_num) sebelumnya.

Memunculkan OSError jika operasi penghapusan atau penulisan flash yang mendasarinya gagal.

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

Titik masuk ioctl vfs.AbstractBlockDev standar. Lihat vfs.AbstractBlockDev.ioctl() untuk daftar lengkap nilai cmd. cmd=5 mengembalikan ukuran blok flash dalam byte; cmd=6 menghapus blok dengan indeks arg.