《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > MicroPython做嵌入式開(kāi)發(fā)的優(yōu)缺點(diǎn)

MicroPython做嵌入式開(kāi)發(fā)的優(yōu)缺點(diǎn)

2019-06-15
關(guān)鍵詞: JAVA ADA Python

  C / C ++編程語(yǔ)言長(zhǎng)期以來(lái)一直主導(dǎo)著嵌入式系統(tǒng)行業(yè),很少有其他語(yǔ)言可以找到立足點(diǎn)。雖然JavaAda等語(yǔ)言已經(jīng)嘗試過(guò),但Python的流行程度不僅在不斷提高,而且已經(jīng)在基于Linux的應(yīng)用程序中找到了很長(zhǎng)一段時(shí)間。但是,用于微控制器的Python似乎從未像MicroPython那樣適合該法案,MicroPython是一個(gè)設(shè)計(jì)用于在微控制器上運(yùn)行的Python 3.0端口。隨著該項(xiàng)目現(xiàn)已進(jìn)入第六個(gè)年頭,它已經(jīng)越來(lái)越受歡迎和發(fā)展勢(shì)頭,使其成為您用來(lái)設(shè)計(jì)下一個(gè)產(chǎn)品的編程語(yǔ)言。

  讓我們來(lái)看看使用MicroPython的一些優(yōu)缺點(diǎn):

  Python編程語(yǔ)言具有淺薄的學(xué)習(xí)曲線,這使得開(kāi)發(fā)人員可以非常輕松地開(kāi)始使用它。事實(shí)上,我遇到過(guò)學(xué)習(xí)Python的小學(xué)生!Python為開(kāi)發(fā)人員提供了一種高級(jí)編程語(yǔ)言,可用于構(gòu)建簡(jiǎn)單的腳本,或者可用于開(kāi)發(fā)復(fù)雜的面向?qū)ο蟮捏w系結(jié)構(gòu),這些體系結(jié)構(gòu)使用現(xiàn)代軟件項(xiàng)目的所有最佳實(shí)踐。與C相比,Python還提供了內(nèi)置機(jī)制,用于創(chuàng)建線程,處理錯(cuò)誤并輕松集成到測(cè)試工具中。

  變革之風(fēng)正在我們身上,MicroPython可能是您用來(lái)構(gòu)建下一個(gè)產(chǎn)品的編程語(yǔ)言。在本課程中,我們將研究如何使用MicroPython開(kāi)發(fā)產(chǎn)品。與會(huì)者將遠(yuǎn)離本課程,詳細(xì)了解他們需要做什么才能在下一個(gè)產(chǎn)品中使用MicroPython。

  這些語(yǔ)言特征的有趣之處在于它們使開(kāi)發(fā)團(tuán)隊(duì)的每個(gè)成員都可以成為程序員!MicroPython提供了一系列庫(kù),可以控制低級(jí)微控制器功能,從而消除復(fù)雜性。例如,硬件工程師可以設(shè)計(jì)電路板,幾乎不知道微控制器(或C)的工作原理,開(kāi)發(fā)可以通過(guò)控制GPIO測(cè)試電路板的高級(jí)腳本,甚至可以與I2C器件通信。在C中開(kāi)發(fā)I2C驅(qū)動(dòng)程序可能相當(dāng)復(fù)雜,但使用MicroPython只需要以下代碼行來(lái)創(chuàng)建I2C對(duì)象并將數(shù)據(jù)發(fā)送到從屬設(shè)備:

  而已!處理I2C的所有基礎(chǔ)工作都由MicroPython庫(kù)處理,這大大簡(jiǎn)化了開(kāi)發(fā)。(看看我在C中的一個(gè)I2C驅(qū)動(dòng)程序顯示了幾千行代碼,授予它是一個(gè)非常強(qiáng)大的實(shí)現(xiàn),并提供了一些功能,一旦奠定了基礎(chǔ)工作,就可以與總線交互)。

5d01e28ea1956-thumb.png

  在考慮使用MicroPython進(jìn)行產(chǎn)品開(kāi)發(fā)時(shí),開(kāi)發(fā)人員需要考慮幾個(gè)關(guān)鍵因素。首先,開(kāi)發(fā)人員需要考慮如何保護(hù)他們的應(yīng)用程序代碼。MicroPython允許開(kāi)發(fā)人員加載基于代碼文本的Python腳本或?qū)⑦@些腳本編譯為字節(jié)碼并將它們放入a.mpy模塊中。這些解決方案的問(wèn)題在于,任何能夠訪問(wèn)MicroPython文件系統(tǒng)的人都可以輕松獲得應(yīng)用程序代碼,這很容易實(shí)現(xiàn)。字節(jié)碼確實(shí)使它更難一點(diǎn),但將字節(jié)代碼轉(zhuǎn)換回可讀代碼并不困難。開(kāi)發(fā)人員需要考慮他們需要系統(tǒng)的安全性,并可能采取額外措施來(lái)保護(hù)知識(shí)產(chǎn)權(quán)。

  接下來(lái),開(kāi)發(fā)人員需要考慮如果出現(xiàn)問(wèn)題他們將如何恢復(fù)他們的系統(tǒng)。根據(jù)所選的微控制器,它們的應(yīng)用程序代碼可以在MCU內(nèi)部,也可以在外部存儲(chǔ)設(shè)備(如SD卡)上。我發(fā)現(xiàn)文件系統(tǒng)在電源循環(huán)或欠壓條件下不是很強(qiáng)大。如果文件系統(tǒng)損壞,MicroPython將通過(guò)將默認(rèn)映像復(fù)制回文件系統(tǒng)來(lái)恢復(fù)它。開(kāi)發(fā)人員需要確保將其默認(rèn)代碼集成到其內(nèi)核版本中,以便在出現(xiàn)問(wèn)題時(shí),至少將其恢復(fù)為出廠默認(rèn)設(shè)置,然后可以從設(shè)備上可能存在的其他內(nèi)存位置恢復(fù)任何更新。

  最后,開(kāi)發(fā)人員可能希望確保他們有多個(gè)內(nèi)存設(shè)備可供選擇。新的旗艦MicroPython開(kāi)發(fā)板,pyboard D系列,包括兩個(gè)獨(dú)立的SPI內(nèi)存設(shè)備,每個(gè)2 MB。一個(gè)用于存儲(chǔ)應(yīng)用程序代碼,另一個(gè)用于存儲(chǔ)數(shù)據(jù)或其他信息。生產(chǎn)系統(tǒng)應(yīng)該做類似的事情,甚至保留固件備份副本,以便在出現(xiàn)問(wèn)題時(shí),可以恢復(fù)應(yīng)用程序而不會(huì)給用戶帶來(lái)任何問(wèn)題。

  使用MicroPython進(jìn)行產(chǎn)品設(shè)計(jì)聽(tīng)起來(lái)很有趣,有沒(méi)有人真正用它來(lái)開(kāi)發(fā)商業(yè)產(chǎn)品?據(jù)我所知,MicroPython已被用于多種產(chǎn)品中,毫無(wú)疑問(wèn),我不知道更多。例如,MicroPython已被用于小型衛(wèi)星中,用于電子電源和數(shù)據(jù)采集系統(tǒng)(其中一些我親自參與過(guò))。在歐洲航天局也已經(jīng)在更大的衛(wèi)星系統(tǒng)使用MicroPython調(diào)查。MicroPython還用于流行的OpenMV模塊,該模塊允許開(kāi)發(fā)人員創(chuàng)建機(jī)器視覺(jué)應(yīng)用程序。該模塊運(yùn)行MicroPython,允許開(kāi)發(fā)人員通過(guò)交互式IDE創(chuàng)建腳本,然后將開(kāi)發(fā)人員的腳本下載到模塊。開(kāi)發(fā)人員甚至可以訓(xùn)練機(jī)器學(xué)習(xí)模型并將其轉(zhuǎn)換為在OpenMV模塊上運(yùn)行!這表明MicroPython可用于運(yùn)行不僅僅是簡(jiǎn)單的算法或切換一些I / O.

  使用MicroPython構(gòu)建嵌入式產(chǎn)品無(wú)法滿足每個(gè)開(kāi)發(fā)團(tuán)隊(duì)的需求,如C / C ++,但它為開(kāi)發(fā)人員提供了一個(gè)有趣的快速原型設(shè)計(jì)或開(kāi)發(fā)商業(yè)產(chǎn)品的解決方案。當(dāng)然還存在一些挑戰(zhàn),例如保護(hù)基于MicroPython的系統(tǒng)并確保確定性行為。這些挑戰(zhàn)可以通過(guò)適當(dāng)?shù)膽?yīng)用設(shè)計(jì)預(yù)先克服。MicroPython的易用性和Python的普及使得使用MicroPython構(gòu)建嵌入式系統(tǒng)成為一個(gè)有趣的機(jī)會(huì)。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。