Python編程語言只有一個(gè)簡(jiǎn)單的學(xué)習(xí)曲線,這樣開發(fā)者就可以很容易地使用它。實(shí)際上,我見過學(xué)好Python的學(xué)生!Python為開發(fā)者提供了一種高級(jí)的編程語言,它可以用來構(gòu)建簡(jiǎn)單的腳本,也可以用來開發(fā)復(fù)雜的、面向?qū)ο蟮募軜?gòu),它使用現(xiàn)代軟件項(xiàng)目的所有最佳實(shí)踐。相對(duì)于C語言,Python還提供了用于創(chuàng)建線程、處理錯(cuò)誤以及容易集成到測(cè)試工具的內(nèi)置機(jī)制。 轉(zhuǎn)變的風(fēng)正在吹向我們,而MicroPython可能會(huì)成為你下一次構(gòu)建產(chǎn)品的編程語言。這節(jié)課,我們來看一下如何用MicroPython開發(fā)產(chǎn)品。參加者不會(huì)參加這門課程,并詳細(xì)了解他們要在下一次產(chǎn)品中使用MicroPython。 其中有趣的是,這些語言特性讓開發(fā)團(tuán)隊(duì)中的每一個(gè)成員都能成為程序員!MicroPython提供了一系列的庫,用來控制低層的微處理器的功能來減少?gòu)?fù)雜性。舉例來說,硬件工程師可能對(duì)微處理器(C)的工作原理一無所知,開發(fā)高級(jí)腳本,可以通過控制GPIO測(cè)試電路板,甚至與I2C設(shè)備進(jìn)行通信。用C語言開發(fā)I2C驅(qū)動(dòng)可能是很復(fù)雜的,但是MicroPython僅僅需要下面幾行代碼就可以創(chuàng)建一個(gè)I2C對(duì)象并把數(shù)據(jù)發(fā)送給依賴設(shè)備!所有處理I2C的基本工作都由MicroPython庫來完成,這極大地簡(jiǎn)化了開發(fā)。(看一下我在C中使用的一個(gè)I2C驅(qū)動(dòng)程序顯示了數(shù)千行代碼,讓它成為一種非常強(qiáng)大的實(shí)現(xiàn),并且在完成基本工作之后,可以使用總線進(jìn)行交互)。 當(dāng)開發(fā)一個(gè)MicroPython的產(chǎn)品的時(shí)候,開發(fā)者有一些關(guān)鍵的因素需要考慮。在開始時(shí),開發(fā)人員需要考慮如何保護(hù)應(yīng)用程序代碼。MicroPython允許開發(fā)者加載Python腳本,或者將其編譯成字節(jié)碼,并將其放在a.mpy模塊中。這種方法的問題是,只要能訪問MicroPython文件系統(tǒng),就能方便地獲取應(yīng)用程序代碼,而且易于實(shí)現(xiàn)。bytecode的確讓它有點(diǎn)難,但是把字節(jié)碼轉(zhuǎn)換回可讀的代碼并不困難。開發(fā)者需要考慮他們對(duì)系統(tǒng)安全的需求,并且可能會(huì)采取其他措施來保護(hù)知識(shí)產(chǎn)權(quán)。 下一步,開發(fā)者需要考慮在出現(xiàn)問題時(shí)如何恢復(fù)系統(tǒng)。依據(jù)微處理器的選擇,其應(yīng)用程序代碼可能位于MCU內(nèi)部,或者位于外部存儲(chǔ)裝置(例如SD卡)。在電力循環(huán)或欠壓情況下,文件系統(tǒng)的功能并不強(qiáng)。MicroPython會(huì)在文件系統(tǒng)被破壞的情況下通過將默認(rèn)鏡像復(fù)制回文件系統(tǒng)來恢復(fù)。開發(fā)者需要確保他們的默認(rèn)代碼被集成到內(nèi)核版本,這樣當(dāng)問題發(fā)生時(shí),至少可以把它恢復(fù)到出廠默認(rèn)值,這樣,你就可以從設(shè)備上其他的內(nèi)存位置恢復(fù)更新。 最終,開發(fā)者可能想要確保他們擁有多種可用的內(nèi)存設(shè)備。全新旗艦MicroPython開發(fā)板,pyboardD系列,包括兩個(gè)2MB的獨(dú)立SPI內(nèi)存設(shè)備。一種是用來儲(chǔ)存應(yīng)用程式碼,另一種是儲(chǔ)存資料。產(chǎn)品系統(tǒng)應(yīng)執(zhí)行類似的操作,甚至保持固件備份副本,這樣當(dāng)問題發(fā)生時(shí),應(yīng)用程序可以恢復(fù),同時(shí)不會(huì)給用戶造成任何問題。 MicroPython的產(chǎn)品設(shè)計(jì)聽起來很有意思,有誰真的在開發(fā)商業(yè)產(chǎn)品呢?就我所知,MicroPython已經(jīng)在很多產(chǎn)品中使用了,毫無疑問,我不知道更多。舉例來說,MicroPython已經(jīng)被用在小衛(wèi)星上,用于電子動(dòng)力和數(shù)據(jù)采集系統(tǒng)(有些是我自己自己參加的)。歐洲航天局已將MicroPython探測(cè)用于大型衛(wèi)星系統(tǒng)。MicroPython也被廣泛使用在流行的OpenMV模塊中,開發(fā)者可以創(chuàng)建機(jī)器視覺應(yīng)用程序。這個(gè)模塊運(yùn)行著MicroPython,讓開發(fā)者可以通過IDE交互的方式創(chuàng)建腳本,然后下載到這個(gè)模塊。開發(fā)者甚至可以對(duì)機(jī)器學(xué)習(xí)模型進(jìn)行培訓(xùn),并把它轉(zhuǎn)換成OpenMV模塊運(yùn)行!它說明MicroPython可以用來運(yùn)行簡(jiǎn)單的算法或者轉(zhuǎn)換某些I/O. 用MicroPython構(gòu)建嵌入式產(chǎn)品不能滿足C/C++等每個(gè)開發(fā)團(tuán)隊(duì)的需要,但是它為開發(fā)者提供了一種有趣的快速原型設(shè)計(jì)或者商業(yè)產(chǎn)品開發(fā)的解決方案。這其中肯定有一些挑戰(zhàn),比如保護(hù)基于MicroPython的系統(tǒng)和確定的行為。通過合適的應(yīng)用設(shè)計(jì),這些問題可以在事先解決。MicroPython的易用性以及Python的流行,使用MicroPython構(gòu)建嵌入式系統(tǒng)成為一種很有意義的機(jī)會(huì)。 |
|