kelas Flash -- akses ke penyimpanan flash bawaan¶
Kelas Flash menyediakan akses langsung setingkat blok ke chip flash QSPI eksternal RP2040. Driver ini mengimplementasikan antarmuka vfs.AbstractBlockDev sehingga dapat diteruskan ke vfs.mount() untuk konfigurasi filesystem khusus.
Sebagian besar skrip menyimpan data melalui filesystem yang dipasang otomatis di / dan tidak pernah membuat Flash secara langsung. Buat satu secara manual ketika Anda perlu:
Memasang filesystem non-default (misalnya bungkus dengan
vfs.VfsFat) pada partisi khusus.Membaca atau menulis wilayah firmware atau blok data pabrik yang tidak dimiliki oleh filesystem.
Mengimplementasikan format penyimpanan di-flash khusus yang melewati lapisan filesystem.
Konstruktor¶
- class rp2.Flash Flash¶
Mengembalikan objek block-device
Flashsingleton yang didukung oleh chip flash QSPI RP2040. Blok pertama yang diekspos adalah blok tepat setelah wilayah firmware, sehingga pemanggil hanya melihat area chip yang memenuhi syarat untuk filesystem.Metode¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Membaca byte dari flash ke dalam
buf. Titik masuk block-devicevfs.AbstractBlockDevstandar yang digunakan oleh lapisan filesystem.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 merupakan jumlah blok bulat -- mulai dari byteoffsetdi dalam blokblock_num. Digunakan oleh littlefs dan filesystem yang dapat dialamatkan byte lainnya.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Menulis byte dari
bufke flash. Titik masuk block-devicevfs.AbstractBlockDevstandar yang digunakan oleh lapisan filesystem.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 merupakan jumlah blok bulat -- mulai dari byteoffsetdi dalam blokblock_num. Tidak ada penghapusan implisit yang dilakukan -- pemanggil harus memastikan blok yang terpengaruh telah dihapus melalui panggilanioctl(6, block_num)sebelumnya.
- ioctl(cmd: int, arg: int) int | None¶
Titik masuk kontrol
vfs.AbstractBlockDevstandar. Dipanggil oleh lapisan filesystem pada waktu pasang/lepas dan pada setiap sinkronisasi. Nilaicmdyang dikenali:1-- inisialisasi. Mengembalikan0jika berhasil.2-- deinisialisasi. Mengembalikan0jika berhasil.3-- sinkronkan penulisan yang tertunda. Mengembalikan0.4-- kembalikan jumlah blok flash yang terlihat oleh filesystem.5-- kembalikan ukuran blok dalam byte (biasanya ukuran sektor flash,4096).6-- hapus blok pada indeksarg. Diperlukan sebelum menggunakan bentukwriteblocksyang diperluas.7-- kembalikan apakah perangkat mendukung perintah penghapusan blok (1pada RP2040).
Pemanggil langsung biasanya tidak menggunakan metode ini -- driver filesystem mengirimkan kode standar secara otomatis setelah
Flashdipasang.