mimxrt — funcionalidade específica para NXP i.MXRT¶
O módulo mimxrt contém funções e classes específicas para a família de microcontroladores NXP i.MXRT.
Classes¶
- class mimxrt.Flash¶
Obtém o objeto singleton que expõe a região de armazenamento do utilizador da flash QSPI integrada como um dispositivo de blocos compatível com
vfs.AbstractBlockDev. Os números de bloco são relativos ao início dessa região, não ao início físico da flash.Na maioria dos casos, para armazenar dados persistentes no dispositivo, deverá utilizar uma abstração de nível superior – por exemplo, o sistema de ficheiros através da API de ficheiros padrão do Python. Esta interface é útil para personalizar a configuração do sistema de ficheiros ou implementar um sistema de armazenamento de baixo nível para a sua aplicação.
O objeto também implementa o protocolo de buffer, permitindo acesso de leitura mapeado em memória a toda a região de armazenamento flash através da base XIP do QSPI. Isto torna disponível uma vista de cópia zero da região sem emitir quaisquer leituras de flash:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
O tamanho do bloco utilizado pelos setores de flash subjacentes pode ser consultado em tempo de execução com
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lê bytes da flash para
buf. Duas sobrecargas expõem as interfaces simples e alargada:Forma simples (
readblocks(block_num, buf)): lê blocos completos a partir do índice de blocoblock_num.len(buf)deve ser um múltiplo do tamanho do bloco de flash.Forma alargada (
readblocks(block_num, buf, offset)): lêlen(buf)bytes – não necessariamente um número inteiro de blocos – a partir do byteoffsetdentro do blocoblock_num.len(buf)não tem restrição de alinhamento.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Escreve bytes de
bufpara a flash. Duas sobrecargas expõem as interfaces simples e alargada:Forma simples (
writeblocks(block_num, buf)): escreve blocos completos a partir do índice de blocoblock_num.len(buf)deve ser um múltiplo do tamanho do bloco de flash. Cada bloco afetado é apagado automaticamente antes de ser escrito.Forma alargada (
writeblocks(block_num, buf, offset)): escrevelen(buf)bytes – não necessariamente um número inteiro de blocos – a partir do byteoffsetdentro do blocoblock_num.len(buf)não tem restrição de alinhamento, e não é realizado nenhum apagamento implícito – quem chama deve garantir que os blocos afetados foram apagados através de uma chamada prévia aioctl(6, block_num).Lança
OSErrorse a operação de apagamento ou escrita na flash subjacente falhar.
- ioctl(cmd: int, arg: int) int | None¶
Ponto de entrada ioctl padrão de
vfs.AbstractBlockDev. Consultevfs.AbstractBlockDev.ioctl()para a lista completa de valorescmd.cmd=5retorna o tamanho do bloco de flash em bytes;cmd=6apaga o bloco com índicearg.