mimxrt — NXP i.MXRT 전용 기능

mimxrt 모듈은 NXP i.MXRT 계열 마이크로컨트롤러 전용 함수와 클래스를 포함합니다.

클래스

class mimxrt.Flash

온보드 QSPI 플래시의 사용자 저장 영역을 vfs.AbstractBlockDev 호환 블록 디바이스로 노출하는 싱글톤 객체를 가져옵니다. 블록 번호는 플래시의 물리적 시작이 아니라 해당 영역의 시작을 기준으로 합니다.

대부분의 경우, 디바이스에 영구 데이터를 저장하려면 더 높은 수준의 추상화를 사용하는 것이 좋습니다. 예를 들어 Python의 표준 파일 API를 통한 파일 시스템이 있습니다. 이 인터페이스는 파일 시스템 구성을 사용자 정의하거나 애플리케이션을 위한 저수준 저장 시스템을 구현하는 데 유용합니다.

이 객체는 또한 버퍼 프로토콜을 구현하여, QSPI XIP 베이스를 통해 전체 플래시 저장 영역에 대한 읽기 전용 메모리 매핑 접근을 허용합니다. 이를 통해 어떤 플래시 읽기도 발생시키지 않고 해당 영역의 제로 카피(zero-copy) 뷰를 사용할 수 있습니다:

flash = mimxrt.Flash()
view = memoryview(flash)
magic = bytes(view[:4])      # read the first 4 bytes directly from XIP

기반 플래시 섹터에 사용되는 블록 크기는 런타임에 ioctl(5, 0)로 조회할 수 있습니다.

readblocks(block_num: int, buf: bytearray) None
readblocks(block_num: int, buf: bytearray, offset: int) None

플래시에서 buf로 바이트를 읽습니다. 두 가지 오버로드가 단순 인터페이스와 확장 인터페이스를 노출합니다:

단순 형식(readblocks(block_num, buf)): 블록 인덱스 block_num에서 시작하여 블록 전체를 읽습니다. len(buf)는 플래시 블록 크기의 배수여야 합니다.

확장 형식(readblocks(block_num, buf, offset)): 블록 block_num 내의 바이트 offset에서 시작하여 len(buf) 바이트를 읽습니다. 이는 반드시 블록 단위일 필요는 없습니다. len(buf)에는 정렬 제약이 없습니다.

writeblocks(block_num: int, buf: bytes) None
writeblocks(block_num: int, buf: bytes, offset: int) None

buf의 바이트를 플래시에 씁니다. 두 가지 오버로드가 단순 인터페이스와 확장 인터페이스를 노출합니다:

단순 형식(writeblocks(block_num, buf)): 블록 인덱스 block_num에서 시작하여 블록 전체를 씁니다. len(buf)는 플래시 블록 크기의 배수여야 합니다. 영향을 받는 각 블록은 쓰기 전에 자동으로 지워집니다.

확장 형식(writeblocks(block_num, buf, offset)): 블록 block_num 내의 바이트 offset부터 시작하여 len(buf) 바이트를 씁니다. 반드시 정수 개의 블록일 필요는 없습니다. len(buf)에는 정렬 제약이 없으며, 암묵적인 지우기가 수행되지 않습니다. 호출자는 이전 ioctl(6, block_num) 호출을 통해 영향을 받는 블록이 지워졌는지 확인해야 합니다.

기반 플래시 지우기 또는 쓰기 작업이 실패하면 OSError를 발생시킵니다.

ioctl(cmd: int, arg: int) int | None

표준 vfs.AbstractBlockDev ioctl 진입점입니다. cmd 값의 전체 목록은 vfs.AbstractBlockDev.ioctl()을 참조하십시오. cmd=5는 플래시 블록 크기를 바이트 단위로 반환합니다. cmd=6은 인덱스가 arg인 블록을 지웁니다.