class Flash -- akses ke penyimpanan flash bawaan¶
Kelas Flash memungkinkan akses langsung ke perangkat flash utama pada OpenMV Cam berbasis STM32.
Dalam kebanyakan kasus, untuk menyimpan data persisten di perangkat, Anda sebaiknya menggunakan abstraksi tingkat lebih tinggi, misalnya filesystem melalui API file standar Python, tetapi antarmuka ini berguna untuk menyesuaikan konfigurasi filesystem atau mengimplementasikan sistem penyimpanan tingkat rendah untuk aplikasi Anda.
Catatan
OpenMV Cam H7 Plus, Pure Thermal dan N6 menggunakan chip flash SPI/QSPI/XSPI eksternal untuk penyimpanan utama; OpenMV Cam berbasis STM32 lainnya menggunakan flash internal di dalam MCU. Antarmuka Python identik dalam kedua kasus.
Konstruktor¶
- class pyb.Flash¶
- class pyb.Flash(*, start: int = -1, len: int = -1)
Buat perangkat blok yang kompatibel dengan
vfs.AbstractBlockDevuntuk flash on-board. Dua bentuk tersedia:Flash()(tanpa argumen): mengembalikan objek singleton lama yang mengekspos seluruh flash dengan tabel partisi virtual yang ditambahkan di awal. Data flash aktual dimulai pada blok0x100. Bentuk ini sudah usang dan akan dihapus dalam rilis MicroPython mendatang.Flash(start=..., len=...): mengembalikan perangkat blok baru yang mengakses flash mulai dari offset bytestart(default0) sebesarlenbyte (default: sisa perangkat). Kedua nilai harus merupakan kelipatan dari ukuran blok yang mendasarinya (biasanya 512 byte untuk flash internal; bagian SPI/QSPI/XSPI eksternal menggunakan ukuran sektor erase yang lebih besar).
Metode¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Baca byte dari flash ke
buf. Dua overload mengekspos antarmuka sederhana dan diperluas:Bentuk sederhana (
readblocks(block_num, buf)): membaca seluruh blok mulai dari indeks blokblock_num.len(buf)harus merupakan kelipatan dari ukuran blok flash.Bentuk diperluas (
readblocks(block_num, buf, offset)): membacalen(buf)byte -- tidak harus jumlah blok penuh -- mulai dari byteoffsetdalam blokblock_num.len(buf)tidak memiliki batasan alignment. Hanya didukung pada objek yang dibuat dengan argumenstart/leneksplisit, tidak pada singleton yang sudah usang.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Tulis byte dari
bufke flash. Dua overload mengekspos antarmuka sederhana dan diperluas:Bentuk sederhana (
writeblocks(block_num, buf)): menulis seluruh blok mulai dari indeks blokblock_num.len(buf)harus merupakan kelipatan dari ukuran blok flash. Setiap blok yang terpengaruh dihapus secara otomatis sebelum ditulis.Bentuk diperluas (
writeblocks(block_num, buf, offset)): menulislen(buf)byte -- tidak harus jumlah blok penuh -- mulai dari byteoffsetdalam blokblock_num.len(buf)tidak memiliki batasan alignment, dan tidak ada erase implisit yang dilakukan -- pemanggil harus memastikan blok yang terpengaruh telah dihapus melalui panggilanioctl(6, block_num)sebelumnya. Hanya didukung pada objek yang dibuat dengan argumenstart/leneksplisit.
- 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.