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