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。有兩種多載分別公開簡單與擴充介面:簡單形式(
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.AbstractBlockDevioctl 進入點。完整的cmd值清單請參閱vfs.AbstractBlockDev.ioctl()。cmd=5回傳以位元組為單位的快閃記憶體區塊大小;cmd=6抹除索引為arg的區塊。