mimxrt — funkcje specyficzne dla NXP i.MXRT¶
Moduł mimxrt zawiera funkcje i klasy specyficzne dla rodziny mikrokontrolerów NXP i.MXRT.
Klasy¶
- class mimxrt.Flash¶
Pobiera obiekt singletonu, który udostępnia obszar pamięci użytkownika wbudowanej pamięci flash QSPI jako urządzenie blokowe zgodne z
vfs.AbstractBlockDev. Numery bloków są względne wobec początku tego obszaru, a nie fizycznego początku pamięci flash.W większości przypadków, aby przechowywać trwałe dane na urządzeniu, będziesz chciał użyć abstrakcji wyższego poziomu – na przykład systemu plików poprzez standardowe API plików Pythona. Ten interfejs jest przydatny do dostosowania konfiguracji systemu plików lub zaimplementowania niskopoziomowego systemu przechowywania dla twojej aplikacji.
Obiekt implementuje również protokół bufora, umożliwiając dostęp tylko do odczytu z mapowaniem pamięci do całego obszaru pamięci flash poprzez bazę QSPI XIP. Udostępnia to widok obszaru bez kopiowania, bez wykonywania jakichkolwiek odczytów z pamięci flash:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
Rozmiar bloku używany przez bazowe sektory pamięci flash można odpytać w czasie wykonywania za pomocą
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Odczytuje bajty z pamięci flash do
buf. Dwa przeciążenia udostępniają interfejs prosty i rozszerzony:Forma prosta (
readblocks(block_num, buf)): odczytuje całe bloki, zaczynając od indeksu blokublock_num.len(buf)musi być wielokrotnością rozmiaru bloku pamięci flash.Forma rozszerzona (
readblocks(block_num, buf, offset)): odczytujelen(buf)bajtów – niekoniecznie całkowitą liczbę bloków – zaczynając od bajtuoffsetw blokublock_num.len(buf)nie ma ograniczeń co do wyrównania.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
Zapisuje bajty z
bufdo pamięci flash. Dwa przeciążenia udostępniają interfejs prosty i rozszerzony:Forma prosta (
writeblocks(block_num, buf)): zapisuje całe bloki, zaczynając od indeksu blokublock_num.len(buf)musi być wielokrotnością rozmiaru bloku pamięci flash. Każdy zmieniany blok jest automatycznie kasowany przed zapisem.Forma rozszerzona (
writeblocks(block_num, buf, offset)): zapisujelen(buf)bajtów – niekoniecznie całkowitą liczbę bloków – zaczynając od bajtuoffsetw blokublock_num.len(buf)nie ma ograniczeń co do wyrównania i nie jest wykonywane żadne niejawne kasowanie – wywołujący musi zapewnić, że zmieniane bloki zostały skasowane wcześniejszym wywołaniemioctl(6, block_num).Zgłasza
OSError, jeśli bazowa operacja kasowania lub zapisu pamięci flash się nie powiedzie.
- ioctl(cmd: int, arg: int) int | None¶
Standardowy punkt wejścia ioctl klasy
vfs.AbstractBlockDev. Pełną listę wartościcmdznajdziesz wvfs.AbstractBlockDev.ioctl().cmd=5zwraca rozmiar bloku pamięci flash w bajtach;cmd=6kasuje blok o indeksiearg.