mimxrt — פונקציונליות ספציפית ל-NXP i.MXRT¶
המודול mimxrt מכיל פונקציות ומחלקות הספציפיות למשפחת המיקרו-בקרים NXP i.MXRT.
מחלקות¶
- class mimxrt.Flash¶
קבלו את אובייקט ה-singleton שחושף את אזור אחסון-המשתמש של זיכרון ה-QSPI flash שעל הלוח כהתקן בלוקים תואם
vfs.AbstractBlockDev. מספרי הבלוקים יחסיים לתחילת אזור זה, לא לתחילתו הפיזית של ה-flash.ברוב המקרים, כדי לאחסן נתונים מתמשכים בהתקן, תרצו להשתמש בהפשטה ברמה גבוהה יותר – למשל מערכת הקבצים דרך ה-API הסטנדרטי של Python לקבצים. ממשק זה שימושי כדי להתאים אישית את תצורת מערכת הקבצים או לממש מערכת אחסון ברמה נמוכה עבור היישום שלכם.
האובייקט גם מממש את פרוטוקול החוצץ (buffer), ומאפשר גישה לקריאה-בלבד הממופה לזיכרון לכל אזור אחסון ה-flash דרך בסיס ה-QSPI XIP. הדבר הופך תצוגת zero-copy של האזור לזמינה ללא ביצוע קריאות flash כלשהן:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
ניתן לתשאל את גודל הבלוק שמשמש את מגזרי ה-flash הבסיסיים בזמן ריצה באמצעות
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
קראו בתים מה-flash אל
buf. שתי גרסאות עמוסות (overloads) חושפות את הממשקים הפשוט והמורחב:צורה פשוטה (
readblocks(block_num, buf)): קוראת בלוקים שלמים החל מאינדקס הבלוקblock_num.len(buf)חייב להיות כפולה של גודל בלוק ה-flash.צורה מורחבת (
readblocks(block_num, buf, offset)): קוראתlen(buf)בתים – לא בהכרח מספר שלם של בלוקים – החל מביתoffsetבתוך בלוקblock_num. ל-len(buf)אין מגבלת יישור (alignment).
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
כתבו בתים מ-
bufאל ה-flash. שתי גרסאות עמוסות (overloads) חושפות את הממשקים הפשוט והמורחב:צורה פשוטה (
writeblocks(block_num, buf)): כותבת בלוקים שלמים החל מאינדקס הבלוקblock_num.len(buf)חייב להיות כפולה של גודל בלוק ה-flash. כל בלוק מושפע נמחק אוטומטית לפני שנכתב אליו.צורה מורחבת (
writeblocks(block_num, buf, offset)): כותבתlen(buf)בתים – לא בהכרח מספר שלם של בלוקים – החל מביתoffsetבתוך בלוקblock_num. ל-len(buf)אין מגבלת יישור, ואין ביצוע מחיקה משתמעת – הקורא חייב לוודא שהבלוקים המושפעים נמחקו באמצעות קריאתioctl(6, block_num)קודמת.מעלה
OSErrorאם פעולת המחיקה או הכתיבה של ה-flash הבסיסי נכשלת.
- ioctl(cmd: int, arg: int) int | None¶
נקודת כניסה סטנדרטית של ioctl ל-
vfs.AbstractBlockDev. ראוvfs.AbstractBlockDev.ioctl()עבור הרשימה המלאה של ערכיcmd.cmd=5מחזיר את גודל בלוק ה-flash בבתים;cmd=6מוחק את הבלוק עם האינדקסarg.