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 blokblock_num.len(buf)harus merupakan kelipatan ukuran blok flash.Bentuk diperluas (
readblocks(block_num, buf, offset)): membacalen(buf)byte -- tidak harus seluruh blok -- dimulai dari byteoffsetdalam blokblock_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
bufke flash. Dua overload mengekspos antarmuka sederhana dan diperluas:Bentuk sederhana (
writeblocks(block_num, buf)): menulis seluruh blok dimulai dari indeks blokblock_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)): menulislen(buf)byte -- tidak harus seluruh blok -- dimulai dari byteoffsetdalam blokblock_num.len(buf)tidak memiliki batasan penyelarasan, dan tidak ada penghapusan implisit yang dilakukan -- pemanggil harus memastikan blok yang terpengaruh telah dihapus melalui panggilanioctl(6, block_num)sebelumnya.Memunculkan
OSErrorjika operasi penghapusan atau penulisan flash yang mendasarinya gagal.
- ioctl(cmd: int, arg: int) int | None¶
Titik masuk ioctl
vfs.AbstractBlockDevstandar. Lihatvfs.AbstractBlockDev.ioctl()untuk daftar lengkap nilaicmd.cmd=5mengembalikan ukuran blok flash dalam byte;cmd=6menghapus blok dengan indeksarg.