клас Flash – доступ до вбудованої флеш-пам’яті¶
Клас Flash забезпечує прямий, блоковий доступ до зовнішнього QSPI-чіпа флеш-пам’яті RP2040. Драйвер реалізує інтерфейс vfs.AbstractBlockDev, тому його можна передавати до vfs.mount() для налаштування власних конфігурацій файлової системи.
Більшість скриптів зберігають дані через автоматично змонтовану файлову систему за шляхом / і ніколи не створюють Flash безпосередньо. Створюйте екземпляр вручну, якщо вам потрібно:
Змонтувати нестандартну файлову систему (наприклад, обгорнуту в
vfs.VfsFat) на власному розділі.Читати або записувати регіони мікропрограми або блоки заводських даних, що не належать файловій системі.
Реалізувати власний формат зберігання даних у флеш-пам’яті, що обходить рівень файлової системи.
Конструктори¶
- class rp2.Flash Flash¶
Повертає одиночний об’єкт блокового пристрою
Flash, підкріплений QSPI-чіпом флеш-пам’яті RP2040. Перший видимий блок розташований одразу після регіону мікропрограми, тому викликачі бачать лише придатну для файлової системи область чіпа.Методи¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Читає байти з флеш-пам’яті в
buf. Стандартна точка входу блокового пристроюvfs.AbstractBlockDev, яку використовує рівень файлової системи.Проста форма (
readblocks(block_num, buf)): читає цілі блоки починаючи з блокового індексуblock_num.len(buf)повинно бути кратним розміру блоку флеш-пам’яті.Розширена форма (
readblocks(block_num, buf, offset)): читаєlen(buf)байтів – не обов’язково ціле число блоків – починаючи з байтового зміщенняoffsetвсередині блокуblock_num. Використовується littlefs та іншими файловими системами з побайтовою адресацією.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Записує байти з
bufу флеш-пам’ять. Стандартна точка входу блокового пристроюvfs.AbstractBlockDev, яку використовує рівень файлової системи.Проста форма (
writeblocks(block_num, buf)): записує цілі блоки починаючи з блокового індексуblock_num.len(buf)повинно бути кратним розміру блоку флеш-пам’яті. Кожен задіяний блок автоматично стирається перед записом.Розширена форма (
writeblocks(block_num, buf, offset)): записуєlen(buf)байтів – не обов’язково ціле число блоків – починаючи з байтового зміщенняoffsetвсередині блокуblock_num. Неявне стирання не виконується – викликач повинен забезпечити стирання задіяних блоків за допомогою попереднього викликуioctl(6, block_num).
- ioctl(cmd: int, arg: int) int | None¶
Стандартна точка входу управління
vfs.AbstractBlockDev. Викликається рівнем файлової системи під час монтування/розмонтування та при кожній синхронізації. Підтримувані значенняcmd:1– ініціалізація. Повертає0при успіху.2– деініціалізація. Повертає0при успіху.3– синхронізація очікуючих записів. Повертає0.4– повертає кількість блоків флеш-пам’яті, видимих файловій системі.5– повертає розмір блоку в байтах (як правило, розмір сектора флеш-пам’яті,4096).6– стирає блок за індексомarg. Необхідно перед використанням розширеної формиwriteblocks.7– повертає, чи підтримує пристрій команду стирання блоку (1на RP2040).
Прямі викликачі зазвичай не використовують цей метод – драйвер файлової системи автоматично розподіляє стандартні коди після монтування
Flash.