如果您正在對嵌入式設備進行編程,那么您很可能正在使用 C/C++ 編程語言編寫代碼。C 最初創建于 20 世紀 70 年代初;然而,直到 1990 年代,嵌入式設備編程才從匯編語言轉向高級 C 語言。在接下來的三十年里,C/C++ 憑借其在速度和緊湊性方面的卓越性能,將在嵌入式應用程序中占據主導地位。如今,隨著流行的 Python 編程語言以嵌入式為中心的實現的興起,另一種轉變正在出現。
Python 于 1990 年代首次出現,并從那時起在軟件開發人員中穩步流行。事實上,在 2020 年,Python 終于在 IEEE Spectrum 的年度編程語言流行度調查中名列第一。最初,Python 作為一種用于測試電子設備的腳本語言在嵌入式開發人員中流行起來。慢慢地,它一直在開發堆棧中向下移動。實際上有多種 Python 實現,其中 CPython 是廣泛用于桌面應用程序的參考實現。
PyMite 和 Tiny Python是最早為在微控制器上運行而開發功能降低的 Python 實現的嘗試之一。PyMite 只包括一個 VM 和運行時——沒有編譯器。這意味著它只能運行先由 CPython 編譯的字節碼。Tiny Python 確實包含一個字節碼編譯器,但仍然只占用大約 64 KB 的 RAM。兩者都基于 Python 2,并且都沒有被積極開發。盡管如此,它們確實代表了將 Python 用于嵌入式應用程序的最早嘗試。
MicroPython是用于嵌入式開發的 C 編程語言的令人興奮的替代方案。它將基于桌面的 CPython 語言的幾個流行特性帶到各種流行的微控制器架構中,包括STM32 板、TI CC3200/WiPy、Teensy 板、Nordic nRF系列、SAMD21、SAMD51、ESP8266、ESP32、RISC-V,甚至是 Lego頭腦風暴 EV3 平臺。自 2014 年推出以來,MicroPython 的受歡迎程度穩步上升,反映出 CPython 的總體使用量增加。另一個吸引人的特性是 MicroPython 的源代碼是在 GitHub 上的開源許可(MIT 許可)下提供的。
CircuitPython是一個教育和制造商友好的 Python 實現,它本身是 MicroPython 的一個分支。CIrcuitPython 開發支持由Adafruit Industries提供,是其許多微控制器產品的實際語言。目前有超過一百種電路板與 CircuitPython 兼容,大部分基于 Microchip 的 SAMD21/SAMD51 和 Nordic Semiconductor 的nRF52840微控制器。CircuitPython 的一個關鍵特性是能夠簡單地將源代碼文件 (.py) 拖到兼容的開發板上,這與將文件拖到 USB 閃存驅動器上沒有什么不同。不需要編譯代碼,也不需要訪問麻煩的(有時是昂貴的)程序員/調試器。此外,源代碼仍然可以在設備上訪問,并且可以在任何計算機上打開。這意味著您可以使用簡單的文本編輯器從任何計算機下載、編輯和重新編程兼容 CircuitPython 的開發板。
澤林思是一組包含在軟件開發工具包 (SDK) 中的工具,適用于物聯網 (IoT) 產品的開發人員。他們專注于簡化 32 位微控制器(包括 ESP32、ESP8266、ARM Cortex M0+、ARM Cortex M3 和 ARM Cortex M4)與各種物聯網云服務提供商(AWS、Azure、Google Cloud Platform、Ubidots、The Things Network)之間的連接). 只需幾行 Python 代碼,就可以將邊緣設備傳感器的數據傳輸到云端進行進一步分析和長期存儲。在提供的工具中,命令行界面 (CLI)、Zerynth Studio 集成開發環境 (IDE)、Zerynth 操作系統 (OS) 和 Zerynth 設備管理器;全部適用于 Windows、Mac OS 和 Linux。Zerynth VM 占用了 80KB 的閃存和 5KB 的 RAM。
CPython。單板計算機 (SBC) 是信用卡大小的成熟臺式計算機(例如,Raspberry Pi、BeagleBone)。它們也非常便宜,因此越來越多地用于嵌入式應用程序。當前一代的 SBC 速度足夠快,并且有足夠的內存和存儲空間來運行成熟的 CPython 實現(或通過省略不需要的模塊而略微精簡的實現)。還有其他實現,例如 Python for ARM Linux,它為基于 ARM 的架構定制了 Python(與 x86/x64 架構相比)。最近,PyPy 等其他實現(基于即時編譯器與 CPython 解釋器的對比)已移植到 Raspberry Pi 并提供改進,例如更快的速度性能。
開發人員需要記住,Python 編程語言沒有單一的“風格”。有許多實現,其中一些是專門為在嵌入式平臺上出色執行而構建的。Python 作為專業嵌入式開發領域的主要參與者的未來取決于證明它可以達到或超過 C 的性能。我們可以回顧歷史來提供一些見解。畢竟,從匯編語言到 C 語言的轉變不是一蹴而就的。通過在 C 宏中插入匯編代碼,匯編仍然用于 C 程序的性能關鍵部分。Python 和 C 可以類似地協同工作。
另一個考慮是微控制器比十年或二十年前的微控制器強大光年。時鐘周期已經從以幾兆赫茲測量到超過千兆赫茲。曾經以幾十千字節為單位的閃存,現在以幾兆字節為單位。幸運的是,性能的顯著提升并沒有伴隨著價格的相應上漲。因此,嵌入式應用程序開發人員可以編寫更高級別的代碼,而不必理會每個時鐘周期或內存字節,并且仍然可以生產出響應迅速的高質量產品。
結論
編程語言與口頭語言一樣,不斷發展壯大以響應時代的需求。專門為嵌入式系統構建的 CPython 衍生產品,如 MicroPython 和 CircuitPython,有望成為未來嵌入式開發的主要參與者,因為它們使創建過程民主化。當結合電子硬件的一些基本知識時,嵌入式 Python 語言使人們,無論技能水平如何,都能將物理和數字融合在一起。這種能力開啟了幾年前難以想象的可能性。在世界各地,可訪問的開源編程語言和嵌入式平臺讓當地社區能夠構建本地化、特定于他們的需求、具有成本效益且可持續的工具。難民營,嵌入式 Python 正在幫助讓世界變得更美好,一次一行代碼。
審核編輯黃昊宇
-
嵌入式
+關注
關注
5090文章
19176瀏覽量
306934 -
python
+關注
關注
56文章
4807瀏覽量
84957
發布評論請先 登錄
相關推薦
評論