class Flash -- truy cập bộ nhớ flash tích hợp

Lớp Flash cung cấp quyền truy cập trực tiếp ở cấp độ khối vào chip flash QSPI ngoài của RP2040. Driver này triển khai giao diện vfs.AbstractBlockDev để có thể truyền vào vfs.mount() cho các cấu hình hệ thống tệp tùy chỉnh.

Hầu hết các tập lệnh lưu trữ dữ liệu qua hệ thống tệp được gắn tự động tại / và không bao giờ khởi tạo Flash trực tiếp. Hãy khởi tạo thủ công khi bạn cần:

  • Gắn một hệ thống tệp không mặc định (ví dụ: bọc bằng vfs.VfsFat) trên một phân vùng tùy chỉnh.

  • Đọc hoặc ghi các vùng firmware hoặc khối dữ liệu nhà máy không thuộc quyền sở hữu của hệ thống tệp.

  • Triển khai định dạng lưu trữ trên flash tùy chỉnh bỏ qua lớp hệ thống tệp.

Constructors

class rp2.Flash Flash

Trả về đối tượng block-device Flash singleton được hỗ trợ bởi chip flash QSPI của RP2040. Khối đầu tiên được hiển thị là khối ngay sau vùng firmware, do đó người gọi chỉ thấy vùng của chip đủ điều kiện cho hệ thống tệp.

Methods

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. Điểm vào block-device vfs.AbstractBlockDev tiêu chuẩn được sử dụng bởi lớp hệ thống tệp.

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

Dạng mở rộng (readblocks(block_num, buf, offset)): đọc len(buf) byte -- không nhất thiết phải là số nguyên khối -- bắt đầu từ byte offset trong khối block_num. Được sử dụng bởi littlefs và các hệ thống tệp có thể đánh địa chỉ theo byte khác.

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. Điểm vào block-device vfs.AbstractBlockDev tiêu chuẩn được sử dụng bởi lớp hệ thống tệp.

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

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

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

Điểm vào điều khiển vfs.AbstractBlockDev tiêu chuẩn. Được gọi bởi lớp hệ thống tệp khi gắn/tháo gắn và khi đồng bộ hóa. Các giá trị cmd được nhận dạng:

  • 1 -- khởi tạo. Trả về 0 khi thành công.

  • 2 -- hủy khởi tạo. Trả về 0 khi thành công.

  • 3 -- đồng bộ hóa các lần ghi đang chờ. Trả về 0.

  • 4 -- trả về số khối flash hiển thị với hệ thống tệp.

  • 5 -- trả về kích thước khối tính bằng byte (thường là kích thước sector flash, 4096).

  • 6 -- xóa khối tại chỉ số arg. Bắt buộc trước khi sử dụng dạng writeblocks mở rộng.

  • 7 -- trả về liệu thiết bị có hỗ trợ lệnh xóa khối hay không (1 trên RP2040).

Người gọi trực tiếp thường không sử dụng phương thức này -- driver hệ thống tệp sẽ tự động phân phối các mã tiêu chuẩn sau khi Flash được gắn vào.