mimxrt --- NXP i.MXRT 固有の機能¶
mimxrt モジュールには、NXP i.MXRT ファミリのマイクロコントローラに固有の関数とクラスが含まれています。
クラス¶
- class mimxrt.Flash¶
オンボードの QSPI フラッシュのユーザーストレージ領域を
vfs.AbstractBlockDev互換のブロックデバイスとして公開するシングルトンオブジェクトを取得します。ブロック番号は、フラッシュの物理的な先頭ではなく、その領域の先頭からの相対値です。ほとんどの場合、デバイス上に永続データを保存するには、より高レベルの抽象化(例えば Python の標準ファイル API を介したファイルシステム)を使用するとよいでしょう。このインターフェースは、ファイルシステムの設定をカスタマイズ する場合や、アプリケーション用の低レベルストレージシステムを実装する場合に役立ちます。
このオブジェクトはバッファプロトコルも実装しており、QSPI XIP ベースを介してフラッシュストレージ領域全体への読み取り専用のメモリマップアクセスを可能にします。これにより、フラッシュの読み取りを一切発行することなく、領域のゼロコピービューが利用可能になります:
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へバイトを読み取ります。2 つのオーバーロードがシンプルなインターフェースと拡張インターフェースを公開します:シンプル形式(
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からフラッシュへバイトを書き込みます。2 つのオーバーロードがシンプルなインターフェースと拡張インターフェースを公開します:シンプル形式(
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.AbstractBlockDevioctl エントリポイントです。cmd値の完全なリストについてはvfs.AbstractBlockDev.ioctl()を参照してください。cmd=5はフラッシュのブロックサイズをバイト単位で返します。cmd=6はインデックスargのブロックを消去します。