詞彙表

baremetal(裸機)

一種沒有(完整)作業系統的系統,例如基於 MCU 的系統。當在裸機系統上執行時,MicroPython 實際上的功能就像一個小型作業系統,負責執行使用者程式並提供命令直譯器(REPL)。

buffer protocol(緩衝協定)

任何能自動轉換為位元組的 Python 物件,例如 bytesbytearraymemoryviewstr 物件,它們全都實作了「緩衝協定」。

board(板子)

通常指包含 微控制器 與支援元件的印刷電路板(PCB)。MicroPython 韌體通常按板子個別提供,因為韌體不僅包含 MCU 特有的功能,也包含板級功能,例如驅動程式或接腳名稱。

bytecode(位元組碼)

編譯 Python 原始碼所產生的 Python 程式精簡表示形式。這正是 VM 實際執行的內容。位元組碼通常在執行時自動產生,對使用者而言是不可見的。請注意,雖然 CPython 與 MicroPython 都使用位元組碼,但其格式並不相同。您也可以使用 cross-compiler 離線預先編譯原始碼。

callee-owned tuple(被呼叫端擁有的元組)

這是 MicroPython 特有的構造,基於效率考量,某些內建函式或方法可能會重複使用同一個底層元組物件來回傳資料。如此可避免每次呼叫都配置新的元組,並減少 heap 碎片化。程式不應保留對被呼叫端擁有元組的參照,而應僅從中擷取資料(或製作複本)。

CircuitPython

Adafruit Industries 開發的 MicroPython 變體。

CPython

CPython 是 Python 程式語言的參考實作,也是最為人所知的一種。然而,它只是眾多實作之一(包括 Jython、IronPython、PyPy 與 MicroPython)。雖然 MicroPython 的實作與 CPython 有相當大的差異,但它力求盡可能維持相容性。

cross-compiler(交叉編譯器)

亦稱為 mpy-cross。此工具在您的 PC 上執行,會將包含 MicroPython 程式碼的 .py file 轉換為包含 MicroPython bytecode.mpy file。這表示載入速度更快(板子無需編譯程式碼),且在 flash 上佔用較少空間(位元組碼的空間效率更高)。

driver(驅動程式)

一種實作了對特定元件支援的 MicroPython 函式庫,例如感測器或顯示器。

FFI

Foreign Function Interface(外部函式介面)的縮寫。一種供 MicroPython Unix port 用來存取作業系統功能的機制。此機制在 baremetal port 上無法使用。

filesystem(檔案系統)

大多數 MicroPython port 與板子都提供一個儲存於 flash 的檔案系統,使用者程式碼可透過標準 Python 檔案 API(例如 open())加以使用。某些板子也會讓主機透過 USB 大容量儲存裝置存取此內部檔案系統。

frozen module(凍結模組)

已經過 交叉編譯 並打包進韌體映像檔的 Python 模組。由於程式碼直接從 flash 執行,因此可降低 RAM 需求。

Garbage Collector(垃圾回收器)

在 Python(與 MicroPython)中執行的背景程序,用於回收 heap 中未使用的記憶體。

GPIO

通用輸入/輸出。控制微控制器上電子訊號(通常稱為「接腳」)的最簡單方式。GPIO 通常允許接腳設為輸入或輸出,並設定或讀取其數位值(邏輯「0」或「1」)。MicroPython 使用 machine.Pinmachine.Signal 類別來抽象化 GPIO 存取。

GPIO port(GPIO 連接埠)

一組 GPIO 接腳,通常根據這些接腳的硬體特性而劃分(例如由同一個暫存器控制)。

heap(堆積)

RAM 中的一塊區域,MicroPython 在此儲存動態資料。它由 Garbage Collector 自動管理。不同的 MCU 與板子可供堆積使用的 RAM 量差異極大,因此這會影響您的程式可達到的複雜程度。

interned string(駐留字串)

MicroPython 用來提升字串處理效率的一種最佳化手法。駐留字串是透過其(唯一的)識別身分而非位址來參照,因此只需比對識別字即可快速比較。這也表示相同的字串可在記憶體中去除重複。字串駐留對使用者而言幾乎總是不可見的。

MCU

微控制器。微控制器的資源通常遠少於桌上型電腦、筆記型電腦或手機,但體積更小、價格更低,且耗電量遠低許多。MicroPython 的設計目標是夠小巧且最佳化,足以在一般的現代微控制器上執行。

micropython-lib

MicroPython(通常)以單一執行檔/二進位檔的形式發行,僅內建少數幾個模組。它並沒有可與 CPython 相提並論的完整標準函式庫。取而代之的是一個相關但獨立的專案 micropython-lib,它為許多源自 CPython 標準函式庫的模組提供實作。

其中部分模組以純 Python 實作,可在任何 port 上執行;OpenMV 韌體會將其中精選的一部分(感測器驅動程式、網路功能與公用程式輔助工具)直接凍結進韌體映像檔,如此一來無需安裝任何東西即可匯入。另有少數 micropython-lib 模組使用 FFI,僅能在 MicroPython Unix port 上運作;那些模組在 OpenMV Cam 上無法使用。

CPython 標準函式庫不同,未被凍結進去的 micropython-lib 模組需個別安裝——可透過將它們複製到檔案系統上,或在具備網路功能的板子上使用 mip 安裝。

MicroPython port(MicroPython 移植版)

MicroPython 支援不同的 板子、RTOS 與作業系統,且能相對輕鬆地適配至新系統。具備對特定系統支援的 MicroPython 稱為針對該系統的「port(移植版)」。不同的 port 功能可能差異甚大。本文件旨在作為跨不同 port 通用 API(「MicroPython 核心」)的參考。請注意,某些 port 仍可能略去此處所述的部分 API(例如因資源限制之故)。任何此類差異,以及超出 MicroPython 核心功能的 port 特有擴充,都會在各自獨立的 port 特定文件中說明。

MicroPython Unix port(MicroPython Unix 移植版)

Unix port 是主要的 MicroPython 移植版 之一。它旨在於相容 POSIX 的作業系統上執行,例如 Linux、MacOS、FreeBSD、Solaris 等。它也作為 Windows port 的基礎。Unix port 對於快速開發與測試 MicroPython 語言以及與機器無關的功能非常有用,其運作方式也可類似於 CPythonpython 執行檔。

mip

MicroPython 的套件安裝程式(mip——「mip installs packages」)。它可從 micropython-lib、GitHub 或任意 URL 安裝 MicroPython 套件。mip 可在具備網路功能的板子上於裝置端使用,也可由 mpremote 等工具於內部使用。

如需更多關於使用 mip 的資訊,請參閱 套件管理

mpremote

一種用於與 MicroPython 裝置互動的工具。請參閱 MicroPython 遠端控制:mpremote

.mpy file(.mpy 檔)

cross-compiler 的輸出。.py file 的編譯形式,包含 MicroPython bytecode 而非 Python 原始碼。

native(原生)

通常指「原生程式碼」,亦即目標微控制器的機器碼(在基於 Cortex-M 的 OpenMV Cam 上為 ARM Thumb)。@micropython.native 裝飾器可套用於 MicroPython 函式,使其產生原生程式碼而非 bytecode,這通常會更快但會使用更多 RAM。

port(移植版/連接埠)

通常是 MicroPython port 的簡稱,但也可能指 GPIO port

.py file(.py 檔)

包含 Python 原始碼的檔案。

pyboard.py

一種如今已被取代的主機端工具,用於與 MicroPython 板子互動——透過原始 REPL 執行指令碼及存取檔案系統。請參閱其替代工具 mpremote

REPL

「Read, Eval, Print, Loop」(讀取、求值、輸出、循環)的縮寫。這是互動式的 Python 提示符,對於除錯或測試簡短程式碼片段很有用。OpenMV Cam 會透過 USB(一種 USB CDC 序列裝置)讓主機 PC 能使用 REPL。

small integer(小整數)

MicroPython 會最佳化整數的內部表示形式,使得「小」值不佔用 heap 空間,且對它們進行的運算無需配置堆積記憶體。在大多數 32 位元 port 上,這對應於 -2**30 <= x < 2**30 區間內的值,但這應視為實作細節而不應依賴。

stream(串流)

亦稱為「類檔案物件」。一種對底層資料提供循序讀寫存取的 Python 物件。串流物件實作了相應的介面,由 read()write()readinto()seek()flush()close() 等方法組成。串流是 MicroPython 中的重要概念;許多 I/O 物件都實作了串流介面,因此可在不同情境中一致且可互換地使用。如需更多關於 MicroPython 中串流的資訊,請參閱 io 模組。

UART

「Universal Asynchronous Receiver/Transmitter」(通用非同步收發器)的縮寫。這是一種透過一對接腳(TX 與 RX)傳送資料的周邊裝置。許多板子都提供方式,讓至少一個 UART 能作為透過 USB 的序列埠供主機 PC 使用。

upip

一種如今已過時的 MicroPython 套件管理器,靈感來自 CPython 的 pip,但小得多且功能有所縮減。請參閱其替代工具 mip

webrepl

一種透過網際網路從瀏覽器連接到裝置上 REPL(並傳輸檔案)的方式。請參閱 https://micropython.org/webrepl