mimxrt — funcionalidade específica do NXP i.MXRT¶
O módulo mimxrt contém funções e classes específicas da 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 usuário do flash QSPI embarcado 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 do flash.Na maioria dos casos, para armazenar dados persistentes no dispositivo, você vai querer usar uma abstração de mais alto nível – por exemplo, o sistema de arquivos via API de arquivos padrão do Python. Esta interface é útil para personalizar a configuração do sistema de arquivos ou implementar um sistema de armazenamento de baixo nível para sua aplicação.
O objeto também implementa o protocolo de buffer, permitindo acesso somente leitura mapeado em memória a toda a região de armazenamento flash via a base XIP do QSPI. Isso disponibiliza uma visão sem cópia da região sem emitir nenhuma leitura de flash:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
O tamanho de bloco usado 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 do flash para
buf. Duas sobrecargas expõem as interfaces simples e estendida:Forma simples (
readblocks(block_num, buf)): lê blocos inteiros começando no índice de blocoblock_num.len(buf)deve ser um múltiplo do tamanho de bloco do flash.Forma estendida (
readblocks(block_num, buf, offset)): lêlen(buf)bytes – não necessariamente um número inteiro de blocos – começando no 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 o flash. Duas sobrecargas expõem as interfaces simples e estendida:Forma simples (
writeblocks(block_num, buf)): escreve blocos inteiros começando no índice de blocoblock_num.len(buf)deve ser um múltiplo do tamanho de bloco do flash. Cada bloco afetado é apagado automaticamente antes de ser escrito.Forma estendida (
writeblocks(block_num, buf, offset)): escrevelen(buf)bytes – não necessariamente um número inteiro de blocos – começando no byteoffsetdentro do blocoblock_num.len(buf)não tem restrição de alinhamento, e nenhum apagamento implícito é realizado – o chamador deve garantir que os blocos afetados tenham sido apagados por meio de uma chamada anterior aioctl(6, block_num).Levanta
OSErrorse a operação subjacente de apagamento ou escrita do flash falhar.
- ioctl(cmd: int, arg: int) int | None¶
Ponto de entrada ioctl padrão de
vfs.AbstractBlockDev. Vejavfs.AbstractBlockDev.ioctl()para a lista completa de valores decmd.cmd=5retorna o tamanho de bloco do flash em bytes;cmd=6apaga o bloco com índicearg.