mimxrt --- chức năng dành riêng cho NXP i.MXRT

Module mimxrt chứa các hàm và lớp dành riêng cho dòng vi điều khiển NXP i.MXRT.

Lớp

class mimxrt.Flash

Lấy đối tượng singleton tiết lộ vùng lưu trữ người dùng của bộ nhớ QSPI flash trên bo mạch dưới dạng thiết bị block tương thích với vfs.AbstractBlockDev. Số block tương đối với điểm bắt đầu của vùng đó, không phải điểm bắt đầu vật lý của flash.

Trong hầu hết các trường hợp, để lưu trữ dữ liệu bền vững trên thiết bị, bạn sẽ muốn sử dụng một trừu tượng cấp cao hơn -- ví dụ: hệ thống tệp qua API tệp tiêu chuẩn của Python. Giao diện này hữu ích để tùy chỉnh cấu hình hệ thống tệp hoặc triển khai hệ thống lưu trữ cấp thấp cho ứng dụng của bạn.

Đối tượng cũng triển khai giao thức bộ đệm, cho phép truy cập bộ nhớ ánh xạ chỉ đọc vào toàn bộ vùng lưu trữ flash qua cơ sở QSPI XIP. Điều này làm cho một view không sao chép của vùng khả dụng mà không cần phát lệnh đọc flash:

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

Kích thước block được sử dụng bởi các sector flash nền tảng có thể được truy vấn tại runtime với ioctl(5, 0).

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

Đọc các byte từ flash vào buf. Hai dạng nạp chồng tiết lộ giao diện đơn giản và mở rộng:

Dạng đơn giản (readblocks(block_num, buf)): đọc toàn bộ block bắt đầu từ chỉ số block block_num. len(buf) phải là bội số của kích thước block flash.

Dạng mở rộng (readblocks(block_num, buf, offset)): đọc len(buf) byte -- không nhất thiết là số nguyên block -- bắt đầu từ byte offset trong block block_num. len(buf) không có ràng buộc căn chỉnh.

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

Ghi các byte từ buf vào flash. Hai dạng nạp chồng tiết lộ giao diện đơn giản và mở rộng:

Dạng đơn giản (writeblocks(block_num, buf)): ghi toàn bộ block bắt đầu từ chỉ số block block_num. len(buf) phải là bội số của kích thước block flash. Mỗi block bị ảnh hưởng được xóa tự động trước khi ghi.

Dạng mở rộng (writeblocks(block_num, buf, offset)): ghi len(buf) byte -- không nhất thiết là số nguyên block -- bắt đầu từ byte offset trong block block_num. len(buf) không có ràng buộc căn chỉnh, và không thực hiện xóa ngầm định -- người gọi phải đảm bảo các block bị ảnh hưởng đã được xóa qua lệnh gọi ioctl(6, block_num) trước đó.

Raise OSError nếu phép toán xóa hoặc ghi flash nền tảng thất bại.

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

Điểm vào ioctl vfs.AbstractBlockDev tiêu chuẩn. Xem vfs.AbstractBlockDev.ioctl() để biết danh sách đầy đủ các giá trị cmd. cmd=5 trả về kích thước block flash tính bằng byte; cmd=6 xóa block có chỉ số arg.