class Flash – גישה לאחסון flash מובנה

המחלקה Flash מספקת גישה ישירה ברמת הבלוקים לשבב ה-flash מסוג QSPI החיצוני של ה-RP2040. הדרייבר מממש את הממשק vfs.AbstractBlockDev כך שניתן להעביר אותו אל vfs.mount() עבור תצורות מערכת קבצים מותאמות אישית.

רוב הסקריפטים שומרים נתונים דרך מערכת הקבצים המעוגנת אוטומטית בנתיב / ולעולם אינם יוצרים Flash באופן ישיר. צרו מופע ידנית כאשר אתם צריכים:

  • לעגן מערכת קבצים שאינה ברירת המחדל (למשל לעטוף עם vfs.VfsFat) על מחיצה מותאמת אישית.

  • לקרוא או לכתוב לאזורי קושחה או לבלוקים של נתוני יצרן שאינם בבעלות מערכת הקבצים.

  • לממש פורמט אחסון מותאם אישית על ה-flash שעוקף את שכבת מערכת הקבצים.

Constructors

class rp2.Flash Flash

מחזיר את אובייקט התקן-הבלוקים היחיד (singleton) מסוג Flash הנתמך על ידי שבב ה-flash מסוג QSPI של ה-RP2040. הבלוק הראשון שנחשף הוא זה שמיד לאחר אזור הקושחה, כך שהקוראים רואים רק את האזור של השבב הזכאי למערכת קבצים.

Methods

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

קורא בייטים מה-flash אל תוך buf. נקודת הכניסה הסטנדרטית של התקן-בלוקים מסוג vfs.AbstractBlockDev המשמשת את שכבת מערכת הקבצים.

צורה פשוטה (readblocks(block_num, buf)): קריאת בלוקים שלמים החל מאינדקס הבלוק block_num. הערך len(buf) חייב להיות כפולה של גודל בלוק ה-flash.

צורה מורחבת (readblocks(block_num, buf, offset)): קריאת len(buf) בייטים – לא בהכרח מספר שלם של בלוקים – החל מבייט offset בתוך הבלוק block_num. משמש את littlefs ומערכות קבצים אחרות הניתנות למיעון ברמת הבייט.

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

כותב בייטים מ-buf אל ה-flash. נקודת הכניסה הסטנדרטית של התקן-בלוקים מסוג vfs.AbstractBlockDev המשמשת את שכבת מערכת הקבצים.

צורה פשוטה (writeblocks(block_num, buf)): כתיבת בלוקים שלמים החל מאינדקס הבלוק block_num. הערך len(buf) חייב להיות כפולה של גודל בלוק ה-flash. כל בלוק מושפע נמחק אוטומטית לפני שהוא נכתב.

צורה מורחבת (writeblocks(block_num, buf, offset)): כתיבת len(buf) בייטים – לא בהכרח מספר שלם של בלוקים – החל מבייט offset בתוך הבלוק block_num. לא מתבצעת מחיקה משתמעת – על הקורא לוודא שהבלוקים המושפעים נמחקו באמצעות קריאה קודמת ל-ioctl(6, block_num).

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

נקודת הכניסה הסטנדרטית לבקרה של vfs.AbstractBlockDev. נקראת על ידי שכבת מערכת הקבצים בזמן עיגון/ביטול עיגון ובכל סנכרון. ערכי cmd מוכרים:

  • 1 – אתחול. מחזיר 0 בהצלחה.

  • 2 – ביטול אתחול. מחזיר 0 בהצלחה.

  • 3 – סנכרון כתיבות ממתינות. מחזיר 0.

  • 4 – מחזיר את מספר בלוקי ה-flash הנראים למערכת הקבצים.

  • 5 – מחזיר את גודל הבלוק בבייטים (בדרך כלל גודל הסקטור של ה-flash, 4096).

  • 6 – מוחק את הבלוק באינדקס arg. נדרש לפני שימוש בצורה המורחבת של writeblocks.

  • 7 – מחזיר האם ההתקן תומך בפקודת מחיקת הבלוק (1 ב-RP2040).

קוראים ישירים בדרך כלל אינם משתמשים בשיטה זו – דרייבר מערכת הקבצים מנתב את הקודים הסטנדרטיים אוטומטית ברגע שה-Flash מעוגן.