雖然像Ada和C++這樣的語(yǔ)言已經(jīng)在某些圈子里獲得了一些采用,但是在很大程度上,嵌入式軟件仍然被過(guò)程化的和危險(xiǎn)的C編程語(yǔ)言所支配。然而,一個(gè)有趣的趨勢(shì)開(kāi)始將Python移植到微控制器上。最近,Python 3.5端口,即MicroPython,在業(yè)余愛(ài)好者和專業(yè)嵌入式開(kāi)發(fā)人員中間越來(lái)越受歡迎和采用。
MicroPython 組織將 MicroPython 描述為“針對(duì)在微控制器上運(yùn)行而優(yōu)化的 Python 3 編程語(yǔ)言的精簡(jiǎn)和快速實(shí)現(xiàn)”。 MicroPython 在裸機(jī)上運(yùn)行,并使用稱為 pyb 的自定義類來(lái)訪問(wèn)主機(jī)微控制器的低級(jí)外設(shè)。 pyb 類為開(kāi)發(fā)人員提供了對(duì)中斷、定時(shí)器、LED、ADC、PWM、I2C、SPI 和 CAN 等外設(shè)的抽象訪問(wèn)。 對(duì)于覺(jué)得這些對(duì)象無(wú)法對(duì)微控制器提供足夠控制的開(kāi)發(fā)人員,還有一個(gè) C API 可用于遍歷抽象并直接訪問(wèn)微控制器寄存器。
已經(jīng)存在許多不同的MicroPython端口,但是主要的旗艦運(yùn)行在PyBoard開(kāi)發(fā)平臺(tái)。PyBoard基于STM32F405RG微控制器,內(nèi)置一個(gè)運(yùn)行頻率為168 MHz的ARM Cortex-M4內(nèi)核和一個(gè)硬件浮點(diǎn)加速器。微控制器有1MB的閃存和192 kB的RAM。如果1 MB的閃存空間不夠,嵌入式開(kāi)發(fā)人員可以使用外部高密度微型SD卡來(lái)存儲(chǔ)Python腳本。
MicroPython為開(kāi)發(fā)人員提供了一種易于使用、人類可讀的編程語(yǔ)言,它抽象出了硬件層,并允許開(kāi)發(fā)人員專注于應(yīng)用程序。Python長(zhǎng)期以來(lái)一直是一種流行的可移植編程語(yǔ)言,以其解釋性語(yǔ)言特性和簡(jiǎn)單的學(xué)習(xí)曲線而聞名。對(duì)Python開(kāi)發(fā)人員的需求一直在穩(wěn)步增長(zhǎng),這種語(yǔ)言已經(jīng)在許多行業(yè)和技術(shù)領(lǐng)域得到了應(yīng)用。Python本身的可移植性允許在目標(biāo)硬件可用于測(cè)試之前很久就開(kāi)發(fā)和測(cè)試算法。
開(kāi)發(fā)人員也不應(yīng)該忘記Python不僅僅是一種腳本語(yǔ)言,還是一種面向?qū)ο蟮木幊陶Z(yǔ)言。面向?qū)ο蟮木幊碳夹g(shù)可以用來(lái)創(chuàng)建可移植、可維護(hù)、模塊化和可擴(kuò)展的軟件。
MicroPython 的有趣之處在于它遵循 MIT 軟件許可證,并且可以在 github 上免費(fèi)獲得用于移植和修改。嵌入式開(kāi)發(fā)人員選擇 STM32F401RE 等功能稍差的 MCU 將成本減半(連同時(shí)鐘速度和一些其他功能),同時(shí)仍保持 MicroPython 系統(tǒng)的完整性。 更便宜的 MCU 的 C 語(yǔ)言軟件開(kāi)發(fā)成本可能無(wú)法應(yīng)對(duì)匹配 MicroPython 的挑戰(zhàn)。
MicroPython能與C競(jìng)爭(zhēng)或取代C嗎?當(dāng)然,有充分的理由向更高級(jí)的面向?qū)ο缶幊陶Z(yǔ)言發(fā)展。然而,總體開(kāi)發(fā)成本仍然是一個(gè)灰色地帶,尤其是對(duì)于高容量的項(xiàng)目。
毫無(wú)疑問(wèn),有一點(diǎn)是肯定的:嵌入式軟件開(kāi)發(fā)人員迫切需要新的工具來(lái)幫助他們?cè)?1世紀(jì)的嵌入式系統(tǒng)設(shè)計(jì)的泥潭中導(dǎo)航。MicroPython可能只是嵌入式開(kāi)發(fā)人員一直在尋找的工具之一。