מילון מונחים

baremetal

מערכת ללא מערכת הפעלה (מלאה), למשל מערכת מבוססת MCU. בעת ריצה על מערכת baremetal, MicroPython מתפקדת למעשה כמערכת הפעלה קטנה, מריצה תוכניות משתמש ומספקת מפרש פקודות (REPL).

buffer protocol

כל אובייקט Python שניתן להמיר אוטומטית לבתים, כגון אובייקטי bytes, bytearray, memoryview ו-str, אשר כולם מממשים את ”buffer protocol“.

board

בדרך כלל זה מתייחס ללוח מעגל מודפס (PCB) המכיל מיקרו-בקר ורכיבים תומכים. קושחת MicroPython מסופקת בדרך כלל לכל לוח בנפרד, מכיוון שהקושחה מכילה גם פונקציונליות ספציפית ל-MCU וגם פונקציונליות ברמת הלוח כגון דרייברים או שמות פינים.

bytecode

ייצוג קומפקטי של תוכנית Python הנוצר על ידי קומפילציה של קוד המקור של Python. זהו מה שה-VM מבצע בפועל. בדרך כלל ה-bytecode נוצר אוטומטית בזמן ריצה והוא בלתי נראה למשתמש. שים לב שבעוד ש-CPython ו-MicroPython שתיהן משתמשות ב-bytecode, הפורמט שונה. ניתן גם לבצע קומפילציה מראש של קוד המקור באופן לא מקוון באמצעות ה-cross-compiler.

callee-owned tuple

זוהי תבנית ספציפית ל-MicroPython שבה, מטעמי יעילות, פונקציות או שיטות מובנות מסוימות עשויות לעשות שימוש חוזר באותו אובייקט tuple בסיסי כדי להחזיר נתונים. זה חוסך את הצורך להקצות tuple חדש בכל קריאה, ומפחית את פיצול ה-heap. תוכניות לא צריכות להחזיק הפניות ל-callee-owned tuples ובמקום זאת רק לחלץ מהן נתונים (או ליצור עותק).

CircuitPython

וריאנט של MicroPython שפותח על ידי Adafruit Industries.

CPython

CPython הוא מימוש ההתייחסות של שפת התכנות Python, והידוע ביותר. עם זאת, הוא אחד ממימושים רבים (כולל Jython, IronPython, PyPy ו-MicroPython). בעוד שהמימוש של MicroPython שונה באופן מהותי מ-CPython, הוא שואף לשמור על כמה שיותר תאימות.

cross-compiler

ידוע גם בשם mpy-cross. כלי זה רץ על המחשב שלך וממיר .py file המכיל קוד MicroPython ל-.mpy file המכיל bytecode של MicroPython. משמעות הדבר היא שהוא נטען מהר יותר (הלוח אינו צריך לקמפל את הקוד), ומשתמש בפחות מקום בזיכרון הפלאש (ה-bytecode חסכוני יותר במקום).

driver

ספריית MicroPython המממשת תמיכה ברכיב מסוים, כגון חיישן או צג.

FFI

ראשי תיבות של Foreign Function Interface. מנגנון המשמש את ה-MicroPython Unix port כדי לגשת לפונקציונליות של מערכת ההפעלה. זה אינו זמין ב-ports מסוג baremetal.

filesystem

רוב ה-ports והלוחות של MicroPython מספקים מערכת קבצים המאוחסנת בזיכרון הפלאש הזמינה לקוד המשתמש באמצעות ממשקי הקבצים הסטנדרטיים של Python כגון open(). חלק מהלוחות גם הופכים מערכת קבצים פנימית זו לנגישה למארח דרך אחסון המוני (mass storage) של USB.

frozen module

מודול Python שעבר קומפילציה צולבת ונארז לתוך תמונת הקושחה. זה מפחית את דרישות ה-RAM מכיוון שהקוד מבוצע ישירות מזיכרון הפלאש.

Garbage Collector

תהליך רקע הרץ ב-Python (וב-MicroPython) כדי לשחזר זיכרון שאינו בשימוש ב-heap.

GPIO

קלט/פלט למטרות כלליות. האמצעי הפשוט ביותר לשליטה באותות חשמליים (המכונים בדרך כלל ”פינים“) במיקרו-בקר. GPIO מאפשר בדרך כלל לפינים להיות קלט או פלט, ולהגדיר או לקרוא את הערך הדיגיטלי שלהם (”0“ או ”1“ לוגי). MicroPython מפשטת את הגישה ל-GPIO באמצעות המחלקות machine.Pin ו-machine.Signal.

GPIO port

קבוצה של פיני GPIO, בדרך כלל מבוססת על תכונות חומרה של פינים אלה (למשל ניתנים לשליטה על ידי אותו אוגר (register)).

heap

אזור ב-RAM שבו MicroPython מאחסנת נתונים דינמיים. הוא מנוהל אוטומטית על ידי ה-Garbage Collector. ל-MCUs ולוחות שונים יש כמויות שונות מאוד של RAM הזמין ל-heap, ולכן זה ישפיע על מידת המורכבות של התוכנית שלך.

interned string

אופטימיזציה המשמשת את MicroPython כדי לשפר את יעילות העבודה עם מחרוזות. מחרוזת interned מופנית על ידי הזהות (הייחודית) שלה ולא על ידי הכתובת שלה, ולכן ניתן להשוות אותה במהירות רק לפי המזהה שלה. משמעות הדבר היא גם שניתן לבטל כפילויות של מחרוזות זהות בזיכרון. interning של מחרוזות הוא כמעט תמיד בלתי נראה למשתמש.

MCU

מיקרו-בקר. למיקרו-בקרים יש בדרך כלל הרבה פחות משאבים ממחשב שולחני, מחשב נייד או טלפון, אך הם קטנים יותר, זולים יותר ודורשים הרבה פחות חשמל. MicroPython תוכננה להיות קטנה ומיטבית מספיק כדי לרוץ על מיקרו-בקר מודרני ממוצע.

micropython-lib

MicroPython מופצת (בדרך כלל) כקובץ הפעלה/בינארי יחיד עם מספר מצומצם של מודולים מובנים. אין ספרייה סטנדרטית מקיפה הניתנת להשוואה לזו של CPython. במקום זאת, קיים פרויקט קשור אך נפרד micropython-lib המספק מימושים למודולים רבים מהספרייה הסטנדרטית של CPython.

חלק מהמודולים ממומשים ב-Python טהור ורצים על כל port; קושחת OpenMV מקפיאה מבחר מהם (דרייברים של חיישנים, רשתות ועוזרי שירות) ישירות לתוך תמונת הקושחה כך שניתן לייבא אותם ללא התקנה של שום דבר. מספר קטן יותר של מודולי micropython-lib משתמשים ב-FFI ועובדים רק על ה-MicroPython Unix port; אלה אינם זמינים ב-OpenMV Cams.

בניגוד לספריית הסטנדרט של CPython, מודולי micropython-lib שאינם מוקפאים פנימה מותקנים בנפרד - או על ידי העתקתם למערכת הקבצים, או, בלוחות בעלי יכולת רשת, באמצעות mip.

MicroPython port

MicroPython תומכת ב-לוחות, מערכות הפעלה בזמן אמת (RTOS) ומערכות הפעלה שונות, וניתן להתאים אותה בקלות יחסית למערכות חדשות. MicroPython עם תמיכה במערכת מסוימת נקראת ”port“ למערכת זו. ל-ports שונים עשויה להיות פונקציונליות שונה מאוד. תיעוד זה נועד להיות התייחסות לממשקי ה-API הגנריים הזמינים ב-ports שונים (”ליבת MicroPython“). שים לב ש-ports מסוימים עדיין עשויים להשמיט חלק מממשקי ה-API המתוארים כאן (למשל עקב מגבלות משאבים). כל הבדל כזה, והרחבות ספציפיות ל-port מעבר לפונקציונליות הליבה של MicroPython, יתוארו בתיעוד הנפרד הספציפי ל-port.

MicroPython Unix port

ה-Unix port הוא אחד מ-MicroPython ports המרכזיים. הוא נועד לרוץ על מערכות הפעלה תואמות POSIX, כגון Linux, MacOS, FreeBSD, Solaris וכו«. הוא גם משמש כבסיס ל-Windows port. ה-Unix port שימושי מאוד לפיתוח ובדיקה מהירים של שפת MicroPython ושל מאפיינים שאינם תלויי מכונה. הוא יכול גם לתפקד באופן דומה לקובץ ההפעלה python של CPython.

mip

מתקין חבילות עבור MicroPython (mip - ”mip installs packages“). הוא מתקין חבילות MicroPython מ-micropython-lib, מ-GitHub, או מכתובות URL שרירותיות. ניתן להשתמש ב-mip על ההתקן בלוחות בעלי יכולת רשת, וגם באופן פנימי על ידי כלים כגון mpremote.

ראה ניהול חבילות למידע נוסף על השימוש ב-mip.

mpremote

כלי לאינטראקציה עם התקן MicroPython. ראה שליטה מרחוק ב-MicroPython: mpremote.

.mpy file

הפלט של ה-cross-compiler. צורה מקומפלת של .py file המכילה bytecode של MicroPython במקום קוד מקור של Python.

native

בדרך כלל מתייחס ל-”native code“, כלומר קוד מכונה עבור המיקרו-בקר היעד (ARM Thumb ב-OpenMV Cams מבוססות Cortex-M). ניתן להחיל את הדקורטור @micropython.native על פונקציית MicroPython כדי לייצר native code במקום bytecode עבור אותה פונקציה, מה שכנראה יהיה מהיר יותר אך ישתמש בכמות גדולה יותר של RAM.

port

בדרך כלל קיצור של MicroPython port, אך יכול גם להתייחס ל-GPIO port.

.py file

קובץ המכיל קוד מקור של Python.

pyboard.py

כלי בצד המארח, כיום מיושן, לאינטראקציה עם לוח MicroPython — הרצת סקריפטים וגישה למערכת הקבצים דרך ה-REPL הגולמי. ראה את החלופה שלו, mpremote.

REPL

ראשי תיבות של ”Read, Eval, Print, Loop“. זוהי שורת הפקודה האינטראקטיבית של Python, שימושית לניפוי שגיאות או לבדיקת קטעי קוד קצרים. OpenMV Cams הופכות את ה-REPL לזמין למחשב מארח דרך USB (התקן טורי מסוג USB CDC).

small integer

MicroPython ממטבת את הייצוג הפנימי של מספרים שלמים כך שערכים ”קטנים“ אינם תופסים מקום ב-heap, וחישובים איתם אינם דורשים הקצאת heap. ברוב ה-ports בני 32 סיביות, זה מתאים לערכים בטווח -2**30 <= x < 2**30, אך יש להתייחס לכך כפרט מימוש ולא להסתמך עליו.

stream

ידוע גם בשם ”file-like object“. אובייקט Python המספק גישת קריאה-כתיבה רציפה לנתונים הבסיסיים. אובייקט stream מממש ממשק מתאים, המורכב משיטות כגון read(), write(), readinto(), seek(), flush(), close() וכו«. stream הוא מושג חשוב ב-MicroPython; אובייקטי קלט/פלט רבים מממשים את ממשק ה-stream, ולכן ניתן להשתמש בהם באופן עקבי וניתן להחלפה בהקשרים שונים. למידע נוסף על streams ב-MicroPython, ראה את המודול io.

UART

ראשי תיבות של ”Universal Asynchronous Receiver/Transmitter“. זהו התקן היקפי השולח נתונים דרך זוג פינים (TX ו-RX). לוחות רבים כוללים דרך להפוך לפחות אחד מה-UARTs לזמין למחשב מארח כיציאה טורית דרך USB.

upip

מנהל חבילות מיושן כיום עבור MicroPython, בהשראת ה-pip של CPython, אך קטן בהרבה ובעל פונקציונליות מצומצמת. ראה את החלופה שלו, mip.

webrepl

דרך להתחבר ל-REPL (ולהעביר קבצים) בהתקן דרך האינטרנט מתוך דפדפן. ראה https://micropython.org/webrepl