mimxrt --- وظائف خاصة بـ NXP i.MXRT¶
تحتوي وحدة mimxrt على دوال وأصناف خاصة بعائلة المتحكمات الدقيقة NXP i.MXRT.
الأصناف¶
- class mimxrt.Flash¶
يحصل على الكائن الأحادي (singleton) الذي يكشف منطقة تخزين المستخدم من ذاكرة QSPI flash المدمجة بوصفها جهازًا كتليًا متوافقًا مع
vfs.AbstractBlockDev. أرقام الكتل نسبية لبداية تلك المنطقة، لا للبداية الفيزيائية للفلاش.في معظم الحالات، لتخزين بيانات دائمة على الجهاز، سترغب في استخدام تجريد أعلى مستوى -- مثلًا نظام الملفات عبر واجهة الملفات القياسية في Python. وتفيد هذه الواجهة في تخصيص إعدادات نظام الملفات أو تنفيذ نظام تخزين منخفض المستوى لتطبيقك.
يطبّق الكائن أيضًا بروتوكول المخزن المؤقت، مما يتيح وصولًا للقراءة فقط بإسناد الذاكرة (memory-mapped) إلى منطقة تخزين الفلاش بأكملها عبر قاعدة QSPI XIP. وهذا يوفّر عرضًا بلا نسخ (zero-copy) للمنطقة دون إصدار أي قراءات للفلاش:
flash = mimxrt.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
يمكن الاستعلام عن حجم الكتلة الذي تستخدمه قطاعات الفلاش الأساسية أثناء التشغيل عبر
ioctl(5, 0).- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
يقرأ بايتات من الفلاش إلى
buf. يكشف شكلان مُحمَّلان الواجهتين البسيطة والموسّعة:الشكل البسيط (
readblocks(block_num, buf)): يقرأ كتلًا كاملة بدءًا من فهرس الكتلةblock_num. يجب أن يكونlen(buf)مضاعفًا لحجم كتلة الفلاش.الشكل الموسّع (
readblocks(block_num, buf, offset)): يقرأlen(buf)بايت -- ليس بالضرورة عددًا صحيحًا من الكتل -- بدءًا من البايتoffsetداخل الكتلةblock_num. ولا يخضعlen(buf)لأي قيد محاذاة.
- writeblocks(block_num: int, buf: bytes) None¶
- writeblocks(block_num: int, buf: bytes, offset: int) None
يكتب بايتات من
bufإلى الفلاش. يكشف شكلان مُحمَّلان الواجهتين البسيطة والموسّعة:الشكل البسيط (
writeblocks(block_num, buf)): يكتب كتلًا كاملة بدءًا من فهرس الكتلةblock_num. يجب أن يكونlen(buf)مضاعفًا لحجم كتلة الفلاش. وتُمحى كل كتلة متأثرة تلقائيًا قبل الكتابة إليها.الشكل الموسّع (
writeblocks(block_num, buf, offset)): يكتبlen(buf)بايت -- ليس بالضرورة عددًا صحيحًا من الكتل -- بدءًا من البايتoffsetداخل الكتلةblock_num. ولا يخضعlen(buf)لأي قيد محاذاة، ولا يُجرى أي محو ضمني -- على المُستدعي ضمان أن الكتل المتأثرة قد مُحيت عبر استدعاءioctl(6, block_num)سابق.يطلق
OSErrorإذا فشلت عملية محو الفلاش أو الكتابة الأساسية.
- ioctl(cmd: int, arg: int) int | None¶
نقطة دخول ioctl القياسية لـ
vfs.AbstractBlockDev. انظرvfs.AbstractBlockDev.ioctl()للحصول على القائمة الكاملة لقيمcmd. القيمةcmd=5تعيد حجم كتلة الفلاش بالبايت؛ والقيمةcmd=6تمحو الكتلة ذات الفهرسarg.