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 bloqueblock_num.len(buf)debe ser un múltiplo del tamaño de bloque de la memoria flash.Forma extendida (
readblocks(block_num, buf, offset)): leelen(buf)bytes, no necesariamente un número entero de bloques, comenzando en el byteoffsetdentro del bloqueblock_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
bufen 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 bloqueblock_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)): escribelen(buf)bytes, no necesariamente un número entero de bloques, comenzando en el byteoffsetdentro del bloqueblock_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 aioctl(6, block_num).Lanza
OSErrorsi 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. Consultevfs.AbstractBlockDev.ioctl()para ver la lista completa de valores decmd.cmd=5devuelve el tamaño de bloque de la memoria flash en bytes;cmd=6borra el bloque con índicearg.