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. См. полный список значенийcmdвvfs.AbstractBlockDev.ioctl().cmd=5возвращает размер блока флеш-памяти в байтах;cmd=6стирает блок с индексомarg.