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מעוגן.