alif — funciones del SoC Alif Ensemble¶
El módulo alif expone funcionalidad específica del puerto para el SoC Alif Ensemble, incluido un envoltorio de dispositivo de bloques para la memoria flash OSPI integrada y un ayudante para volcar información del SoC desde los servicios del Secure Enclave.
Ejemplo:
import alif
alif.info()
flash = alif.Flash()
Funciones¶
Clases¶
- class alif.Flash(*, start: int = -1, len: int = -1)¶
Crea un objeto de dispositivo de bloques respaldado por la memoria flash OSPI integrada. Esta clase solo está disponible cuando el firmware se compila con compatibilidad OSPI habilitada.
Cuando se llama sin argumentos, devuelve el objeto singleton predeterminado que cubre la región de la memoria flash del sistema de archivos donde se puede escribir.
startes el desplazamiento en bytes dentro de la región de almacenamiento de la memoria flash. Debe ser un múltiplo del tamaño de bloque de la memoria flash y estar dentro del rango de almacenamiento de la memoria flash. El valor predeterminado es-1, lo que significa empezar en el desplazamiento0.lenes la longitud en bytes de la región de la memoria flash expuesta por el objeto. Debe ser un múltiplo del tamaño de bloque de la memoria flash y no extenderse más allá del final de la región de almacenamiento de la memoria flash. El valor predeterminado es-1, lo que significa usar todos los bytes restantes a partir destart.El objeto también implementa el protocolo de búfer, lo que permite el acceso de solo lectura mapeado en memoria a la región de la memoria flash a través de la base OSPI XIP. Esto hace que una vista sin copia de toda la región esté disponible sin emitir ninguna lectura de la memoria flash:
flash = alif.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
- readblocks(block_num: int, buf: bytearray) int¶
- readblocks(block_num: int, buf: bytearray, offset: int) int
Lee bytes de la memoria flash a
buf. Dos sobrecargas exponen las interfaces simple y extendida:Forma simple (
readblocks(block_num, buf)): lee bloques completos a partir del í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 – a partir del byteoffsetdentro del bloqueblock_num.len(buf)no tiene restricción de alineación.Devuelve
0en caso de éxito o un código de error negativo. Ten en cuenta que el protocolo estándar de dispositivo de bloques de MicroPython devuelveNone; el controladoralifexpone intencionadamente el código de estado OSPI subyacente para que los llamadores que omitenvfspuedan reaccionar a errores de hardware.
- writeblocks(block_num: int, buf: bytes) int¶
- writeblocks(block_num: int, buf: bytes, offset: int) int
Escribe bytes de
bufen la memoria flash. Dos sobrecargas exponen las interfaces simple y extendida:Forma simple (
writeblocks(block_num, buf)): escribe bloques completos a partir del í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 escribirse.Forma extendida (
writeblocks(block_num, buf, offset)): escribelen(buf)bytes – no necesariamente un número entero de bloques – a partir del byteoffsetdentro del bloqueblock_num.len(buf)no tiene restricción de alineación, y no se realiza ningún borrado implícito – el llamador debe asegurarse de que los bloques afectados se hayan borrado mediante una llamada previa aioctl(6, block_num).Devuelve
0en caso de éxito o un código de error negativo (consultareadblocks()para conocer el motivo).
- ioctl(cmd: int, arg: int) int¶
Realiza una operación de control del dispositivo de bloques.
cmdes uno de los comandos estándarMP_BLOCKDEV_IOCTL_*de MicroPython:1(init) — devuelve0.2(deinit) — devuelve0.3(sync) — devuelve0.4(recuento de bloques) — devuelve el número de bloques de la región.5(tamaño de bloque) — devuelve el tamaño de bloque de la memoria flash en bytes.6(borrado de bloque) — borra el bloque en el índiceargy devuelve el resultado de la operación de borrado.
Otros valores de
cmddevuelvenNone.