mimxrt — funcionalidad específica de NXP i.MXRT

El módulo mimxrt contiene funciones y clases específicas de la familia de microcontroladores NXP i.MXRT.

Clases

class mimxrt.Flash

Obtiene el objeto singleton que expone la región de almacenamiento de usuario de la memoria flash QSPI integrada como un dispositivo de bloques compatible con vfs.AbstractBlockDev. Los números de bloque son relativos al inicio de esa región, no al inicio físico de la memoria flash.

En la mayoría de los casos, para almacenar datos persistentes en el dispositivo, querrá usar una abstracción de más alto nivel, por ejemplo el sistema de archivos a través de la API de archivos estándar de Python. Esta interfaz es útil para personalizar la configuración del sistema de archivos o implementar un sistema de almacenamiento de bajo nivel para su aplicación.

El objeto también implementa el protocolo de búfer, lo que permite el acceso de solo lectura mapeado en memoria a toda la región de almacenamiento flash a través de la base QSPI XIP. Esto hace que una vista de copia cero (zero-copy) de la región esté disponible sin emitir ninguna lectura de memoria flash:

flash = mimxrt.Flash()
view = memoryview(flash)
magic = bytes(view[:4])      # read the first 4 bytes directly from XIP

El tamaño de bloque utilizado por los sectores de la memoria flash subyacente puede consultarse en tiempo de ejecución con ioctl(5, 0).

readblocks(block_num: int, buf: bytearray) None
readblocks(block_num: int, buf: bytearray, offset: int) None

Lee bytes desde la memoria flash en buf. Dos sobrecargas exponen las interfaces simple y extendida:

Forma simple (readblocks(block_num, buf)): lee bloques completos comenzando en el índice de bloque block_num. len(buf) debe ser un múltiplo del tamaño de bloque de la memoria flash.

Forma extendida (readblocks(block_num, buf, offset)): lee len(buf) bytes, no necesariamente un número entero de bloques, comenzando en el byte offset dentro del bloque block_num. len(buf) no tiene ninguna restricción de alineación.

writeblocks(block_num: int, buf: bytes) None
writeblocks(block_num: int, buf: bytes, offset: int) None

Escribe bytes desde buf en la memoria flash. Dos sobrecargas exponen las interfaces simple y extendida:

Forma simple (writeblocks(block_num, buf)): escribe bloques completos comenzando en el índice de bloque block_num. len(buf) debe ser un múltiplo del tamaño de bloque de la memoria flash. Cada bloque afectado se borra automáticamente antes de ser escrito.

Forma extendida (writeblocks(block_num, buf, offset)): escribe len(buf) bytes, no necesariamente un número entero de bloques, comenzando en el byte offset dentro del bloque block_num. len(buf) no tiene ninguna restricción de alineación, y no se realiza ningún borrado implícito: el llamante debe asegurarse de que los bloques afectados hayan sido borrados mediante una llamada previa a ioctl(6, block_num).

Lanza OSError si la operación subyacente de borrado o escritura de la memoria flash falla.

ioctl(cmd: int, arg: int) int | None

Punto de entrada ioctl estándar de vfs.AbstractBlockDev. Consulte vfs.AbstractBlockDev.ioctl() para ver la lista completa de valores de cmd. cmd=5 devuelve el tamaño de bloque de la memoria flash en bytes; cmd=6 borra el bloque con índice arg.