mimxrt — функціональність, специфічна для NXP i.MXRT¶
Модуль mimxrt містить функції та класи, специфічні для сімейства мікроконтролерів NXP i.MXRT.
Класи¶
- class mimxrt.Flash¶
Отримує одиночний об’єкт, що надає область зберігання користувача на вбудованій QSPI флеш-пам’яті як блоковий пристрій, сумісний з
vfs.AbstractBlockDev. Номери блоків відраховуються від початку цієї області, а не від фізичного початку флеш-пам’яті.У більшості випадків для зберігання постійних даних на пристрої вам потрібна абстракція вищого рівня — наприклад, файлова система через стандартний файловий API Python. Цей інтерфейс корисний для налаштування конфігурації файлової системи або реалізації низькорівневої системи зберігання для вашого застосунку.
Об’єкт також реалізує протокол буфера, дозволяючи доступ до всієї області флеш-сховища з відображенням у пам’ять лише для читання через базову адресу QSPI XIP. Це робить доступним вид без копіювання цієї області без виконання жодних операцій читання флеш-пам’яті:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Розмір блоку, що використовується базовими секторами флеш-пам’яті, можна запитати під час виконання за допомогою
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Читає байти з флеш-пам’яті в
buf. Два перевантаження надають простий і розширений інтерфейси:Проста форма (
readblocks(block_num, buf)): читає цілі блоки починаючи з індексу блокуblock_num.len(buf)повинен бути кратним розміру блоку флеш-пам’яті.Розширена форма (
readblocks(block_num, buf, offset)): читаєlen(buf)байтів — не обов’язково ціле число блоків — починаючи з байтового зміщенняoffsetвсередині блокуblock_num.len(buf)не має обмежень на вирівнювання.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Записує байти з
bufдо флеш-пам’яті. Два перевантаження надають простий і розширений інтерфейси:Проста форма (
writeblocks(block_num, buf)): записує цілі блоки починаючи з індексу блокуblock_num.len(buf)повинен бути кратним розміру блоку флеш-пам’яті. Кожен задіяний блок автоматично стирається перед записом.Розширена форма (
writeblocks(block_num, buf, offset)): записуєlen(buf)байтів — не обов’язково ціле число блоків — починаючи з байтового зміщенняoffsetвсередині блокуblock_num.len(buf)не має обмежень на вирівнювання, і неявне стирання не виконується — викликач повинен забезпечити стирання задіяних блоків за допомогою попереднього викликуioctl(6, block_num).Генерує
OSError, якщо базова операція стирання або запису флеш-пам’яті зазнає невдачі.
- ioctl(cmd: int, arg: int) int | None¶
Стандартна точка входу ioctl
vfs.AbstractBlockDev. Дивітьсяvfs.AbstractBlockDev.ioctl()для повного списку значеньcmd.cmd=5повертає розмір блоку флеш-пам’яті у байтах;cmd=6стирає блок з індексомarg.